diff --git "a/01-poe-dataset-creation.ipynb" "b/01-poe-dataset-creation.ipynb"
--- "a/01-poe-dataset-creation.ipynb"
+++ "b/01-poe-dataset-creation.ipynb"
@@ -51,7 +51,7 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "e5eac788b31c41f09c2e95ef695b63b8",
+ "model_id": "a634122378754bd58b901f98904286a5",
"version_major": 2,
"version_minor": 0
},
@@ -1549,31 +1549,106 @@
{
"cell_type": "code",
"execution_count": 23,
- "id": "e60d1ea0-d717-47ed-b5cf-97c32b53544e",
+ "id": "7903b9e7-36ee-463a-be38-06ee2614be1d",
"metadata": {},
"outputs": [
{
- "ename": "NameError",
- "evalue": "name 'json_str' is not defined",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
- "Cell \u001b[0;32mIn[23], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mjson_str\u001b[49m\n",
- "\u001b[0;31mNameError\u001b[0m: name 'json_str' is not defined"
- ]
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\t
\n",
+ "\t\t\n",
+ "\t\t\n",
+ "\t\n",
+ "\t\n",
+ "\t\t\n",
+ " import json\n",
+ " import gradio as gr\n",
+ " import pandas as pd\n",
+ " import base64\n",
+ "\n",
+ " encoded_data = \"eyJjb252ZXJzYXRpb25fUkZBX2dwdDNfNSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJhKSBTZWNvbmRzIGFuZCBtaW51dGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyB0aW1lIGludGVydmFscy4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgdmFyaW91cyBwdXJwb3NlcyBzdWNoIGFzIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGFuZCB3ZWF0aGVyIGZvcmVjYXN0aW5nLCBidXQgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgdGltZSBpbnRlcnZhbHMuXG5cbmIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2U6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIGVhcnRocXVha2VzLiBFYXJ0aHF1YWtlIHByZWRpY3Rpb24gaXMgYSBjb21wbGV4IHByb2Nlc3MgdGhhdCBpbnZvbHZlcyBzZWlzbW9sb2d5IGFuZCBvdGhlciBzY2llbnRpZmljIG1ldGhvZHMsIGJ1dCBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3Qgb25lIG9mIHRoZW0uXG5cbmQpIDcwLTc1IGRlZ3JlZXMgRmFocmVuaGVpdDogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3Rpbmcgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZXMuXG5cbmUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFRoaXMgb3B0aW9uIGlzIHRvbyB2YWd1ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgY29ycmVjdCBvciBub3QuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIHRvIG1vbml0b3IgY2hhbmdlcyBpbiB2YXJpb3VzIGVudmlyb25tZW50YWwgZmFjdG9ycywgYnV0IGl0IGlzIG5vdCB1c2VkIHNwZWNpZmljYWxseSBmb3IgcHJlZGljdGluZyByYXBpZCBjaGFuZ2VzLlxuXG5mKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0czogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gc2F0ZWxsaXRlIHRlY2hub2xvZ3kgb3IgYW55IHR5cGUgb2YgcHJlZGljdGlvbi5cblxuZykgU25vdywgaWNlLCBhbmQgcm9jazogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIHNwZWNpZmljIGFuZCBkb2VzIG5vdCBjb3ZlciB0aGUgYnJvYWQgcmFuZ2Ugb2YgcHJlZGljdGlvbnMgdGhhdCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCBmb3IuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIHRvIG1vbml0b3Igc25vdywgaWNlLCBhbmQgcm9jayBmb3JtYXRpb25zLCBpdCBpcyBub3QgdXNlZCBleGNsdXNpdmVseSBmb3IgdGhpcyBwdXJwb3NlLlxuXG5oKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIENlbHNpdXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHRlbXBlcmF0dXJlIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSB0ZW1wZXJhdHVyZSBkYXRhLCBpdCBpcyBub3QgdXNlZCBleGNsdXNpdmVseSBmb3IgcHJlZGljdGluZyB0ZW1wZXJhdHVyZXMgd2l0aGluIGEgc3BlY2lmaWMgcmFuZ2UuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIHdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXksIGFzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIGNvbW1vbmx5IHVzZWQgZm9yIHdlYXRoZXIgZm9yZWNhc3RpbmcgYW5kIHByZWRpY3RpbmcgZGFpbHkgd2VhdGhlciBjb25kaXRpb25zLiIsICJmaW5hbF9hbnN3ZXIiOiAiYyJ9fV0sICIxIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGlycmFkaWF0aW5nIGZvb2QgZG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFJlbGlldmUgcGFpbiAoYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzIChjKSBJbXByb3ZlcyBmb29kIHNhZmV0eSAoZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYSAoZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGUgKGYpIENoZW1pY2FsIGNoYW5nZXMgKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZCAoaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIoYSkgUmVsaWV2ZSBwYWluOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCByZWxpZXZpbmcgcGFpbi4gSXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC4gSXQgaXMgbm90IGEgcGFpbiByZWxpZXZlci5cblxuKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50czogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGVuaGFuY2UgdGhlIGZvb2QncyBudXRyaWVudHMuIEluIGZhY3QsIHNvbWUgc3R1ZGllcyBoYXZlIHNob3duIHRoYXQgaXJyYWRpYXRpb24gY2FuIGNhdXNlIGEgc2xpZ2h0IGxvc3Mgb2YgY2VydGFpbiB2aXRhbWlucyBpbiBmb29kLiBIb3dldmVyLCB0aGUgbG9zcyBpcyBub3Qgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIGFmZmVjdCB0aGUgb3ZlcmFsbCBudXRyaXRpb25hbCB2YWx1ZSBvZiB0aGUgZm9vZC5cblxuKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWE6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBhY3R1YWxseSBraWxscyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuIEl0IGRvZXMgbm90IGFsbG93IHRoZSBncm93dGggb2YgYmFjdGVyaWEuXG5cbihlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGNhbiBhY3R1YWxseSBoZWxwIHJlZHVjZSBmb29kIHdhc3RlLiBCeSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMsIGlycmFkaWF0aW9uIGNhbiBleHRlbmQgdGhlIHNoZWxmIGxpZmUgb2YgZm9vZCwgd2hpY2ggbWVhbnMgbGVzcyBmb29kIGlzIHdhc3RlZC5cblxuKGYpIENoZW1pY2FsIGNoYW5nZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBjYW4gY2F1c2Ugc29tZSBjaGVtaWNhbCBjaGFuZ2VzIGluIHRoZSBmb29kLCBidXQgdGhlc2UgY2hhbmdlcyBhcmUgbm90IGhhcm1mdWwgdG8gaHVtYW4gaGVhbHRoLiBJbiBmYWN0LCB0aGUgV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgdGhlIFUuUy4gRm9vZCBhbmQgRHJ1ZyBBZG1pbmlzdHJhdGlvbiwgYW5kIG90aGVyIG9yZ2FuaXphdGlvbnMgaGF2ZSBkZXRlcm1pbmVkIHRoYXQgaXJyYWRpYXRlZCBmb29kIGlzIHNhZmUgdG8gZWF0LlxuXG4oZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgZG9lcyBub3QgZ2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkLiBJdCBpcyBhIHByb2Nlc3Mgb2YgZXhwb3NpbmcgZm9vZCB0byBpb25pemluZyByYWRpYXRpb24gdG8ga2lsbCBiYWN0ZXJpYSwgdmlydXNlcywgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLlxuXG4oaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGVkIGZvb2QgaXMgbm90IGEgbWFqb3IgdGhyZWF0IHRvIGhlYWx0aC4gQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZSBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uLCB0aGUgVS5TLiBGb29kIGFuZCBEcnVnIEFkbWluaXN0cmF0aW9uLCBhbmQgb3RoZXIgb3JnYW5pemF0aW9ucyBoYXZlIGRldGVybWluZWQgdGhhdCBpcnJhZGlhdGVkIGZvb2QgaXMgc2FmZSB0byBlYXQuIEluIGZhY3QsIGlycmFkaWF0aW9uIGNhbiBoZWxwIHJlZHVjZSB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzcyBieSBraWxsaW5nIGJhY3RlcmlhIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC4iLCAiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogImIpIEV4Zm9saWF0aW9uOiBFeGZvbGlhdGlvbiBpcyB0aGUgcHJvY2VzcyBvZiBzaGVkZGluZyBkZWFkIHNraW4gY2VsbHMgZnJvbSB0aGUgc3VyZmFjZSBvZiB0aGUgc2tpbi4gV2hpbGUgdGhpcyBpcyBhbiBpbXBvcnRhbnQgcHJvY2VzcyBmb3IgbWFpbnRhaW5pbmcgaGVhbHRoeSBza2luLCBpdCBkb2VzIG5vdCBwcm90ZWN0IHRoZSBza2luLlxuXG5jKSBSZXNpc3RhbmNlOiBSZXNpc3RhbmNlIGlzIGEgdmFndWUgdGVybSBhbmQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBwcm90ZWN0cyB0aGUgc2tpbi5cblxuZCkgTGF5ZXJzIG9mIGZhdDogV2hpbGUgbGF5ZXJzIG9mIGZhdCBjYW4gcHJvdmlkZSBpbnN1bGF0aW9uIGFuZCBjdXNoaW9uaW5nIGZvciB0aGUgc2tpbiwgdGhleSBkbyBub3QgZGlyZWN0bHkgcHJvdGVjdCB0aGUgc2tpbi5cblxuZSkgRXZhcG9yYXRpb246IEV2YXBvcmF0aW9uIGlzIGEgcHJvY2VzcyBieSB3aGljaCBhIGxpcXVpZCB0dXJucyBpbnRvIGEgZ2FzLiBJdCBkb2VzIG5vdCBwcm90ZWN0IHRoZSBza2luLlxuXG5mKSBBIGN1dGljbGU6IEEgY3V0aWNsZSBpcyBhIHByb3RlY3RpdmUgbGF5ZXIgdGhhdCBjb3ZlcnMgdGhlIHN1cmZhY2Ugb2Ygc29tZSBvcmdhbmlzbXMsIHN1Y2ggYXMgcGxhbnRzIGFuZCBpbnNlY3RzLiBIb3dldmVyLCBtYW1tYWxzIGRvIG5vdCBoYXZlIGEgY3V0aWNsZS5cblxuZykgU2Vuc29yeSBuZXVyb25zOiBTZW5zb3J5IG5ldXJvbnMgYXJlIG5lcnZlIGNlbGxzIHRoYXQgdHJhbnNtaXQgc2Vuc29yeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBib2R5IHRvIHRoZSBicmFpbi4gV2hpbGUgdGhleSBwbGF5IGFuIGltcG9ydGFudCByb2xlIGluIHRoZSBuZXJ2b3VzIHN5c3RlbSwgdGhleSBkbyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cblxuaCkgRnVyIGFuZCBmYXQ6IFRoaXMgaXMgYSBjb3JyZWN0IGFuc3dlci4gRnVyIGFuZCBmYXQgcHJvdmlkZSBpbnN1bGF0aW9uIGFuZCBwcm90ZWN0aW9uIGZvciB0aGUgc2tpbi4gSG93ZXZlciwgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSBhc2tzIHdoYXQgcHJvdGVjdHMgdGhlIHNraW4sIGFuZCBmaWJlciBmb2xsaWNsZXMgYXJlIHRoZSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgc2tpbiB0aGF0IHByb3ZpZGUgdGhlIG1vc3QgZGlyZWN0IHByb3RlY3Rpb24uIiwgImZpbmFsX2Fuc3dlciI6ICJhIn19XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJhKSBEaWVzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IGRpZSB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBXaGlsZSBpdCBtYXkgYmUgYSB0cmF1bWF0aWMgZXhwZXJpZW5jZSBmb3IgdGhlIGVhcnRod29ybSwgdGhleSBhcmUgYWJsZSB0byByZWdlbmVyYXRlIHRoZSBsb3N0IHNlZ21lbnQuXG5cbmMpIFJlcHJvZHVjZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3QgcmVwcm9kdWNlIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFJlcHJvZHVjdGlvbiBpbiBlYXJ0aHdvcm1zIGludm9sdmVzIHRoZSBleGNoYW5nZSBvZiBzcGVybSBiZXR3ZWVuIHR3byBpbmRpdmlkdWFscywgYW5kIGRvZXMgbm90IGludm9sdmUgdGhlIGxvc3Mgb2Ygc2VnbWVudHMuXG5cbmQpIFNlZGltZW50OiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gU2VkaW1lbnQgcmVmZXJzIHRvIHRoZSBtYXRlcmlhbCB0aGF0IHNldHRsZXMgYXQgdGhlIGJvdHRvbSBvZiBhIGJvZHkgb2Ygd2F0ZXIgb3Igb3RoZXIgbGlxdWlkLlxuXG5lKSBSb290IGdyb3d0aDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFJvb3QgZ3Jvd3RoIHJlZmVycyB0byB0aGUgZ3Jvd3RoIG9mIHJvb3RzIGluIHBsYW50cywgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3Jtcy5cblxuZikgTWlncmF0ZTogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIE1pZ3JhdGlvbiByZWZlcnMgdG8gdGhlIG1vdmVtZW50IG9mIGFuaW1hbHMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciwgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3JtcyByZWdlbmVyYXRpbmcgbG9zdCBzZWdtZW50cy5cblxuZykgU3RvcHMgZ3Jvd2luZzogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCBzdG9wIGdyb3dpbmcgd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gV2hpbGUgdGhlIGxvc3Qgc2VnbWVudCBtYXkgdGFrZSBzb21lIHRpbWUgdG8gcmVnZW5lcmF0ZSwgdGhlIGVhcnRod29ybSB3aWxsIGNvbnRpbnVlIHRvIGdyb3cgYW5kIG1vdmUuXG5cbmgpIFJvb3RzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbi4gUm9vdHMgcmVmZXIgdG8gdGhlIHBhcnQgb2YgYSBwbGFudCB0aGF0IHR5cGljYWxseSBsaWVzIGJlbG93IHRoZSBzdXJmYWNlIG9mIHRoZSBzb2lsLCBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBlYXJ0aHdvcm1zIHJlZ2VuZXJhdGluZyBsb3N0IHNlZ21lbnRzLiIsICJmaW5hbF9hbnN3ZXIiOiAiYiJ9fV0sICI0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRoZSBlbnZpcm9ubWVudCAoYikgUmFpbnN0b3JtcyAoYykgRGVzdHJ1Y3Rpb24gKGQpIFZpc2liaWxpdHkgKGUpIFRodW5kZXIgKGYpIFRoZSBzdW4gKGcpIFRoZSB3ZWF0aGVyLiAoaCkgVHJhbnNwb3J0YXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYikgUmFpbnN0b3JtczogTGlnaHRuaW5nIGlzIGFjdHVhbGx5IGEgbmF0dXJhbCBwaGVub21lbm9uIHRoYXQgb2NjdXJzIGR1cmluZyByYWluc3Rvcm1zLiBJdCBpcyBub3QgYmFkIGZvciByYWluc3Rvcm1zLCBidXQgcmF0aGVyIGEgcGFydCBvZiB0aGUgc3Rvcm0uXG5cbmMpIERlc3RydWN0aW9uOiBXaGlsZSBsaWdodG5pbmcgY2FuIGNhdXNlIGRlc3RydWN0aW9uLCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yLCBub3Qgd2hhdCBpdCBjYW4gY2F1c2UuXG5cbmQpIFZpc2liaWxpdHk6IExpZ2h0bmluZyBjYW4gYWN0dWFsbHkgaW1wcm92ZSB2aXNpYmlsaXR5IGR1cmluZyBhIHN0b3JtIGJ5IGlsbHVtaW5hdGluZyB0aGUgc3Vycm91bmRpbmdzLiBJdCBpcyBub3QgYmFkIGZvciB2aXNpYmlsaXR5LlxuXG5lKSBUaHVuZGVyOiBUaHVuZGVyIGlzIGFjdHVhbGx5IGNhdXNlZCBieSBsaWdodG5pbmcsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRodW5kZXIuXG5cbmYpIFRoZSBzdW46IExpZ2h0bmluZyBpcyBub3QgcmVsYXRlZCB0byB0aGUgc3VuLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aGUgc3VuLlxuXG5nKSBUaGUgd2VhdGhlcjogTGlnaHRuaW5nIGlzIGEgcGFydCBvZiB0aGUgd2VhdGhlciwgc28gaXQgaXMgbm90IGJhZCBmb3IgdGhlIHdlYXRoZXIuXG5cbmgpIFRyYW5zcG9ydGF0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGRhbmdlcm91cyBmb3IgdHJhbnNwb3J0YXRpb24sIGJ1dCB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIHdoYXQgbGlnaHRuaW5nIGNhbiBiZSBiYWQgZm9yIGluIGdlbmVyYWwsIG5vdCBzcGVjaWZpY2FsbHkgZm9yIHRyYW5zcG9ydGF0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSBvbmx5IGxvZ2ljYWwgYW5zd2VyIGlzIGEpIHRoZSBlbnZpcm9ubWVudC4gTGlnaHRuaW5nIGNhbiBzdGFydCB3aWxkZmlyZXMsIGRhbWFnZSB0cmVlcyBhbmQgb3RoZXIgdmVnZXRhdGlvbiwgYW5kIGNhdXNlIHNvaWwgZXJvc2lvbiwgd2hpY2ggY2FuIGFsbCBoYXZlIG5lZ2F0aXZlIGltcGFjdHMgb24gdGhlIGVudmlyb25tZW50LiIsICJmaW5hbF9hbnN3ZXIiOiAiYSJ9fV0sICI1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgd2hhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU291bHMgKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgKGMpIE9yZ2FuaXNtcyAoZCkgUGxhbnQgb3IgYW5pbWFsIChlKSBNYWxlcyBhbmQgZmVtYWxlcyAoZikgRGVmb3Jlc3RhdGlvbiAoZykgUmVpbmNhcm5hdGlvbiAoaCkgSW1wb3J0YW50IGhhYml0YXRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogImEpIFNvdWxzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIHNvdWxzIGFyZSBub3QgcGh5c2ljYWwgZW50aXRpZXMgdGhhdCBjYW4gbGVhdmUgZXZpZGVuY2Ugb2YgdGhlaXIgcHJlc2VuY2UgaW4gYSBwbGFjZS4gU291bHMgYXJlIGJlbGlldmVkIHRvIGJlIHNwaXJpdHVhbCBlbnRpdGllcyB0aGF0IGFyZSBub3QgYm91bmQgYnkgcGh5c2ljYWwgbGF3cy5cblxuYikgQW5pbWFscyB3aXRoIGJhY2tib25lczogVGhpcyBvcHRpb24gaXMgbm90IGNvbXBsZXRlbHkgY29ycmVjdCBiZWNhdXNlIG5vdCBhbGwgYW5pbWFscyBoYXZlIGJhY2tib25lcy4gSW52ZXJ0ZWJyYXRlcywgc3VjaCBhcyBpbnNlY3RzIGFuZCBtb2xsdXNrcywgZG8gbm90IGhhdmUgYmFja2JvbmVzLiBUaGVyZWZvcmUsIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgaWYgYW5pbWFscyB3aXRoIGJhY2tib25lcyBsaXZlZCBpbiBhIHBsYWNlLlxuXG5jKSBPcmdhbmlzbXM6IFRoaXMgb3B0aW9uIGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24uIEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IGFueSB0eXBlIG9mIG9yZ2FuaXNtIG9uY2UgbGl2ZWQgaW4gYSBwbGFjZSwgaW5jbHVkaW5nIGJhY3RlcmlhLCBmdW5naSwgYW5kIHByb3Rpc3RzLlxuXG5kKSBQbGFudCBvciBhbmltYWw6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBzaG93IHRoYXQgYSBwbGFudCBvciBhbmltYWwgb25jZSBsaXZlZCBpbiBhIHBsYWNlLiBGb3NzaWxzLCBmb3IgZXhhbXBsZSwgcHJvdmlkZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgYW5kIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IHR5cGVzIG9mIHBsYW50cyBhbmQgYW5pbWFscyBsaXZlZCBpbiBhIHBhcnRpY3VsYXIgYXJlYS5cblxuZSkgTWFsZXMgYW5kIGZlbWFsZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbm5vdCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V4IG9mIHRoZSBvcmdhbmlzbXMgdGhhdCBvbmNlIGxpdmVkIGluIGEgcGxhY2UuIEZvc3NpbHMgZG8gbm90IHR5cGljYWxseSBwcmVzZXJ2ZSBzZXh1YWwgY2hhcmFjdGVyaXN0aWNzLlxuXG5mKSBEZWZvcmVzdGF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGRlZm9yZXN0YXRpb24gaXMgYSBodW1hbiBhY3Rpdml0eSB0aGF0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHBhc3QgbGlmZSBpbiBhIHBsYWNlLlxuXG5nKSBSZWluY2FybmF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIHJlaW5jYXJuYXRpb24gaXMgYSByZWxpZ2lvdXMgb3IgcGhpbG9zb3BoaWNhbCBjb25jZXB0IHRoYXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc2NpZW50aWZpYyBldmlkZW5jZSBhYm91dCBwYXN0IGxpZmUgaW4gYSBwbGFjZS5cblxuaCkgSW1wb3J0YW50IGhhYml0YXRzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGltcG9ydGFudCBoYWJpdGF0cy4gV2hpbGUgY2VydGFpbiBhcmVhcyBtYXkgaGF2ZSBiZWVuIGltcG9ydGFudCBoYWJpdGF0cyBpbiB0aGUgcGFzdCwgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGNhbiBhbHNvIGJlIGZvdW5kIGluIGFyZWFzIHRoYXQgd2VyZSBub3QgaW1wb3J0YW50IGhhYml0YXRzLiIsICJmaW5hbF9hbnN3ZXIiOiAiZCJ9fV0sICI2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogSG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24sIG9yIGluaGVyaXRlZCwgaXMgZm91bmQgaW4gaW5mb3JtYXRpb24gaW4gYW4gb3JnYW5pc20ncyB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBTcGVjaWVzIChiKSBNZXNzZW5nZXJzIChjKSBIYWlyIGZvbGxpY2xlcyAoZCkgQ3ljbGVzIChlKSBTa2luIGNlbGxzIChmKSBFbmRvY3JpbmUgc3lzdGVtIChnKSBDaHJvbW9zb21lcyAoaCkgUHJvdGVpbnMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiKGEpIFNwZWNpZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNwZWNpZXMgcmVmZXIgdG8gYSBncm91cCBvZiBvcmdhbmlzbXMgdGhhdCBzaGFyZSBzaW1pbGFyIGNoYXJhY3RlcmlzdGljcyBhbmQgY2FuIGludGVyYnJlZWQgdG8gcHJvZHVjZSBmZXJ0aWxlIG9mZnNwcmluZy4gSXQgZG9lcyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cblxuKGIpIE1lc3NlbmdlcnM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIG1lc3NlbmdlcnMgcmVmZXIgdG8gbW9sZWN1bGVzIHN1Y2ggYXMgaG9ybW9uZXMgYW5kIG5ldXJvdHJhbnNtaXR0ZXJzIHRoYXQgdHJhbnNtaXQgc2lnbmFscyBiZXR3ZWVuIGNlbGxzLiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXG5cbihjKSBIYWlyIGZvbGxpY2xlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaGFpciBmb2xsaWNsZXMgYXJlIHN0cnVjdHVyZXMgaW4gdGhlIHNraW4gdGhhdCBwcm9kdWNlIGhhaXIuIFRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXG5cbihkKSBDeWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGN5Y2xlcyByZWZlciB0byByZWN1cnJpbmcgZXZlbnRzIG9yIHByb2Nlc3NlcyBzdWNoIGFzIHRoZSBtZW5zdHJ1YWwgY3ljbGUgb3IgdGhlIHdhdGVyIGN5Y2xlLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxuXG4oZSkgU2tpbiBjZWxsczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2tpbiBjZWxscyBhcmUgY2VsbHMgdGhhdCBtYWtlIHVwIHRoZSBvdXRlciBsYXllciBvZiB0aGUgc2tpbi4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cblxuKGYpIEVuZG9jcmluZSBzeXN0ZW06IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHRoZSBlbmRvY3JpbmUgc3lzdGVtIGlzIGEgc3lzdGVtIG9mIGdsYW5kcyB0aGF0IHByb2R1Y2UgYW5kIHNlY3JldGUgaG9ybW9uZXMuIFdoaWxlIGhvcm1vbmVzIHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXG5cbihnKSBDaHJvbW9zb21lczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIENocm9tb3NvbWVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBudWNsZXVzIG9mIGEgY2VsbCB0aGF0IGNvbnRhaW4gZ2VuZXRpYyBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBETkEuIFRyYWl0cyBhcmUgcGFzc2VkIGRvd24gZnJvbSBvbmUgZ2VuZXJhdGlvbiB0byB0aGUgbmV4dCB0aHJvdWdoIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYW4gb3JnYW5pc20ncyBjaHJvbW9zb21lcy5cblxuKGgpIFByb3RlaW5zOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBwcm90ZWlucyBhcmUgbW9sZWN1bGVzIG1hZGUgdXAgb2YgYW1pbm8gYWNpZHMgdGhhdCBwZXJmb3JtIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBib2R5LiBXaGlsZSB0aGV5IHBsYXkgYSByb2xlIGluIHZhcmlvdXMgYmlvbG9naWNhbCBwcm9jZXNzZXMsIHRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uIiwgImZpbmFsX2Fuc3dlciI6ICJnIn19XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIoYSkgR3Jhc3M6IFdoaWxlIGdyYXNzIGlzIGEgdHlwZSBvZiBwbGFudCwgaXQgaXMgbm90IHRoZSBvbmx5IHR5cGUgb2YgcGxhbnQuIEFkZGl0aW9uYWxseSwgdGhlIHF1ZXN0aW9uIHNwZWNpZmljYWxseSBhc2tzIGFib3V0ICdtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24sJyBhbmQgZ3Jhc3MgaXMgbm90IG5lY2Vzc2FyaWx5IGEgbWFqb3IgcHJvZHVjZXIgaW4gdGhlc2UgYXJlYXMuXG5cbihiKSBBbmltYWxzOiBBbmltYWxzIGFyZSBub3QgcHJvZHVjZXJzLCB0aGV5IGFyZSBjb25zdW1lcnMuIFRoZXkgZG8gbm90IHByb2R1Y2UgZW5lcmd5IGZyb20gc3VubGlnaHQsIHdhdGVyLCBhbmQgY2FyYm9uIGRpb3hpZGUgbGlrZSBwbGFudHMgZG8uXG5cbihjKSBBcHBsZXM6IEFwcGxlcyBhcmUgYSB0eXBlIG9mIGZydWl0IHRoYXQgZ3JvdyBvbiB0cmVlcywgYnV0IHRoZXkgYXJlIG5vdCBwcm9kdWNlcnMgaW4gYW5kIG9mIHRoZW1zZWx2ZXMuIFRoZSB0cmVlcyB0aGF0IHByb2R1Y2UgYXBwbGVzIGFyZSB0aGUgcHJvZHVjZXJzLlxuXG4oZCkgUG90YXRvZXM6IFBvdGF0b2VzIGFyZSBhIHR5cGUgb2YgdmVnZXRhYmxlIHRoYXQgZ3JvdyB1bmRlcmdyb3VuZCwgYnV0IHRoZXkgYXJlIG5vdCBwcm9kdWNlcnMgaW4gYW5kIG9mIHRoZW1zZWx2ZXMuIFRoZSBwbGFudHMgdGhhdCBwcm9kdWNlIHBvdGF0b2VzIGFyZSB0aGUgcHJvZHVjZXJzLlxuXG4oZSkgVHJlZXM6IFRyZWVzIGFyZSBhIHR5cGUgb2YgcGxhbnQgYW5kIGFyZSBpbmRlZWQgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLiBUaGV5IGFic29yYiBjYXJib24gZGlveGlkZSBhbmQgcmVsZWFzZSBveHlnZW4sIGFuZCB0aGV5IGFsc28gaGVscCByZWd1bGF0ZSB0aGUgdGVtcGVyYXR1cmUgYW5kIG1vaXN0dXJlIGxldmVscyBpbiB0aGVpciBlbnZpcm9ubWVudC5cblxuKGcpIEZ1bmdpOiBGdW5naSBhcmUgbm90IHByb2R1Y2VycywgdGhleSBhcmUgZGVjb21wb3NlcnMuIFRoZXkgYnJlYWsgZG93biBkZWFkIG9yZ2FuaWMgbWF0dGVyIGFuZCByZWN5Y2xlIG51dHJpZW50cyBiYWNrIGludG8gdGhlIGVjb3N5c3RlbS5cblxuKGgpIEZpZWxkczogRmllbGRzIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBwcm9kdWNlcnMuIFRoZXkgYXJlIHNpbXBseSBhcmVhcyBvZiBsYW5kIHVzZWQgZm9yIGdyb3dpbmcgY3JvcHMgb3IgcmFpc2luZyBsaXZlc3RvY2suXG5cbkluIHN1bW1hcnksIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZikgcGxhbnRzLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCB1c2UgcGhvdG9zeW50aGVzaXMgdG8gcHJvZHVjZSBlbmVyZ3kgZnJvbSBzdW5saWdodCwgd2F0ZXIsIGFuZCBjYXJib24gZGlveGlkZS4iLCAiZmluYWxfYW5zd2VyIjogImYifX1dLCAiOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGNoYW5nZSB2ZWdldGF0aW9uIGludG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNjYXJjZSByZXNvdXJjZXMgKGIpIEhhcm1mdWwgc3Vic3RhbmNlcyAoYykgU2NhcnMgKGQpIEZvc3NpbCBmdWVscyAoZSkgU2VkaW1lbnQgKGYpIFNvbWV0aGluZyB0byBtb3ZlIChnKSBNYWdpYyAoaCkgUGljbmljcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIoYSkgU2NhcmNlIHJlc291cmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2FyY2UgcmVzb3VyY2VzLiBTY2FyY2UgcmVzb3VyY2VzIGFyZSByZXNvdXJjZXMgdGhhdCBhcmUgbGltaXRlZCBpbiBhdmFpbGFiaWxpdHksIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgbGltaXRlZCByZXNvdXJjZS5cblxuKGIpIEhhcm1mdWwgc3Vic3RhbmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBoYXJtZnVsIHN1YnN0YW5jZXMuIEhhcm1mdWwgc3Vic3RhbmNlcyBhcmUgc3Vic3RhbmNlcyB0aGF0IGNhbiBjYXVzZSBoYXJtIG9yIGRhbWFnZSwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgaGFybWZ1bC5cblxuKGMpIFNjYXJzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNjYXJzLiBTY2FycyBhcmUgbWFya3MgbGVmdCBvbiB0aGUgc2tpbiBvciBvdGhlciB0aXNzdWUgYWZ0ZXIgYSB3b3VuZCBoYXMgaGVhbGVkLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBhIHdvdW5kLlxuXG4oZSkgU2VkaW1lbnQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2VkaW1lbnQuIFNlZGltZW50IGlzIGEgbmF0dXJhbGx5IG9jY3VycmluZyBtYXRlcmlhbCB0aGF0IGlzIGJyb2tlbiBkb3duIGJ5IHdlYXRoZXJpbmcgYW5kIGVyb3Npb24sIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIHNlZGltZW50LlxuXG4oZikgU29tZXRoaW5nIHRvIG1vdmU6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc29tZXRoaW5nIHRvIG1vdmUuIFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9wdGlvbnMuXG5cbihnKSBNYWdpYzogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBtYWdpYy4gTWFnaWMgaXMgYSBzdXBlcm5hdHVyYWwgZm9yY2UgdGhhdCBpcyBub3QgYmFzZWQgb24gc2NpZW5jZSBvciByZWFzb24sIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIHN1cGVybmF0dXJhbC5cblxuKGgpIFBpY25pY3M6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gcGljbmljcy4gUGljbmljcyBhcmUgb3V0ZG9vciBtZWFscyBvciBzb2NpYWwgZ2F0aGVyaW5ncywgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSBzb2NpYWwgZ2F0aGVyaW5nLiIsICJmaW5hbF9hbnN3ZXIiOiAiZCJ9fV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYSkgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgdG8ga2VlcCB0aGVpciBib2R5IGhlYXQuIEFuaW1hbHMgaGF2ZSBkaWZmZXJlbnQgd2F5cyBvZiByZWd1bGF0aW5nIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUsIHN1Y2ggYXMgc3dlYXRpbmcsIHBhbnRpbmcsIG9yIGhpYmVybmF0aW9uLiBIb3dldmVyLCBpZiB0aGUgZW52aXJvbm1lbnQgYmVjb21lcyB0b28gZXh0cmVtZSwgYW5pbWFscyBtYXkgbW92ZSB0byBhIG1vcmUgc3VpdGFibGUgYXJlYS5cblxuYikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgdG8gcmV1c2UgbWF0ZXJpYWxzLiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxuXG5kKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGFyZSBib3JlZC4gQm9yZWRvbSBpcyBhIGh1bWFuIGVtb3Rpb24gYW5kIGFuaW1hbHMgZG8gbm90IGhhdmUgdGhlIHNhbWUgY2FwYWNpdHkgZm9yIGJvcmVkb20gYXMgaHVtYW5zIGRvLiBBbmltYWxzIG1vdmUgZm9yIHN1cnZpdmFsIHJlYXNvbnMgc3VjaCBhcyBmaW5kaW5nIGZvb2QsIHdhdGVyLCBvciBzaGVsdGVyLlxuXG5lKSBNYXJzaGVzIGFuZCBzd2FtcHMgYXJlIG5vdCBhIHJlYXNvbiBmb3IgYW5pbWFsIG1vdmVtZW50LiBNYXJzaGVzIGFuZCBzd2FtcHMgYXJlIHR5cGVzIG9mIGhhYml0YXRzIHdoZXJlIGFuaW1hbHMgbWF5IGxpdmUsIGJ1dCB0aGV5IGRvIG5vdCBjYXVzZSBhbmltYWxzIHRvIG1vdmUgdG8gYW5vdGhlciBhcmVhLlxuXG5mKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggbW9uZXkuIFRoaXMgb3B0aW9uIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBxdWVzdGlvbiBhbmQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhbmltYWwgbW92ZW1lbnQuXG5cbmcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIGlzIGEgd2VhdGhlciBwaGVub21lbm9uIGFuZCBkb2VzIG5vdCBjYXVzZSBhbmltYWxzIHRvIG1vdmUgdG8gYW5vdGhlciBhcmVhLlxuXG5oKSBBbmltYWxzIGRvIG5vdCBtb3ZlIHRvIGFub3RoZXIgYXJlYSBpZiB0aGV5IGhhdmUgdG9vIG11Y2ggZm9vZC4gQW5pbWFscyBtYXkgc3RvcmUgZm9vZCBmb3IgbGF0ZXIgdXNlLCBidXQgdGhleSBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGlmIGFuaW1hbHMgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEuIFRoaXMgaXMgYmVjYXVzZSBhbmltYWxzIG5lZWQgZm9vZCB0byBzdXJ2aXZlLCBhbmQgaWYgdGhleSBjYW5ub3QgZmluZCBmb29kIGluIHRoZWlyIGN1cnJlbnQgbG9jYXRpb24sIHRoZXkgd2lsbCBtb3ZlIHRvIGFub3RoZXIgYXJlYSB3aGVyZSBmb29kIGlzIGF2YWlsYWJsZS4iLCAiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMTAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEtpbmV0aWMgZW5lcmd5IChiKSBMb3VkIG5vaXNlcyAoYykgVmlicmF0aW5nIHdhdmVzIChkKSBBbiBvYmplY3QgaXMgc2VlbiAoZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneSAoZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkIChnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuIChoKSBIYXJtZnVsIHN1YnN0YW5jZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYSkgS2luZXRpYyBlbmVyZ3k6IEtpbmV0aWMgZW5lcmd5IGlzIHRoZSBlbmVyZ3kgb2YgbW90aW9uLiBXaGlsZSBhIGZpcmVjcmFja2VyIGRvZXMgcHJvZHVjZSBzb21lIG1vdGlvbiwgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IHRoYXQgaXQgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5iKSBMb3VkIG5vaXNlczogV2hpbGUgYSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2UgbG91ZCBub2lzZXMsIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGUgbG91ZCBub2lzZXMgYXJlIGEgcmVzdWx0IG9mIHRoZSB2aWJyYXRpbmcgd2F2ZXMgcHJvZHVjZWQgYnkgdGhlIGZpcmVjcmFja2VyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZCkgQW4gb2JqZWN0IGlzIHNlZW46IEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byB0aGUgYWJpbGl0eSB0byBzZWUgYW4gb2JqZWN0LiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb3B0aW9ucy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3k6IEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgaXMgYSBmb3JtIG9mIGVuZXJneSB0aGF0IGluY2x1ZGVzIHJhZGlvIHdhdmVzLCBtaWNyb3dhdmVzLCBpbmZyYXJlZCByYWRpYXRpb24sIHZpc2libGUgbGlnaHQsIHVsdHJhdmlvbGV0IHJhZGlhdGlvbiwgWC1yYXlzLCBhbmQgZ2FtbWEgcmF5cy4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIGVsZWN0cm9tYWduZXRpYyBlbmVyZ3kuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5mKSBEZW94eXJpYm9udWNsZWljIGFjaWQ6IERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSBpcyBhIG1vbGVjdWxlIHRoYXQgY2FycmllcyBnZW5ldGljIGluc3RydWN0aW9ucyBmb3IgdGhlIGRldmVsb3BtZW50LCBmdW5jdGlvbmluZywgZ3Jvd3RoLCBhbmQgcmVwcm9kdWN0aW9uIG9mIGFsbCBsaXZpbmcgdGhpbmdzLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gRE5BLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZykgSHlkcm9nZW4gYW5kIG94eWdlbjogSHlkcm9nZW4gYW5kIG94eWdlbiBhcmUgZWxlbWVudHMgdGhhdCBjYW4gY29tYmluZSB0byBmb3JtIHdhdGVyLiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gaHlkcm9nZW4gYW5kIG94eWdlbi4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmgpIEhhcm1mdWwgc3Vic3RhbmNlczogQSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2UgaGFybWZ1bCBzdWJzdGFuY2VzIHN1Y2ggYXMgc21va2UgYW5kIGNoZW1pY2FscywgYnV0IGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuYykgVmlicmF0aW5nIHdhdmVzOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHZpYnJhdGluZyB3YXZlcy4gV2hlbiB0aGUgY2hlbWljYWxzIGluc2lkZSBhIGZpcmVjcmFja2VyIHJlYWN0LCB0aGV5IHByb2R1Y2UgYSByYXBpZCByZWxlYXNlIG9mIGVuZXJneSBpbiB0aGUgZm9ybSBvZiBoZWF0IGFuZCBnYXMuIFRoaXMgZW5lcmd5IGNhdXNlcyB0aGUgZmlyZWNyYWNrZXIgdG8gZXhwbG9kZSwgcHJvZHVjaW5nIHZpYnJhdGluZyB3YXZlcyB0aGF0IHdlIGhlYXIgYXMgbG91ZCBub2lzZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC4iLCAiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMTEiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHRoZSByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXM/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIE1ham9yIGVmZmVjdHMgKGIpIFJlc3BpcmF0aW9uIChjKSBSb2xleCAoZCkgRGVuc2l0eSAoZSkgRGlwaHRoZXJpYSAoZikgQ2FuaXMgbHVwdXMgKGcpIFNraW4gY29sb3IgKGgpIERpZ2VzdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJhKSBNYWpvciBlZmZlY3RzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuICdNYWpvciBlZmZlY3RzJyBjb3VsZCByZWZlciB0byBhIHZhcmlldHkgb2YgdGhpbmdzLCBidXQgaXQgaXMgbm90IHNwZWNpZmljIGVub3VnaCB0byBiZSBhIGNvcnJlY3QgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24uXG5cbmIpIFJlc3BpcmF0aW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFJlc3BpcmF0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGV4Y2hhbmdlIG9mIGdhc2VzLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxuXG5jKSBSb2xleDogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSb2xleCBpcyBhIGJyYW5kIG9mIGx1eHVyeSB3YXRjaGVzIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGdlbmV0aWNzLlxuXG5kKSBEZW5zaXR5OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIERlbnNpdHkgaXMgYSBwaHlzaWNhbCBwcm9wZXJ0eSB0aGF0IGRlc2NyaWJlcyB0aGUgYW1vdW50IG9mIG1hc3MgaW4gYSBnaXZlbiB2b2x1bWUsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuXG5cbmUpIERpcGh0aGVyaWE6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlwaHRoZXJpYSBpcyBhIGJhY3RlcmlhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2Ugc2V2ZXJlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxuXG5mKSBDYW5pcyBsdXB1czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBDYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxuXG5nKSBTa2luIGNvbG9yOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBiZWNhdXNlIHNraW4gY29sb3IgaXMgYSB0cmFpdCB0aGF0IGlzIGRldGVybWluZWQgYnkgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIFRoZSBnZW5lcyB0aGF0IGNvbnRyb2wgc2tpbiBjb2xvciBwcm9kdWNlIGRpZmZlcmVudCBhbW91bnRzIG9mIG1lbGFuaW4sIHdoaWNoIGlzIGEgcGlnbWVudCB0aGF0IGdpdmVzIHNraW4gaXRzIGNvbG9yLiBUaGUgaW50ZXJhY3Rpb24gb2YgdGhlc2UgZ2VuZXMgY2FuIHJlc3VsdCBpbiBhIHdpZGUgcmFuZ2Ugb2Ygc2tpbiBjb2xvcnMsIGZyb20gdmVyeSBsaWdodCB0byB2ZXJ5IGRhcmsuXG5cbmgpIERpZ2VzdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEaWdlc3Rpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgdGhhdCBpbnZvbHZlcyB0aGUgYnJlYWtkb3duIG9mIGZvb2QgaW50byBzbWFsbGVyIG1vbGVjdWxlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy4iLCAiZmluYWxfYW5zd2VyIjogImcifX1dLCAiMTIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2hlZXAgKGIpIFNhbG1vbiAoYykgR3Jhc3NlcyAoZCkgQmF0cyAoZSkgQW5pbWFscyAoZikgU2hydWJzIChnKSBIdW1hbnMgKGgpIFRyZWVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogImIpIFNhbG1vbjogU2FsbW9uIGFyZSBhIHR5cGUgb2YgZmlzaCB0aGF0IGFyZSBzdHJpY3RseSBjYXJuaXZvcm91cyBhbmQgZmVlZCBvbiBvdGhlciBvcmdhbmlzbXMgc3VjaCBhcyBzbWFsbGVyIGZpc2gsIGNydXN0YWNlYW5zLCBhbmQgaW5zZWN0cy4gVGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXG5cbmMpIEdyYXNzZXM6IEdyYXNzZXMgYXJlIHByaW1hcnkgcHJvZHVjZXJzIGFuZCBhcmUgYXQgdGhlIGJhc2Ugb2YgdGhlIGZvb2QgY2hhaW4uIFRoZXkgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5kKSBCYXRzOiBCYXRzIGFyZSBpbnNlY3Rpdm9yZXMgb3IgZnJ1Z2l2b3JlcyBhbmQgZmVlZCBvbiBpbnNlY3RzIG9yIGZydWl0cyByZXNwZWN0aXZlbHkuIFRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5lKSBBbmltYWxzOiBUaGlzIG9wdGlvbiBpcyB0b28gYnJvYWQgYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uLiBJdCBpcyBpbmNvcnJlY3QgYmVjYXVzZSBub3QgYWxsIGFuaW1hbHMgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5mKSBTaHJ1YnM6IFNocnVicyBhcmUgYWxzbyBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5nKSBIdW1hbnM6IEh1bWFucyBhcmUgb21uaXZvcmVzIGFuZCBjYW4gY29uc3VtZSBib3RoIHBsYW50cyBhbmQgYW5pbWFscy4gSG93ZXZlciwgdGhleSBkbyBub3QgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwgYXMgdGhleSBjb25zdW1lIGVpdGhlciBwbGFudHMgb3IgYW5pbWFscyBhdCBhIHRpbWUuXG5cbmgpIFRyZWVzOiBUcmVlcyBhcmUgYWxzbyBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIG5vdCBjYXBhYmxlIG9mIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBzaGVlcCwgYXMgdGhleSBhcmUgaGVyYml2b3JlcyBhbmQgY2FuIGNvbnN1bWUgcGxhbnRzIGF0IG9uZSB0cm9waGljIGxldmVsIGFuZCB0aGVuIGJlIGNvbnN1bWVkIGJ5IGEgcHJlZGF0b3IgYXQgYSBoaWdoZXIgdHJvcGhpYyBsZXZlbC4iLCAiZmluYWxfYW5zd2VyIjogImEifX1dLCAiMTMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaG8gY2FuIHNoaXZlcj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmF0cyAoYikgU2lkZXdhbGtzIChjKSBIdW1hbnMgKGQpIEJlZXMgKGUpIEtvYWxhcyAoZikgTW91bnRhaW5zIChnKSBUcmVlcyAoaCkgUGVvcGxlIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogIkxldCdzIGdvIHRocm91Z2ggZWFjaCBvcHRpb24gYW5kIGV4cGxhaW4gd2h5IGl0IGlzIGluY29ycmVjdDpcblxuYSkgQmF0czogV2hpbGUgYmF0cyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5iKSBTaWRld2Fsa3M6IFNpZGV3YWxrcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3Qgc2hpdmVyLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5jKSBIdW1hbnM6IEh1bWFucyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cblxuZSkgS29hbGFzOiBLb2FsYXMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCBidXQgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXG5cbmYpIE1vdW50YWluczogTW91bnRhaW5zIGFyZSBub3QgbGl2aW5nIG9yZ2FuaXNtcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBzaGl2ZXIuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXG5cbmcpIFRyZWVzOiBUcmVlcyBhcmUgbm90IGNhcGFibGUgb2Ygc2hpdmVyaW5nIGFzIHRoZXkgZG8gbm90IGhhdmUgbXVzY2xlcy4gVGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cblxuaCkgUGVvcGxlOiBUaGlzIG9wdGlvbiBpcyB0aGUgc2FtZSBhcyBvcHRpb24gYy4gSHVtYW5zIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5kKSBIb25leSBiZWVzOiBIb25leSBiZWVzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZyB0byBnZW5lcmF0ZSBoZWF0IGFuZCBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlLiBUaGlzIG9wdGlvbiBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuXG5cbkluIGNvbmNsdXNpb24sIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBkKSBob25leSBiZWVzIGNhbiBzaGl2ZXIuIEl0IGlzIGltcG9ydGFudCB0byByZWFkIHRoZSBxdWVzdGlvbiBhbmQgb3B0aW9ucyBjYXJlZnVsbHkgYW5kIGVsaW1pbmF0ZSB0aGUgb3B0aW9ucyB0aGF0IGFyZSBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0uIiwgImZpbmFsX2Fuc3dlciI6ICJkIn19XSwgIjE0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgaXMgYW4gZXhhbXBsZSBvZiB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBMZWFybmluZyBiZWhhdmlvciAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24gKGUpIEJhZCBiZWhhdmlvciAoZikgTGVhcm5pbmcgbm90aGluZyAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvciAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogImIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBDb21wZXRpbmcgZm9yIHJlc291cmNlcyByZWZlcnMgdG8gYW5pbWFscyBjb21wZXRpbmcgZm9yIGxpbWl0ZWQgcmVzb3VyY2VzIHN1Y2ggYXMgZm9vZCwgd2F0ZXIsIG9yIHNoZWx0ZXIuIEh1bnRpbmcgYmVoYXZpb3IgaXMgbm90IHJlbGF0ZWQgdG8gcmVzb3VyY2UgY29tcGV0aXRpb24uXG5cbmMpIFdhcm0tYmxvb2RlZDogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBXYXJtLWJsb29kZWQgcmVmZXJzIHRvIGFuaW1hbHMgdGhhdCBjYW4gcmVndWxhdGUgdGhlaXIgYm9keSB0ZW1wZXJhdHVyZSBpbnRlcm5hbGx5LCBidXQgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZWlyIGJlaGF2aW9yLlxuXG5kKSBDb21wZXRpdGlvbjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gQ29tcGV0aXRpb24gY2FuIHJlZmVyIHRvIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mIGludGVyYWN0aW9ucyBiZXR3ZWVuIGFuaW1hbHMsIGJ1dCBpdCBkb2VzIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlIHRvIGh1bnRpbmcgYmVoYXZpb3IuXG5cbmUpIEJhZCBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgc3ViamVjdGl2ZSBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gSHVudGluZyBiZWhhdmlvciBpcyBhIG5hdHVyYWwgYmVoYXZpb3IgZm9yIGNhdHMgYW5kIGlzIG5vdCBjb25zaWRlcmVkIGJhZCBiZWhhdmlvci5cblxuZikgTGVhcm5pbmcgbm90aGluZzogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IGFjY3VyYXRlLiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBhcmUgYWN0dWFsbHkgbGVhcm5pbmcgaW1wb3J0YW50IHNraWxscyB0aGF0IHRoZXkgd2lsbCBuZWVkIHRvIHN1cnZpdmUgYXMgYWR1bHQgY2F0cy4gSHVudGluZyBiZWhhdmlvciBpcyBhIGxlYXJuZWQgYmVoYXZpb3IgdGhhdCByZXF1aXJlcyBwcmFjdGljZSBhbmQgcmVmaW5lbWVudC5cblxuZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvcjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gRXh0aW5ndWlzaGluZyBiZWhhdmlvciByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YgZWxpbWluYXRpbmcgYSBiZWhhdmlvciB0aHJvdWdoIHB1bmlzaG1lbnQgb3IgbmVnYXRpdmUgcmVpbmZvcmNlbWVudCwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byBsZWFybmluZyBiZWhhdmlvci5cblxuaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIGJlaGF2aW9yIG9mIGtpdHRlbnMgcHJhY3RpY2luZyBodW50aW5nLiBUaGUgZW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIHJlZmVycyB0byB0aGUgcGh5c2ljcyBvZiBtb3Rpb24gYW5kIGRvZXMgbm90IHJlbGF0ZSB0byBhbmltYWwgYmVoYXZpb3IuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGEpIGxlYXJuaW5nIGJlaGF2aW9yLCBhcyBraXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBhcmUgbGVhcm5pbmcgaW1wb3J0YW50IHNraWxscyB0aGF0IHRoZXkgd2lsbCBuZWVkIHRvIHN1cnZpdmUgYXMgYWR1bHQgY2F0cy4iLCAiZmluYWxfYW5zd2VyIjogImEifX1dLCAiMTUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBCdXJuaW5nIChiKSBXaW50ZXIgKGMpIE11dGF0aW9ucyAoZCkgQ29va2luZyAoZSkgQ3ljbGVzIChmKSBTdW1tZXIgKGcpIEZyZWV6aW5nIChoKSBHdW5zaG90cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJiKSBXaW50ZXI6IFdpbnRlciBpcyBhIHNlYXNvbiBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmMpIE11dGF0aW9uczogTXV0YXRpb25zIGFyZSBjaGFuZ2VzIGluIHRoZSBnZW5ldGljIG1hdGVyaWFsIG9mIGFuIG9yZ2FuaXNtIGFuZCBoYXZlIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmQpIENvb2tpbmc6IENvb2tpbmcgaXMgYSBwcm9jZXNzIG9mIHByZXBhcmluZyBmb29kIGJ5IGhlYXRpbmcgaXQsIGFuZCBpdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZSkgQ3ljbGVzOiBDeWNsZXMgY2FuIHJlZmVyIHRvIG1hbnkgdGhpbmdzLCBidXQgbm9uZSBvZiB0aGVtIGFyZSByZWxhdGVkIHRvIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZikgU3VtbWVyOiBTdW1tZXIgaXMgYSBzZWFzb24gYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5nKSBGcmVlemluZzogRnJlZXppbmcgaXMgYSBwcm9jZXNzIG9mIGxvd2VyaW5nIHRoZSB0ZW1wZXJhdHVyZSBvZiBzb21ldGhpbmcgdG8gYmVsb3cgaXRzIGZyZWV6aW5nIHBvaW50LCBhbmQgaXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmgpIEd1bnNob3RzOiBHdW5zaG90cyBhcmUgYSBzdWRkZW4gbG91ZCBub2lzZSBjYXVzZWQgYnkgYSBidWxsZXQgb3Igb3RoZXIgcHJvamVjdGlsZSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBidXJuaW5nLiBCdXJuaW5nIGRlYWQgb3JnYW5pc21zIGNhbiBjcmVhdGUgZW5lcmd5IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgY29tYnVzdGlvbiwgd2hpY2ggcmVsZWFzZXMgZW5lcmd5IGluIHRoZSBmb3JtIG9mIGhlYXQgYW5kIGxpZ2h0LiBUaGlzIGVuZXJneSBjYW4gYmUgaGFybmVzc2VkIHRvIGdlbmVyYXRlIGVsZWN0cmljaXR5IG9yIHBvd2VyIGVuZ2luZXMuIiwgImZpbmFsX2Fuc3dlciI6ICJhIn19XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYSkgVmVoaWNsZXM6IFR1cm5pbmcgb24gYSB2ZWhpY2xlIGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi4gVmVoaWNsZXMgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cblxuYikgU2F0ZWxsaXRlczogU2F0ZWxsaXRlcyBjYW4gZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBidXQgbm90IHNpbXBseSBieSB0dXJuaW5nIHRoZW0gb24uIFNhdGVsbGl0ZXMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgYW5kIHRyYW5zbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHN1Y2ggYXMgcmFkaW8gd2F2ZXMsIGJ1dCB0aGV5IGRvIG5vdCBlbWl0IHJhZGlhdGlvbiBqdXN0IGJ5IGJlaW5nIHR1cm5lZCBvbi5cblxuZCkgQnVzZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHR1cm5pbmcgb24gYSBidXMgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLiBCdXNlcyBlbWl0IHZhcmlvdXMgdHlwZXMgb2YgcmFkaWF0aW9uLCBzdWNoIGFzIHRoZXJtYWwgcmFkaWF0aW9uIGFuZCBzb3VuZCB3YXZlcywgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxuXG5lKSBGaXJlY3JhY2tlcnM6IEZpcmVjcmFja2VycyBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIHdoZW4gdGhleSBhcmUgdHVybmVkIG9uLiBUaGV5IGVtaXQgbGlnaHQgYW5kIHNvdW5kLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXG5cbmYpIFNlbnNvcnkgbmV1cm9uczogU2Vuc29yeSBuZXVyb25zIGFyZSBwYXJ0IG9mIHRoZSBuZXJ2b3VzIHN5c3RlbSBhbmQgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cblxuZykgQW4gb2JqZWN0OiBBbiBvYmplY3QgZG9lcyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGp1c3QgYnkgYmVpbmcgdHVybmVkIG9uLiBIb3dldmVyLCBzb21lIG9iamVjdHMgY2FuIGVtaXQgcmFkaWF0aW9uIGlmIHRoZXkgYXJlIGhlYXRlZCBvciBlbmVyZ2l6ZWQsIHN1Y2ggYXMgYSBsaWdodCBidWxiLlxuXG5oKSBFbmdpbmVzOiBFbmdpbmVzIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gd2hlbiB0aGV5IGFyZSB0dXJuZWQgb24uIFRoZXkgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYykgbGlnaHQgYnVsYiwgYXMgdHVybmluZyBvbiBhIGxpZ2h0IGJ1bGIgZW1pdHMgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgZm9ybSBvZiB2aXNpYmxlIGxpZ2h0LiIsICJmaW5hbF9hbnN3ZXIiOiAiYyJ9fV0sICIxNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZXJlIGlzIGEgenlnb3RlIGZvcm1lZCBieSBzcGVybSBzd2ltbWluZyB0byBhbiBlZ2c/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIENvbGRlciBhbmQgd2V0dGVyIChiKSBPY2VhbiB3YXRlciAoYykgR3JhcHRvbGl0ZXMgKGQpIFJhcGlkIGV4cGFuc2lvbiAoZSkgQSBkZWx0YSAoZikgQW4gYXJjaGVnb25pdW0gKGcpIEJhcm5hY2xlcyAoaCkgQW4gb3JnYW5pc20ncyBib2R5In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogImEpIENvbGRlciBhbmQgd2V0dGVyOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgY2xpbWF0ZSBjb25kaXRpb24uXG5cbmIpIE9jZWFuIHdhdGVyOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgdHlwZSBvZiB3YXRlci5cblxuYykgR3JhcHRvbGl0ZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgZ3JhcHRvbGl0ZXMgYXJlIGV4dGluY3QgbWFyaW5lIGFuaW1hbHMgdGhhdCBsaXZlZCBkdXJpbmcgdGhlIFBhbGVvem9pYyBlcmEuIFRoZXkgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS5cblxuZCkgUmFwaWQgZXhwYW5zaW9uOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgcHJvY2Vzcy5cblxuZSkgQSBkZWx0YTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBhIGRlbHRhIGlzIGEgbGFuZGZvcm0gdGhhdCBpcyBmb3JtZWQgYXQgdGhlIG1vdXRoIG9mIGEgcml2ZXIuIEl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS5cblxuZykgQmFybmFjbGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGJhcm5hY2xlcyBhcmUgbWFyaW5lIGFuaW1hbHMgdGhhdCByZXByb2R1Y2UgdGhyb3VnaCBleHRlcm5hbCBmZXJ0aWxpemF0aW9uLiBUaGV5IGRvIG5vdCBoYXZlIGFuIGFyY2hlZ29uaXVtIHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC5cblxuaCkgQW4gb3JnYW5pc20ncyBib2R5OiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHByb3ZpZGUgYW55IGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gSXQgaXMganVzdCBhIGRlc2NyaXB0aW9uIG9mIGEgZ2VuZXJhbCBsb2NhdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgZikgYW4gYXJjaGVnb25pdW0sIHdoaWNoIGlzIGEgc3RydWN0dXJlIGZvdW5kIGluIHNvbWUgcGxhbnRzIGFuZCBhbGdhZSB3aGVyZSB0aGUgZWdnIGlzIGZlcnRpbGl6ZWQgYnkgdGhlIHNwZXJtLCBmb3JtaW5nIGEgenlnb3RlLiIsICJmaW5hbF9hbnN3ZXIiOiAiZiJ9fV0sICIxOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXM/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIE1pbGRldyAoYikgTm9ybWFsIHdhdGVyIChjKSBIZXJwZXMgKGQpIE5vcm1hbCBhaXIgKGUpIENvYWwgKGYpIE1vbGQgKGcpIEFjaWQgKGgpIENvbnRhY3Qgc29sdXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYSkgTWlsZGV3OiBXaGlsZSBtaWxkZXcgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmIpIE5vcm1hbCB3YXRlcjogTm9ybWFsIHdhdGVyIGlzIG5vdCBoYXJtZnVsIHRvIHRoZSBleWVzLiBJbiBmYWN0LCBpdCBpcyBlc3NlbnRpYWwgZm9yIG1haW50YWluaW5nIGV5ZSBoZWFsdGguIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5jKSBIZXJwZXM6IEhlcnBlcyBpcyBhIHZpcmFsIGluZmVjdGlvbiB0aGF0IGNhbiBjYXVzZSBjb2xkIHNvcmVzIG9yIGdlbml0YWwgc29yZXMuIFdoaWxlIGl0IGNhbiBjYXVzZSBleWUgaW5mZWN0aW9ucywgaXQgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5kKSBOb3JtYWwgYWlyOiBOb3JtYWwgYWlyIGlzIG5vdCBoYXJtZnVsIHRvIHRoZSBleWVzLiBJbiBmYWN0LCBpdCBpcyBlc3NlbnRpYWwgZm9yIGJyZWF0aGluZyBhbmQgbWFpbnRhaW5pbmcgb3ZlcmFsbCBoZWFsdGguIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5lKSBDb2FsOiBDb2FsIGR1c3QgY2FuIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXMgaWYgaXQgZ2V0cyBpbnRvIHRoZW0uIEhvd2V2ZXIsIGNvYWwgaXRzZWxmIGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZikgTW9sZDogTW9sZCBjYW4gY2F1c2UgcmVzcGlyYXRvcnkgcHJvYmxlbXMsIGJ1dCBpdCBpcyBub3Qga25vd24gdG8gY2F1c2UgaGFybSB0byB0aGUgZXllcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmgpIENvbnRhY3Qgc29sdXRpb246IFdoaWxlIGNvbnRhY3Qgc29sdXRpb24gY2FuIGNhdXNlIGlycml0YXRpb24gb3IgaW5mZWN0aW9uIGlmIG5vdCB1c2VkIHByb3Blcmx5LCBpdCBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmcpIEFjaWQ6IEFjaWQgY2FuIGNhdXNlIHNldmVyZSBoYXJtIHRvIHRoZSBleWVzLCBpbmNsdWRpbmcgY2hlbWljYWwgYnVybnMgYW5kIHBlcm1hbmVudCBkYW1hZ2UuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC5cblxuSW4gY29uY2x1c2lvbiwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGcpIGFjaWQsIGFzIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiB0aGF0IGNhbiBjYXVzZSBkaXJlY3QgaGFybSB0byB0aGUgZXllcy4iLCAiZmluYWxfYW5zd2VyIjogImcifX1dLCAiMTkiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGZvcm1zIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYW1ib28gKGIpIERlc2ljY2F0aW9uIChjKSBCdXJycyAoZCkgRWxtcyAoZSkgTW9zcyAoZikgQ29hbCAoZykgQ2FuZHkgKGgpIE1lYXQifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiYSkgQmFtYm9vOiBCYW1ib28gaXMgYSB0eXBlIG9mIGdyYXNzIHRoYXQgZ3Jvd3MgaW4gdHJvcGljYWwgYW5kIHN1YnRyb3BpY2FsIHJlZ2lvbnMuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5iKSBEZXNpY2NhdGlvbjogRGVzaWNjYXRpb24gaXMgdGhlIHByb2Nlc3Mgb2YgcmVtb3ZpbmcgbW9pc3R1cmUgZnJvbSBzb21ldGhpbmcuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5jKSBCdXJyczogQnVycnMgYXJlIHNtYWxsLCBwcmlja2x5IHNlZWRzIHRoYXQgYXR0YWNoIHRoZW1zZWx2ZXMgdG8gY2xvdGhpbmcgb3IgYW5pbWFsIGZ1ci4gVGhleSBkbyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmQpIEVsbXM6IEVsbXMgYXJlIGRlY2lkdW91cyB0cmVlcyB0aGF0IGdyb3cgaW4gdGVtcGVyYXRlIHJlZ2lvbnMuIFRoZXkgZG8gbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5mKSBDb2FsOiBDb2FsIGlzIGEgZm9zc2lsIGZ1ZWwgdGhhdCBmb3JtcyBmcm9tIHRoZSByZW1haW5zIG9mIHBsYW50cyB0aGF0IGxpdmVkIG1pbGxpb25zIG9mIHllYXJzIGFnby4gSXQgZm9ybXMgdGhyb3VnaCBhIHByb2Nlc3Mgb2YgaGVhdCBhbmQgcHJlc3N1cmUsIGJ1dCBpdCBpcyBub3QgZm9ybWVkIGZyb20gbW9zcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmcpIENhbmR5OiBDYW5keSBpcyBhIHN3ZWV0IGZvb2QgbWFkZSBmcm9tIHN1Z2FyIG9yIGNob2NvbGF0ZS4gSXQgZG9lcyBub3QgZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmgpIE1lYXQ6IE1lYXQgaXMgdGhlIGZsZXNoIG9mIGFuaW1hbHMgdGhhdCBpcyB1c2VkIGFzIGZvb2QuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5lKSBNb3NzOiBNb3NzIGlzIGEgc21hbGwsIG5vbi12YXNjdWxhciBwbGFudCB0aGF0IGdyb3dzIGluIGRhbXAgZW52aXJvbm1lbnRzLiBJdCBjYW4gZm9ybSBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBjb3JyZWN0LiIsICJmaW5hbF9hbnN3ZXIiOiAiZSJ9fV19LCAiY29udmVyc2F0aW9uX1JGQV9mYWxjb24iOiB7IjAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IHVzZWQgZm9yIHByZWRpY3Rpbmc/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXMgKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2UgKGMpIFdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXkgKGQpIDcwLTc1IGRlZ3JlZXMgZmFocmVuaGVpdCAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1ciAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHMuIChnKSBTbm93LCBpY2UsIGFuZCByb2NrIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiLSAoYSkgU2Vjb25kcyBhbmQgbWludXRlczogU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgdG8gcHJlZGljdCBzZWNvbmRzIGFuZCBtaW51dGVzLiBUaGlzIGlzIHRvbyBzcGVjaWZpYyBhbmQgbm90IHdoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgZ2VuZXJhbGx5IHVzZWQgZm9yLiBTYXRlbGxpdGUgdGVjaG5vbG9neSBpcyB1c2VkIGZvciBicm9hZGVyIHRpbWUgc2NhbGVzLCBzdWNoIGFzIGRheXMsIHdlZWtzLCBtb250aHMsIGFuZCB5ZWFycy5cbi0gKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2U6IFdoaWxlIHNvbWUgdHlwZXMgb2Ygc2F0ZWxsaXRlIGRhdGEgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBpbmZvcm1hdGlvbiB0byBzdHVkeSBzZWlzbWljaXR5LCBlYXJ0aHF1YWtlcyB0aGVtc2VsdmVzIGFyZSB0eXBpY2FsbHkgcHJlZGljdGVkIHVzaW5nIG90aGVyIG1ldGhvZHMsIGxpa2Ugc2Vpc21vZ3JhcGhzIGFuZCBnZW9sb2dpY2FsIHN0dWRpZXMuXG4tIChkKSA3MC03NSBkZWdyZWVzIGZhaHJlbmhlaXQ6IFRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgY2Fubm90IHByZWRpY3QgZXhhY3QgdGVtcGVyYXR1cmUgcmFuZ2VzIGxpa2UgdGhpcy4gV2hpbGUgc2F0ZWxsaXRlcyBkbyBwbGF5IGEgcm9sZSBpbiB3ZWF0aGVyIHByZWRpY3Rpb24sIHdoaWNoIGluY2x1ZGVzIHRlbXBlcmF0dXJlLCBwcmVkaWN0aW5nIHNwZWNpZmljIHJhbmdlcyB3aXRoaW4gYSBkYXkgaXNuJ3QgYSB0eXBpY2FsIGFwcGxpY2F0aW9uLlxuLSAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1cjogV2hpbGUgc2F0ZWxsaXRlcyBjYW4gZGV0ZWN0IHJhcGlkIGNoYW5nZXMgaW4gbWFueSBhcmVhcywgc3VjaCBhcyBjbG91ZCBjb3Zlciwgd2VhdGhlciBmcm9udHMsIG9yIHZvbGNhbmljIGFjdGl2aXR5LCB0aGUgcGhyYXNlICdyYXBpZCBjaGFuZ2VzIG9jY3VyJyBpcyB0b28gdmFndWUuIEl0IGNvdWxkIGFwcGx5IHRvIHZhcmlvdXMgcGhlbm9tZW5hLCBzbyBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgYWJvdXQgcHJlZGljdGlvbnMgcmVsYXRlZCB0byBzYXRlbGxpdGUgdGVjaG5vbG9neSBhbG9uZS5cbi0gKGYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzOiBUaGVzZSBkZXNjcmlwdGlvbnMgcmVsYXRlIHRvIGh1bWFuIGJlaGF2aW9yIGFuZCBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzc2VzLCBub3QgcHJlZGljdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5LlxuLSAoZykgU25vdywgaWNlLCBhbmQgcm9jazogVGhpcyBpcyBhIHZlcnkgc3BlY2lmaWMgY29tYmluYXRpb24gb2Ygd2VhdGhlciBhbmQgZ2VvbG9naWNhbCBmZWF0dXJlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGNlcnRhaW5seSBiZSB1c2VkIHRvIG1vbml0b3Igc25vdywgaWNlLCBhbmQgcm9jayAmIHNvaWwgY2hhbmdlcyAoZm9yIGxhbmRzbGlkZSBkZXRlY3Rpb24sIGZvciBleGFtcGxlKSwgaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3RpbmcgdGhlc2UgcGhlbm9tZW5hIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIHN1Z2dlc3RzLlxuLSAoaCkgQXJvdW5kIDUgdG8gMjcgZGVncmVlcyBjZWxzaXVzOiBTaW1pbGFyIHRvIChkKSwgdGhpcyBpcyBhIHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlLCBhbmQgc2F0ZWxsaXRlcyBhbG9uZSBjYW5ub3QgcHJlZGljdCBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZXMgc28gcHJlY2lzZWx5LlxuXG5UaGUgY29ycmVjdCBhbnN3ZXIsIChjKSBXaGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5LCB0b3VjaGVzIG9uIGEgYnJvYWRlciByYW5nZSBvZiBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMsIHdoaWNoIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBwcm92aWRlIGRhdGEgb24uIFNhdGVsbGl0ZXMgdHJhY2sgd2VhdGhlciBwYXR0ZXJucywgY2xvdWQgY292ZXIsIHN1bmxpZ2h0LCBhbmQgb3RoZXIgaW5kaWNhdG9ycyB0aGF0IGdpdmUgdXMgYW4gaWRlYSBvZiB0aGUgb3V0c2lkZSBjb25kaXRpb25zIGFsbW9zdCBkYWlseS4gXG5cblRoaXMgYnJvYWQsIGRhaWx5IG92ZXJ2aWV3IG9mIGVudmlyb25tZW50YWwgY29uZGl0aW9ucyBpcyBzb21ldGhpbmcgdGhhdCBzYXRlbGxpdGVzIGNhbiBwcm92aWRlLCB1bmxpa2UgdGhlIG1vcmUgbmFycm93IGFuZCBzcGVjaWZpYyBwcmVkaWN0aW9ucyBtZW50aW9uZWQgaW4gdGhlIG90aGVyIG9wdGlvbnMuIEFsdGhvdWdoIGl0J3Mgbm90IGEgdGVjaG5pY2FsICdwcmVkaWN0aW9uJyBpbiB0aGUgc2Vuc2Ugb2YgZm9yZWNhc3RpbmcgZXhhY3QgZXZlbnRzIGFsbCB0aGUgdGltZSwgaXQgZG9lcyBwcm92aWRlIHVwLXRvLWRhdGUgYW5kIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYW5kIGluZm9ybSBvdGhlciBwcmVkaWN0aW9ucyByZWxhdGVkIHRvIHdlYXRoZXIgYW5kIGVudmlyb25tZW50LiIsICJmaW5hbF9hbnN3ZXIiOiAiYyJ9fV0sICIxIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkb2VzIGlycmFkaWF0aW5nIGZvb2QgZG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFJlbGlldmUgcGFpbiAoYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzIChjKSBJbXByb3ZlcyBmb29kIHNhZmV0eSAoZCkgQWxsb3dzIGdyb3d0aCBvZiBiYWN0ZXJpYSAoZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGUgKGYpIENoZW1pY2FsIGNoYW5nZXMgKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZCAoaCkgTWFqb3IgdGhyZWF0IHRvIGhlYWx0aCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIoYSkgUmVsaWV2ZSBwYWluOiBJcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGhhdmUgYW4gZWZmZWN0IG9uIHBhaW4uIFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGZvb2QgaXJyYWRpYXRpb24gaXMgYSBwcm9jZXNzIGZvY3VzZWQgb24gZW5zdXJpbmcgZm9vZCBzYWZldHkgYnkgcmVkdWNpbmcgaGFybWZ1bCBiYWN0ZXJpYSwgbm90IG9uIGFsbGV2aWF0aW5nIHBhaW4uXG5cbihiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHM6IFdoaWxlIHNvbWUgc3R1ZGllcyBzdWdnZXN0IGlycmFkaWF0aW9uIGNvdWxkIHNsaWdodGx5IGVuaGFuY2UgbnV0cmllbnQgbGV2ZWxzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgYmVuZWZpdCBvZiBmb29kIGlycmFkaWF0aW9uLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgbWFpbiBwdXJwb3NlIGlzIHRvIGVuc3VyZSBmb29kIHNhZmV0eSwgbm90IG5lY2Vzc2FyaWx5IHRvIGVuaGFuY2UgbnV0cmllbnRzLlxuXG4oYykgSW1wcm92ZXMgZm9vZCBzYWZldHk6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBGb29kIGlycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyB3aGVyZSBmb29kIGlzIGV4cG9zZWQgdG8gYSBzcGVjaWZpYyBsZXZlbCBvZiBpb25pemluZyByYWRpYXRpb24gdG8ga2lsbCBvciBpbmFjdGl2YXRlIHBhdGhvZ2VucyAoYmFjdGVyaWEsIHZpcnVzZXMsIHBhcmFzaXRlcyksIHJlZHVjaW5nIHRoZSByaXNrIG9mIGZvb2Rib3JuZSBpbGxuZXNzZXMuIFRoaXMgbWFrZXMgaXQgc2FmZXIgZm9yIGNvbnN1bWVycy5cblxuKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWE6IFRoaXMgaXMgaW5jb3JyZWN0LiBGb29kIGlycmFkaWF0aW9uIGlzIGludGVuZGVkIHRvIHJlZHVjZSB0aGUgcG9wdWxhdGlvbiBvZiBoYXJtZnVsIGJhY3RlcmlhIHRoYXQgY2FuIGNhdXNlIGZvb2Rib3JuZSBpbGxuZXNzZXMuIEl0IGRvZXMgbm90IGFsbG93IG9yIHByb21vdGUgYmFjdGVyaWFsIGdyb3d0aC5cblxuKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlOiBUaGlzIGlzIGluY29ycmVjdC4gSW4gZmFjdCwgaXJyYWRpYXRpb24gY2FuIGhlbHAgcmVkdWNlIGZvb2Qgd2FzdGUgYnkgcHJlc2VydmluZyBmb29kIGZvciBsb25nZXIgcGVyaW9kcywgdGhlcmVieSBleHRlbmRpbmcgaXRzIHNoZWxmIGxpZmUuXG5cbihmKSBDaGVtaWNhbCBjaGFuZ2VzOiBUaGlzIG1heSBiZSBzb21ld2hhdCBjb3JyZWN0IGluIHRlcm1zIG9mIGdlbmVyYWwgY2hlbWlzdHJ5LCBidXQgaXQgZG9lc24ndCBmdWxseSBleHBsYWluIHRoZSBwdXJwb3NlIG9yIHRoZSByZXN1bHQgb2YgZm9vZCBpcnJhZGlhdGlvbi4gVGhlIHRlcm0gJ2NoZW1pY2FsIGNoYW5nZXMnIGlzIHRvbyBicm9hZCBhbmQgZG9lc24ndCBjYXB0dXJlIHRoZSBzcGVjaWZpYyBlZmZlY3QgXHUyMDE0IHJlZHVjaW5nIHRoZSBwb3B1bGF0aW9uIG9mIGhhcm1mdWwgcGF0aG9nZW5zLlxuXG4oZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkOiBTaW1pbGFyIHRvIChmKSwgd2hpbGUgdGhpcyBtaWdodCBvY2N1ciBhcyBhIHNpZGUgZWZmZWN0IG9mIGlycmFkaWF0aW9uIChzaW5jZSBpdCBjYXVzZXMgaW9uaXphdGlvbiksIGl0J3Mgbm90IHdoYXQgZm9vZCBpcnJhZGlhdGlvbiBpcyBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggb3Igd2h5IGl0J3MgZG9uZS5cblxuKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGg6IFRoaXMgaXMgaW5jb3JyZWN0LiBJcnJhZGlhdGluZyBmb29kIHRvIHNwZWNpZmljIGxldmVscyBpcyBjb25zaWRlcmVkIHNhZmUgYnkgbnVtZXJvdXMgaW50ZXJuYXRpb25hbCBoZWFsdGggb3JnYW5pemF0aW9ucy4gVGhpcyBvcHRpb24gbWlzcmVwcmVzZW50cyB0aGUgcHVycG9zZSBhbmQgc2FmZXR5IHN0YW5kYXJkcyBvZiBmb29kIGlycmFkaWF0aW9uLlxuXG5UbyBzdW1tYXJpemUsIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIG9mIGlycmFkaWF0aW5nIGZvb2QgaXMgdG8gaW1wcm92ZSBmb29kIHNhZmV0eSBieSByZWR1Y2luZyBoYXJtZnVsIG1pY3Jvb3JnYW5pc21zLCBtYWtpbmcgdGhlIGZvb2QgbGVzcyBsaWtlbHkgdG8gY2F1c2UgZm9vZGJvcm5lIGlsbG5lc3Nlcy4iLCAiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogIihhKSAqKkZpYmVyIGZvbGxpY2xlcyoqOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gTWFtbWFscyBoYXZlIGEgdW5pcXVlIHNraW4gc3RydWN0dXJlIHRoYXQgaW5jbHVkZXMgbXVsdGlwbGUgbGF5ZXJzLCBvbmUgb2Ygd2hpY2ggaW52b2x2ZXMgYSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcy4gVGhlc2UgYXJlIHNtYWxsIHBvY2tldHMgd2l0aGluIHRoZSBza2luIHRoYXQgY29udGFpbiBoYWlyIGZvbGxpY2xlcywgc2ViYWNlb3VzIGdsYW5kcywgYW5kIHN3ZWF0IGdsYW5kcy4gVGhlIGxheWVyIG9mIGhhaXIgKHdoaWNoIGNvbnNpc3RzIG9mIGZpYmVycykgYW5kIHRoZSBhc3NvY2lhdGVkIHN0cnVjdHVyZXMgd29yayB0b2dldGhlciB0byBwcm90ZWN0IHRoZSBtYW1tYWwncyBza2luIGZyb20gdmFyaW91cyBlbnZpcm9ubWVudGFsIHRocmVhdHMgc3VjaCBhcyBtaWNyb29yZ2FuaXNtcywgcGh5c2ljYWwgZGFtYWdlLCBhbmQgZXhjZXNzaXZlIGhlYXQgb3IgY29sZC5cblxuTm93IGxldCdzIGRpc21pc3MgdGhlIGluY29ycmVjdCBvcHRpb25zOlxuXG4oYikgKipFeGZvbGlhdGlvbioqOiBFeGZvbGlhdGlvbiByZWZlcnMgdG8gdGhlIG5hdHVyYWwgcHJvY2VzcyBvZiBkZWFkIHNraW4gY2VsbHMgZHlpbmcgYW5kIHNoZWRkaW5nIG9mZi4gV2hpbGUgaXQgY29udHJpYnV0ZXMgdG8gaGVhbHRoIGFuZCBza2luIGFwcGVhcmFuY2UsIGl0IGRvZXMgbm90IGRpcmVjdGx5IHByb3RlY3QgdGhlIHNraW4uXG5cbihjKSAqKlJlc2lzdGFuY2UqKjogVGhpcyB0ZXJtIGlzIHRvbyBicm9hZCBhbmQgdmFndWUgdG8gYWNjdXJhdGVseSBkZXNjcmliZSB3aGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbi4gTWFtbWFsIHNraW4gcmVzaXN0YW5jZSBpcyBhIHJlc3VsdCBvZiBpdHMgc3RydWN0dXJlLCBub3QgdGhlIHRlcm0gaXRzZWxmLlxuXG4oZCkgKipMYXllcnMgb2YgZmF0Kio6IE1hbW1hbHMgY2VydGFpbmx5IGhhdmUgbGF5ZXJzIG9mIGZhdCwgZXNwZWNpYWxseSB1bmRlciB0aGUgc2tpbiAoc3ViY3V0YW5lb3VzIGZhdCkuIFRoaXMgbGF5ZXIgYWN0cyBhcyBpbnN1bGF0aW9uIGFnYWluc3QgY29sZCB0ZW1wZXJhdHVyZXMgYW5kIGFzIGFuIGVuZXJneSByZXNlcnZlLCBidXQgaXQgaXMgbm90IHdoYXQgcHJpbWFyaWx5IHByb3RlY3RzIHNraW4gaW4gdGhlIHdheSBoYWlyIGRvZXMuXG5cbihlKSAqKkV2YXBvcmF0aW9uKio6IEV2YXBvcmF0aW9uIG9mIHN3ZWF0IGNhbiBjb29sIHRoZSBib2R5IGFuZCBpcyBhIHJlZ3VsYXRvcnkgbWVjaGFuaXNtIGZvciBtYW1tYWxzLCBidXQgaXQgZG9lc24ndCBvZmZlciBwaHlzaWNhbCBwcm90ZWN0aW9uIHRvIHRoZSBza2luLlxuXG4oZikgKipBIGN1dGljbGUqKjogVGhlIGN1dGljbGUgcmVmZXJzIHRvIHRoZSBvdXRlciBwYXJ0IG9mIGEgcGxhbnQgY2VsbCB3YWxsIG9yLCBsb29zZWx5LCB0aGUgb3V0ZXIgcGFydCBvZiB0aGUgc2tpbiBhcyBpbiBodW1hbiBoYWlyIHdoaWNoIGlzIHdoYXQgcHJvdGVjdHMgdGhhdCBoYWlyIGZvbGxpY2xlLiBUaGlzIGRvZXNuJ3QgYWNjdXJhdGVseSBkZXNjcmliZSB0aGUgcHJvdGVjdGl2ZSBsYXllciBvZiBtYW1tYWwgc2tpbi5cblxuKGcpICoqU2Vuc29yeSBuZXVyb25zKio6IFRoZXNlIGFyZSBzcGVjaWFsaXplZCBuZXJ2ZSBjZWxscyB0aGF0IGRldGVjdCBhbmQgdHJhbnNtaXQgc2Vuc29yeSBpbmZvcm1hdGlvbiB0byB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbS4gU2Vuc29yeSBuZXVyb25zIHBsYXkgYSByb2xlIGluIHBlcmNlaXZpbmcgdGhlIGVudmlyb25tZW50IGJ1dCBhcmUgbm90IHBoeXNpY2FsIGJhcnJpZXJzIHRoYXQgcHJvdGVjdCB0aGUgc2tpbi5cblxuKGgpICoqRnVyIGFuZCBmYXQqKjogVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIGNvcnJlY3QgYW5kIGluY29ycmVjdCBlbGVtZW50cy4gV2hpbGUgZnVyIGRvZXMgcHJvdmlkZSBwcm90ZWN0aW9uIGFzIHBhcnQgb2YgdGhlIGZvbGxpY2xlIG5ldHdvcmssICdmYXQnIGFsb25lIGlzIG5vdCBhIHByb3RlY3RpdmUgc3RydWN0dXJlIGluIHRoZSBza2luIGl0c2VsZi4gQWRkaXRpb25hbGx5LCBzcGVjaWZ5aW5nIGZ1ciBhbmQgZmF0IHRvZ2V0aGVyIG1peGVzIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0aWVzIChmdXIgZm9yIGluc3VsYXRpb24gYW5kIHByb3RlY3Rpb24sIGZhdCBmb3IgaW5zdWxhdGlvbikgcmF0aGVyIHRoYW4gb25lIHNpbmd1bGFyIG1lY2hhbmlzbSBkaXJlY3RseSBhZGRyZXNzaW5nIHNraW4gcHJvdGVjdGlvbi5cblxuSW4gc3VtbWFyeSwgbWFtbWFscycgc2tpbiBpcyByb2J1c3RseSBwcm90ZWN0ZWQgcHJpbWFyaWx5IGJ5IHRoZSBuZXR3b3JrIG9mIGZpYmVyIGZvbGxpY2xlcywgd2hpY2ggaW5jb3Jwb3JhdGVzIGJvdGggdGhlIGhhaXIgc3RydWN0dXJlcyAoZnVyKSBhbmQgdGhlIGFzc29jaWF0ZWQgZ2xhbmRzIChsaWtlIHNlYmFjZW91cyBnbGFuZHMpIHRoYXQgbHVicmljYXRlIHRoZSBmdXIuIFRoaXMgcHJvdGVjdHMgdGhlIHVuZGVybHlpbmcgbGF5ZXJzIG9mIHRoZSBza2luIGFuZCBwZXJtaXRzIG1hbW1hbHMgdG8gdGhyaXZlIGluIHZhcmlvdXMgY2xpbWF0ZXMgYW5kIGVudmlyb25tZW50cy4iLCAiZmluYWxfYW5zd2VyIjogImEifX1dLCAiMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG8gZWFydGh3b3JtcyBkbyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmP1xuQW5zd2VyIENob2ljZXM6IChhKSBEaWVzIChiKSBSZWdyb3dzIGl0IChjKSBSZXByb2R1Y2VzIChkKSBTZWRpbWVudCAoZSkgUm9vdCBncm93dGggKGYpIE1pZ3JhdGUgKGcpIFN0b3BzIGdyb3dpbmcgKGgpIFJvb3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogIjEuICoqT3B0aW9uIChhKTogRGllcyoqXG4gICAtIEVhcnRod29ybXMgYXJlIHNlZ21lbnRlZCBvcmdhbmlzbXMsIHdpdGggZWFjaCBzZWdtZW50IGNvbnRhaW5pbmcgYm90aCBuZXJ2ZSBjb3JkcyBhbmQgbXVzY2xlIGZpYmVycy4gV2hpbGUgaXQgaXMgdHJ1ZSB0aGF0IGVhY2ggc2VnbWVudCBjYW4gZnVuY3Rpb24gc2VtaS1pbmRlcGVuZGVudGx5LCB0aGUgc2V2ZXJlZCBzZWdtZW50IGRvZXNuJ3Qgc2ltcGx5IGRpZS4gVGhlIGxvc3Mgb2YgYSBzZWdtZW50IG1heSBhZmZlY3QgdGhlIHdvcm0ncyBtb2JpbGl0eSBhbmQgb3ZlcmFsbCBoZWFsdGgsIGJ1dCBpdCBkb2Vzbid0IGxlYWQgdG8gaW5zdGFudGFuZW91cyBkZWF0aCBvZiB0aGUgc2VnbWVudCBpdHNlbGYuXG5cbjIuICoqT3B0aW9uIChjKTogUmVwcm9kdWNlcyoqXG4gICAtIFJlcHJvZHVjdGlvbiBpbiBlYXJ0aHdvcm1zIGlzIGEgc2VwYXJhdGUgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGZvcm1hdGlvbiBvZiBlaXRoZXIgZWdncyBvciB3b3JtcyBmcm9tIGhlcm1hcGhyb2RpdGljIHBhcnRuZXJzLiBUaGUgYnJlYWtpbmcgb2ZmIG9mIGEgc2VnbWVudCBkb2VzIG5vdCBpbml0aWF0ZSB0aGlzIHJlcHJvZHVjdGl2ZSBwcm9jZXNzLlxuXG4zLiAqKk9wdGlvbiAoZCk6IFNlZGltZW50KipcbiAgIC0gU2VkaW1lbnQgcmVmZXJzIHRvIGZpbmUsIGxvb3NlIHBhcnRpY2xlcyBvZiBvcmdhbmljIGFuZCBpbm9yZ2FuaWMgbWF0ZXJpYWwgZm91bmQgYXQgdGhlIGJvdHRvbSBvZiBhIGJvZHkgb2Ygd2F0ZXIuIFRoZXJlIGlzIG5vIGZhY3R1YWwgY29ubmVjdGlvbiBiZXR3ZWVuIGEgc2VnbWVudGVkIGVhcnRod29ybSBicmVha2luZyBvZmYgYW5kIHRoZSBjcmVhdGlvbiBvZiBzZWRpbWVudC5cblxuNC4gKipPcHRpb24gKGUpOiBSb290IGdyb3d0aCoqXG4gICAtIFJvb3QgZ3Jvd3RoIGlzIGEgcHJvY2VzcyBpbiBwbGFudHMsIG5vdCBlYXJ0aHdvcm1zLiBFYXJ0aHdvcm1zIGRvIG5vdCBoYXZlIHJvb3RzIG5vciBkbyB0aGV5IHBlcmZvcm0gcm9vdCBncm93dGggYXMgcGFydCBvZiB0aGVpciBiaW9sb2dpY2FsIGZ1bmN0aW9ucy5cblxuNS4gKipPcHRpb24gKGYpOiBNaWdyYXRlKipcbiAgIC0gTWlncmF0aW9uIHJlZmVycyB0byB0aGUgcmVndWxhciBzZWFzb25hbCBtb3ZlbWVudHMgbWFkZSBieSBhbmltYWxzIGluIHNlYXJjaCBvZiBmb29kLCBicmVlZGluZywgb3IgbWlsZGVyIGNsaW1hdGljIGNvbmRpdGlvbnMuIEVhcnRod29ybXMgY2FuIG1pZ3JhdGUsIGJ1dCB0aGUgYnJlYWtpbmcgb2ZmIG9mIGEgc2VnbWVudCAod2hpY2ggdHlwaWNhbGx5IGhhcHBlbnMgZHVlIHRvIGV4dGVybmFsIHByZXNzdXJlKSBkb2VzIG5vdCBpbml0aWF0ZSBhIG1pZ3JhdGlvbiBwcm9jZXNzLlxuXG42LiAqKk9wdGlvbiAoZyk6IFN0b3BzIGdyb3dpbmcqKlxuICAgLSBHcm93dGggaW4gZWFydGh3b3JtcyBpcyBpbmRlZWQgYmlvbG9naWNhbCwgYnV0IHRoZSBsb3NzIG9mIGEgc2VnbWVudCBkb2Vzbid0IGNhdXNlIGEgY2Vzc2F0aW9uIG9mIGdyb3d0aC4gU2VnbWVudHMgb2YgZWFydGh3b3JtcyBhcmUgY29uc3RhbnRseSBiZWluZyBhZGRlZCBhbmQgc2hlZCBkZXBlbmRpbmcgb24gdGhlIHdvcm0ncyBncm93dGggYW5kIGNvbmRpdGlvbnMsIHNvIHRoZSBsb3NzIG9mIGEgc2VnbWVudCB3b3VsZG4ndCB0eXBpY2FsbHkgaGFsdCBpdHMgb3ZlcmFsbCBncm93dGguXG5cbjcuICoqT3B0aW9uIChoKTogUm9vdHMqKlxuICAgLSBBcyBtZW50aW9uZWQgZWFybGllciwgcm9vdHMgYXJlIGEgY2hhcmFjdGVyaXN0aWMgb2YgcGxhbnRzLCBub3QgZWFydGh3b3Jtcy4gRWFydGh3b3JtIHNlZ21lbnRzIGRvIG5vdCB0dXJuIGludG8gcm9vdHMuXG5cbioqVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChiKSBSZWdyb3dzIGl0LioqXG5cbkVhcnRod29ybXMgY2FuIHJlZ2VuZXJhdGUgbG9zdCBzZWdtZW50cy4gVGhpcyByZWdlbmVyYXRpdmUgYWJpbGl0eSBpcyBvbmUgb2YgdGhlIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlc2Ugc2VnbWVudGVkIHdvcm1zLiBXaGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLCB0eXBpY2FsbHkgZHVlIHRvIGV4dGVybmFsIGZvcmNlcywgdGhlIHNldmVyZWQgc2VnbWVudCBjYW4gcmVnZW5lcmF0ZSwgbGVhZGluZyB0byB0aGUgZ3Jvd3RoIG9mIGEgbmV3IG9uZSBpZiB0aGUgY29uZGl0aW9ucyBwZXJtaXQuXG5cblJlbWVtYmVyLCBlYWNoIGluY29ycmVjdCBhbnN3ZXIgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSB0aGV5IGVpdGhlciBkb24ndCBhZGRyZXNzIHRoZSBiaW9sb2dpY2FsIHByb2Nlc3MgYXQgaGFuZCBvciBkb24ndCBhbGlnbiB3aXRoIGtub3duIGJpb2xvZ2ljYWwgZnVuY3Rpb25zIGFuZCBjaGFyYWN0ZXJpc3RpY3Mgb2YgZWFydGh3b3Jtcy4iLCAiZmluYWxfYW5zd2VyIjogImIifX1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogIihhKSBUaGUgZW52aXJvbm1lbnQ6IExpZ2h0bmluZyBjYW4gcmVsZWFzZSBsYXJnZSBhbW91bnRzIG9mIGVuZXJneSBhbmQgaGVhdCwgd2hpY2ggY2FuIGRpc3J1cHQgbmF0dXJhbCBlY29zeXN0ZW1zLCBjYXVzZSBmb3Jlc3QgZmlyZXMsIGFuZCBhZmZlY3QgYWlyIHF1YWxpdHksIHRodXMgaGFybWluZyB0aGUgZW52aXJvbm1lbnQuXG5cbihiKSBSYWluc3Rvcm1zOiBMaWdodG5pbmcgZG9lcyBub3QgZGlyZWN0bHkgaGFybSByYWluc3Rvcm1zLiBJbiBmYWN0LCBpdCdzIGEgcGFydCBvZiB0aGUgbmF0dXJhbCBzdG9ybSBwcm9jZXNzLiBMaWdodG5pbmcgaXMgb2Z0ZW4gYSByZXN1bHQgb2Ygc2V2ZXJlIHRodW5kZXJzdG9ybXMsIG5vdCBhIGZhY3RvciB0aGF0IGNhdXNlcyB0aGVtIHRvIGJlIGhhcm1mdWwgdGhlbXNlbHZlcy5cblxuKGMpIERlc3RydWN0aW9uOiBUaGlzIG9wdGlvbiBpcyBsZXNzIHNwZWNpZmljIHRoYW4gKGEpIG9yIChiKSwgYnV0IGluIGdlbmVyYWwgdGVybXMsIGl0J3MgdHJ1ZS4gSG93ZXZlciwgJ2Rlc3RydWN0aW9uJyBpcyB0b28gdmFndWUgYW5kIGRvZXNuJ3QgZXhwbGFpbiB0aGUgaGFybSBjYXVzZWQgYnkgbGlnaHRuaW5nIGFjdGl2aXR5LlxuXG4oZCkgVmlzaWJpbGl0eTogV2hpbGUgbGlnaHRuaW5nIGNhbiB0ZW1wb3JhcmlseSByZWR1Y2UgdmlzaWJpbGl0eSBkdXJpbmcgc3Rvcm1zLCBpdCBkb2VzIG5vdCBpbmhlcmVudGx5ICdicmluZycgb3IgJ2NhdXNlJyBwb29yIHZpc2liaWxpdHkuIFZpc2liaWxpdHkgaXNzdWVzIGFyZSBnZW5lcmFsbHkgZHVlIHRvIHJhaW4sIGZvZywgb3IgdGhlIHN0b3JtIGNsb3VkcyB0aGVtc2VsdmVzLCBub3QgdGhlIGxpZ2h0bmluZy5cblxuKGUpIFRodW5kZXI6IFRoaXMgaXMgbm90IGEgaGFybSBidXQgcmF0aGVyIGFub3RoZXIgcGhlbm9tZW5vbiBjcmVhdGVkIGFsb25nc2lkZSBsaWdodG5pbmc7IHRoZXkgYXJlIGJvdGggbWFuaWZlc3RhdGlvbnMgb2YgZWxlY3RyaWNhbCBkaXNjaGFyZ2VzIGluIHRodW5kZXJzdG9ybXMuXG5cbihmKSBUaGUgc3VuOiBMaWdodG5pbmcgaGFzIG5vIGVmZmVjdCBvbiB0aGUgc3VuLCBhcyB0aGV5IGFyZSBkaXN0YW50IGZyb20gZWFjaCBvdGhlciBhbmQgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIGVhY2ggb3RoZXIuXG5cbihnKSBUaGUgd2VhdGhlcjogV2hpbGUgbGlnaHRuaW5nIGlzIGEgcGFydCBvZiBzZXZlcmUgd2VhdGhlciwgaXQgZG9lcyBub3QgY2F1c2Ugd2VhdGhlciBjaGFuZ2VzIGluaGVyZW50bHkuIFdlYXRoZXIgaXMgYSBjb21wbGV4IHN5c3RlbSBpbmZsdWVuY2VkIGJ5IG1hbnkgZmFjdG9ycywgYW5kIGxpZ2h0bmluZyBpcyBvbmx5IG9uZSBvZiBtYW55IGluZGljYXRvcnMgb2Ygc2V2ZXJlIHdlYXRoZXIuXG5cbihoKSBUcmFuc3BvcnRhdGlvbjogVGhpcyBpcyBhbm90aGVyIHBvdGVudGlhbCBlZmZlY3QsIGJ1dCBpdCBpcyBpbmRpcmVjdC4gTGlnaHRuaW5nIHN0cmlrZXMgY2FuIGNhdXNlIGRhbWFnZSB0byBpbmZyYXN0cnVjdHVyZSBsaWtlIHBvd2VyIGxpbmVzLCByb2FkcywgcmFpbHJvYWRzLCBldGMuLCBpbmRpcmVjdGx5IGFmZmVjdGluZyB0cmFuc3BvcnRhdGlvbiBzeXN0ZW1zLiBIb3dldmVyLCB0aGlzIHN0YXRlbWVudCBpc24ndCBhcyBkaXJlY3Qgb3IgY2xlYXIgYXMgaXQgY291bGQgYmUuXG5cbkFmdGVyIGdvaW5nIHRocm91Z2ggZWFjaCBhbnN3ZXIgY2hvaWNlLCBpdCdzIGNsZWFyIHRoYXQgKGEpICdUaGUgZW52aXJvbm1lbnQnIGlzIHRoZSBtb3N0IGRpcmVjdCBhbmQgY29tcHJlaGVuc2l2ZSBhbnN3ZXIgdG8gd2h5IGxpZ2h0bmluZyBjYW4gYmUgYmFkIHdpdGhvdXQgZmFsbGluZyBpbnRvIGJyb2FkIG9yIGluZGlyZWN0IGV4cGxhbmF0aW9ucy4iLCAiZmluYWxfYW5zd2VyIjogImEifX1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIoYSkgU291bHM6IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBpbiBiaW9sb2d5IHR5cGljYWxseSByZWZlcnMgdG8gcGh5c2ljYWwgb3IgbW9sZWN1bGFyIHJlbWFpbnMsIG5vdCBhYnN0cmFjdCBjb25jZXB0cyBsaWtlIHNvdWxzLiBCaW9sb2d5IGRlYWxzIHdpdGggcGh5c2ljYWwsIHRhbmdpYmxlIGFzcGVjdHMgb2YgbGlmZSBmb3Jtcy5cblxuKGIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXM6IFRoaXMgb3B0aW9uIGlzIHRvbyBzcGVjaWZpYy4gV2hpbGUgZXZpZGVuY2UgY291bGQgaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIGFuaW1hbHMgd2l0aCBiYWNrYm9uZXMsIGl0IGRvZXNuJ3QgYWNjb3VudCBmb3Igb3RoZXIgZm9ybXMgb2YgbGlmZSB0aGF0IG1pZ2h0IGJlIHByZXNlbnQgaW4gdGhlIGZvc3NpbCByZWNvcmQuXG5cbihjKSBPcmdhbmlzbXM6IFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgdGhlIGNvcnJlY3QgYW5zd2VyLCBidXQgaXQncyBub3QgdGhlIG1vc3Qgc3BlY2lmaWMuIEZvc3NpbHMgb3IgY2hlbWljYWwgbWFya2VycyBjYW4gaW5kZWVkIHNob3cgd2hlcmUgdmFyaW91cyBvcmdhbmlzbXMgb25jZSBsaXZlZCwgYnV0IG5vdCBhbGwgcGFzdCBsaWZlIGlzIHJlcHJlc2VudGVkIGJ5IGRpcmVjdCBmb3NzaWwgZXZpZGVuY2UuXG5cbihmKSBEZWZvcmVzdGF0aW9uOiBUaGlzIHJlZmVycyB0byBhIGN1cnJlbnQgZW52aXJvbm1lbnRhbCBwcm9jZXNzLCBub3QgcGFzdCBsaWZlLiBJdCBpbmRpY2F0ZXMgY2hhbmdlcyBpbiBlY29zeXN0ZW1zIHdpdGhpbiB0aGUgcmVjZW50IHBhc3QgYnV0IGRvZXNuJ3Qgc3BlY2lmaWNhbGx5IGFkZHJlc3Mgd2hpY2ggbGlmZSBmb3JtcyBleGlzdGVkIHRoZXJlIGluIHRoZSBwYXN0LlxuXG4oZykgUmVpbmNhcm5hdGlvbjogTGlrZSAnc291bHMsJyB0aGlzIGlzIGEgc3Bpcml0dWFsIG9yIG1ldGFwaHlzaWNhbCBjb25jZXB0LCBub3QgZ3JvdW5kZWQgaW4gYmlvbG9naWNhbCBldmlkZW5jZS4gQmlvbG9neSBjb25jZXJucyBpdHNlbGYgd2l0aCBvYnNlcnZhYmxlIGFuZCBzY2llbnRpZmljYWxseSB0ZXN0YWJsZSBwaGVub21lbmEuXG5cbihoKSBJbXBvcnRhbnQgaGFiaXRhdHM6IFRoaXMgaXMgdG9vIHZhZ3VlLiBXaGlsZSBpdCBjb3VsZCBiZSB0aWVkIHRvIHRoZSB0eXBlcyBvZiBvcmdhbmlzbXMgdGhhdCB1c2VkIHRvIGxpdmUgaW4gYSBwbGFjZSwgdGhlIHBocmFzZSBjb3VsZCBpbXBseSBhIHZhcmlldHkgb2YgdW5yZWxhdGVkIGNvbnRleHRzLCBhbmQgZG9lc24ndCBkaXJlY3RseSBzdGF0ZSB3aGF0IHR5cGVzIG9mIGxpZmUgZXhpc3RlZC5cblxuVGhlcmVmb3JlLCB0aGUgbW9zdCBhY2N1cmF0ZSBhbmQgY29tcHJlaGVuc2l2ZSBhbnN3ZXIgaXMgKGQpIFBsYW50IG9yIGFuaW1hbC4gRXZpZGVuY2UgaW4gdGhlIGZvcm0gb2YgZm9zc2lscywgdHJhY2UgZm9zc2lscywgYW5kIGltcHJpbnRzIGNhbiBpbmRpY2F0ZSB0aGUgcHJlc2VuY2Ugb2YgdmFyaW91cyBsaWZlIGZvcm1zLCBpbmNsdWRpbmcgYm90aCBwbGFudHMgYW5kIGFuaW1hbHMsIGluIGEgcGFydGljdWxhciBwbGFjZSB3aGVyZSB0aGV5IG9uY2UgbGl2ZWQuIFRoaXMgY292ZXJzIGEgYnJvYWQgcmFuZ2Ugb2YgcGFzdCBsaWZlIGluIGEgc2NpZW50aWZpY2FsbHkgZ3JvdW5kZWQgbWFubmVyLCBhY2tub3dsZWRnaW5nIGNvbnRyaWJ1dGlvbnMgZnJvbSBib3RoIHBsYW50IGFuZCBhbmltYWwga2luZ2RvbXMuIiwgImZpbmFsX2Fuc3dlciI6ICJkIn19XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGcpIENocm9tb3NvbWVzLlxuXG5MZXQncyBleGFtaW5lIHdoeSB0aGUgb3RoZXIgb3B0aW9ucyBhcmUgaW5jb3JyZWN0OlxuXG4oYSkgU3BlY2llczogU3BlY2llcyBpcyBhIGNsYXNzaWZpY2F0aW9uIHN5c3RlbSB1c2VkIGJ5IGJpb2xvZ2lzdHMgdG8gZ3JvdXAgdG9nZXRoZXIgc2ltaWxhciBvcmdhbmlzbXMuIFdoaWxlIHNwZWNpZXMgYXJlIHJlbGF0ZWQgaW4gdGVybXMgb2YgdGhlaXIgZ2VuZXRpY3MsIHRoZXkgZG8gbm90IGNvbnRhaW4gdGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGFuIGluZGl2aWR1YWwncyBpbmhlcml0ZWQgdHJhaXRzLlxuXG4oYikgTWVzc2VuZ2VyczogVGhpcyBvcHRpb24gY291bGQgcmVmZXIgdG8gc2lnbmFscyBvciBjb21tdW5pY2F0aW9uIHN5c3RlbXMgd2l0aGluIGFuIG9yZ2FuaXNtLCBidXQgaXQgZG9lcyBub3QgdHlwaWNhbGx5IHJlbGF0ZSB0byB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiByZXNwb25zaWJsZSBmb3IgaW5oZXJpdGVkIHRyYWl0cy4gXG5cbihjKSBIYWlyIGZvbGxpY2xlczogSGFpciBmb2xsaWNsZXMgYXJlIHN0cnVjdHVyZXMgaW4gdGhlIHNraW4gdGhhdCBwcm9kdWNlIGhhaXIuIFRoZXkgZG9uJ3QgY29udGFpbiBnZW5ldGljIGluZm9ybWF0aW9uIGFib3V0IHRyYWl0czsgcmF0aGVyLCB0aGV5J3JlIGEgcmVzdWx0IG9mIGdlbmV0aWMgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgY2hyb21vc29tZXMuXG5cbihkKSBDeWNsZXM6IEJpb2xvZ2ljYWwgY3ljbGVzLCBzdWNoIGFzIGNpcmNhZGlhbiByaHl0aG1zLCBhcmUgcmVndWxhciBwYXR0ZXJucyBvZiBiZWhhdmlvciBvciBwaHlzaW9sb2dpY2FsIGNoYW5nZS4gVGhleSBhcmUgcmVndWxhdGVkIGJ5IGludGVybmFsIGFuZCBleHRlcm5hbCBzdGltdWxpLCBidXQgdGhleSBkb24ndCBzdG9yZSBnZW5ldGljIGluZm9ybWF0aW9uLlxuXG4oZSkgU2tpbiBjZWxsczogU2tpbiBjZWxscyBhcmUgc29tYXRpYyBjZWxscyB0aGF0IGNvbnN0aXR1dGUgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBza2luLiBUaGV5IGNvbnRhaW4gZ2VuZXRpYyBtYXRlcmlhbCwgYnV0IHRoZXkgZG8gbm90IGhvbGQgdGhlIHNwZWNpZmljIGluc3RydWN0aW9ucyBmb3IgaG93IHRyYWl0cyB3aWxsIGJlIGV4cHJlc3NlZCAtIHRoYXQgaW5mb3JtYXRpb24gaXMgZm91bmQgaW4gdGhlIEROQSwgbm90YWJseSB3aXRoaW4gY2hyb21vc29tZXMuXG5cbihmKSBFbmRvY3JpbmUgc3lzdGVtOiBUaGUgZW5kb2NyaW5lIHN5c3RlbSBpcyBhIGdyb3VwIG9mIGdsYW5kcyB0aGF0IHNlY3JldGUgaG9ybW9uZXMsIHdoaWNoIHJlZ3VsYXRlIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBib2R5LiBJdCBjb250cm9scyBtYW55IGFzcGVjdHMgb2Ygb3VyIGJvZHkgZnVuY3Rpb25zIGJ1dCBkb2Vzbid0IHN0b3JlIGdlbmV0aWMgaW5mb3JtYXRpb24uXG5cbihoKSBQcm90ZWluczogUHJvdGVpbnMgYXJlIGVzc2VudGlhbCBtb2xlY3VsZXMgdGhhdCBwbGF5IG1hbnkgcm9sZXMgaW4gdGhlIGJvZHksIGluY2x1ZGluZyBhY3RpbmcgYXMgZW56eW1lcywgc3RydWN0dXJhbCBjb21wb25lbnRzLCBhbmQgc2lnbmFsaW5nIG1vbGVjdWxlcy4gVGhleSdyZSBjcmVhdGVkIGJhc2VkIG9uIGluc3RydWN0aW9ucyBmcm9tIHRoZSBETkEgYnV0IGRvIG5vdCBjb250YWluIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIGl0c2VsZi5cblxuSW4gc3VtbWFyeSwgY2hyb21vc29tZXMgYXJlIHRoZSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgY2VsbCBudWNsZXVzIHRoYXQgY2FycnkgdGhlIGdlbmV0aWMgbWF0ZXJpYWwgKEROQSksIHdoaWNoIGluY2x1ZGVzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvcmdhbmlzbSdzIHRyYWl0cy4gVGhlIG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdCBiZWNhdXNlIHRoZXkgcmVmZXIgdG8gZW50aXRpZXMsIHByb2Nlc3Nlcywgb3IgbWVjaGFuaXNtcyB0aGF0IGRvIG5vdCBzdG9yZSBvciBkaXJlY3RseSBjb250YWluIHRoZSBnZW5ldGljIGluZm9ybWF0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpbmhlcml0ZWQgdHJhaXRzLiIsICJmaW5hbF9hbnN3ZXIiOiAiZyJ9fV0sICI3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBhcmUgdGhlIG1ham9yIHByb2R1Y2VycyBpbiB0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgR3Jhc3MgKGIpIEFuaW1hbHMgKGMpIEFwcGxlcyAoZCkgUG90YXRvZXMgKGUpIFRyZWVzIChmKSBQbGFudHMgKGcpIEZ1bmdpIChoKSBGaWVsZHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiMS4gKipHcmFzcyAoYSkqKiAtIFdoaWxlIGdyYXNzIGlzIGluZGVlZCBhIHByb2R1Y2VyLCBvciBhdXRvdHJvcGhpYyBvcmdhbmlzbSwgaW4gdGhlIGJpb2xvZ2ljYWwgc2Vuc2UsIGl0IGlzbid0IHR5cGljYWxseSBlbXBoYXNpemVkIGFzIGEgbWFqb3IgcHJvZHVjZXIgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHF1ZXN0aW9uIGJlY2F1c2UgaXQgaXMgbW9yZSBjb21tb24gYW5kIGxlc3MgdmFyaWVkIHRoYW4gb3RoZXIgcGxhbnQgZm9ybXMuXG5cbjIuICoqQW5pbWFscyAoYikqKiAtIEFuaW1hbHMgYXJlIGNvbnN1bWVycyAoaGV0ZXJvdHJvcGhzKSB0aGF0IGNhbm5vdCBwcm9kdWNlIHRoZWlyIG93biBmb29kLCBzbyB0aGV5IGFyZSBub3QgcHJvZHVjZXJzLlxuXG4zLiAqKkFwcGxlcyAoYykqKiAtIExpa2UgZ3Jhc3MsIGFwcGxlcyBhcmUgYSB0eXBlIG9mIHBsYW50IHByb2R1Y3QsIGJ1dCB0aGV5IGFyZSBkZXJpdmVkIGZyb20gcHJvZHVjZXJzICh0cmVlcyBiZWFyaW5nIGFwcGxlcyksIG5vdCBwcm9kdWNlcnMgdGhlbXNlbHZlcy5cblxuNC4gKipQb3RhdG9lcyAoZCkqKiAtIFBvdGF0b2VzIGFyZSBhbiBhZ3JpY3VsdHVyYWwgY3JvcCwgYW5kIGxpa2UgYXBwbGVzLCB0aGV5IGFyZSBkZXJpdmVkIGZyb20gcGxhbnRzLiBUaGV5J3JlIG5vdCBwcm9kdWNlcnMsIGJ1dCB0aGUgcHJvZHVjZXJzIGFyZSB0aGUgcG90YXRvIHBsYW50cy5cblxuNS4gKipGaWVsZHMgKGgpKiogLSBBIGZpZWxkIHJlZmVycyB0byBhbiBhZ3JpY3VsdHVyYWwgYXJlYSB3aGVyZSBjcm9wcyBhcmUgZ3Jvd24uIEl0J3Mgbm90IGEgcHJvZHVjZXIgaXRzZWxmLCBidXQgY2FuIGNvbnRhaW4gcHJvZHVjZXJzIHN1Y2ggYXMgZ3JhaW5zLCB2ZWdldGFibGVzLCBvciBvdGhlciBjcm9wcy5cblxuNi4gKipQbGFudHMgKGYpKiogLSBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gUGxhbnRzLCBpbiBnZW5lcmFsLCBhcmUgcHJvZHVjZXJzIHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgcGhvdG9zeW50aGVzaXMsIHdoaWNoIGNvbnZlcnRzIGxpZ2h0IGVuZXJneSBpbnRvIGNoZW1pY2FsIGVuZXJneSB0aGF0IGNhbiBiZSBsYXRlciByZWxlYXNlZCB0byBmdWVsIHRoZSBvcmdhbmlzbSdzIGFjdGl2aXRpZXMuXG5cbjcuICoqRnVuZ2kgKGcpKiogLSBBbHRob3VnaCBmdW5naSBhcmUgYXV0b3Ryb3BoaWMsIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvICd0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbicgYXMgbWFqb3IgZmFjdG9ycy4gV2hpbGUgZnVuZ2kgY2FuIGluZGVlZCBwaG90b3N5bnRoZXNpemUgKGxpa2UgYWxnYWUpLCB0aGV5IGFyZSBvZnRlbiBjb25zaWRlcmVkIGRlY29tcG9zZXJzLCBtb3JlIHJlbGV2YW50IHRvIHRlbXBlcmF0dXJlIGFuZCB3YXN0ZSBjeWNsaW5nIGluIGFuIGVjb3N5c3RlbSByYXRoZXIgdGhhbiBwcmltYXJ5IHByb2R1Y2Vycy5cblxuSW4gY29uY2x1c2lvbiwgdGhlIHByaW1hcnkgcHJvZHVjZXJzIGFyZSAqKnBsYW50cyoqIGJlY2F1c2UgdGhleSBhcmUgdGhlIG1haW4gZW50aXRpZXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIHN1bmxpZ2h0LCBjYXJib24gZGlveGlkZSwgYW5kIHdhdGVyIGludG8gY29tcGxleCBzdWdhcnMgdGhyb3VnaCBwaG90b3N5bnRoZXNpcywgdXNpbmcgdGVtcGVyYXR1cmUgYW5kIGxpZ2h0IChhIGNvbXBvbmVudCBvZiBwcmVjaXBpdGF0aW9uIGVmZmVjdHMgdmlhIGV2YXBvdHJhbnNwaXJhdGlvbikgYXMgcHJpbWFyeSBmYWN0b3JzLiBBbmltYWxzLCBmdW5naSwgYXBwbGVzLCBwb3RhdG9lcywgYW5kIGZpZWxkcyBkbyBub3QgZGlyZWN0bHkgZW5nYWdlIGluIHRoaXMgcHJvY2VzcyBpbiB0aGUgc2FtZSB3YXkgYXMgcGxhbnRzLCBhbmQgdGh1cywgYXJlIG5vdCBwcmltYXJ5IHByb2R1Y2Vycy4iLCAiZmluYWxfYW5zd2VyIjogImYifX1dLCAiOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGNoYW5nZSB2ZWdldGF0aW9uIGludG8/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNjYXJjZSByZXNvdXJjZXMgKGIpIEhhcm1mdWwgc3Vic3RhbmNlcyAoYykgU2NhcnMgKGQpIEZvc3NpbCBmdWVscyAoZSkgU2VkaW1lbnQgKGYpIFNvbWV0aGluZyB0byBtb3ZlIChnKSBNYWdpYyAoaCkgUGljbmljcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJhKSBTY2FyY2UgcmVzb3VyY2VzIC0gVGhpcyBvcHRpb24gc3VnZ2VzdHMgdGhhdCBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIG1ha2VzIHZlZ2V0YXRpb24gc2NhcmNlIHJlc291cmNlcy4gVGhpcyBpcyBub3QgY29ycmVjdCBiZWNhdXNlIHNvaWwgYW5kIG11ZCBiZWluZyBhIGJ1cmlhbCBsb2NhdGlvbiBkb2VzIG5vdCBpbXBseSB0aGUgdmVnZXRhdGlvbiBpdCBjb250YWlucyBiZWNvbWVzIHNjYXJjZS4gVGhlIHZlZ2V0YXRpb24gaXRzZWxmIHdvdWxkbid0IGJlY29tZSBzY2FyY2UgZHVlIHRvIGJ1cmlhbDsgcmF0aGVyLCBpdCBtYXkgY29udHJpYnV0ZSB0byB0aGUgZm9ybWF0aW9uIG9mIGZvc3NpbCBmdWVscy5cblxuYikgSGFybWZ1bCBzdWJzdGFuY2VzIC0gVmVnZXRhdGlvbiBidXJpZWQgaW4gc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gaW50byBoYXJtZnVsIHN1YnN0YW5jZXMuIFdoaWxlIGl0J3MgdHJ1ZSB0aGF0IG92ZXIgZ2VvbG9naWNhbCB0aW1lc2NhbGVzLCBkZWNvbXBvc2l0aW9uIHByb2Nlc3NlcyBjYW4gcHJvZHVjZSB2YXJpb3VzIHN1YnN0YW5jZXMsIHRoZSBpbW1lZGlhdGUgcmVzdWx0IG9mIGJ1cmlhbCBpc24ndCB0aGUgY3JlYXRpb24gb2YgaGFybWZ1bCBzdWJzdGFuY2VzLiBUaGUgY29ycmVjdCBhbnN3ZXIgaW52b2x2ZXMgYSBwcm9jZXNzIHRoYXQgbGVhZHMgdG8gYSBtb3JlIGNvbXBsZXggZm9zc2lsIGZ1ZWwsIG5vdCBqdXN0IGhhcm1mdWwgc3Vic3RhbmNlcy5cblxuYykgU2NhcnMgLSBUaGlzIGFuc3dlciBjaG9pY2Ugc3VnZ2VzdHMgdGhlIHZlZ2V0YXRpb24gdHJhbnNmb3JtcyBpbnRvIHNjYXJzLiBTY2FycyBhcmUgaW5qdXJpZXMgb3Igd291bmRzIG9uIGFuIG9yZ2FuaXNtLCBhbmQgdGhlcmUgaXMgbm8gYmlvbG9naWNhbCBvciBnZW9sb2dpY2FsIHByb2Nlc3MgYnkgd2hpY2ggYnVyaWFsIHVuZGVyIHNvaWwgYW5kIG11ZCB3b3VsZCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2Fycy5cblxuZikgU29tZXRoaW5nIHRvIG1vdmUgLSBUaGlzIGFuc3dlciBpbXBsaWVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgYnVyaWFsIHByb2Nlc3MgaXMgc29tZXRoaW5nIHVzZWQgZm9yIG1vdmVtZW50LiBIb3dldmVyLCBmb3NzaWwgZnVlbHMsIGZvcm1lZCBvdmVyIG1pbGxpb25zIG9mIHllYXJzLCBhcmVuJ3QgdXNlZCBkaXJlY3RseSBmb3IgbW92ZW1lbnQgYnV0IGFyZSBzb3VyY2VzIG9mIGVuZXJneSB3aGVuIGNvbWJ1c3RlZC4gVGhleSBkb24ndCBiZWNvbWUnc29tZXRoaW5nIHRvIG1vdmUnIGluIGFueSBpbW1lZGlhdGUgb3IgZGlyZWN0IHNlbnNlLlxuXG5nKSBNYWdpYyAtIFRoaXMgb3B0aW9uIGlzIG5vdCBhIHNjaWVudGlmaWMgb3IgZmFjdHVhbCBhbnN3ZXIuIFRoZSBwcm9jZXNzIG9mIGhvdyB2ZWdldGF0aW9uIHRyYW5zZm9ybXMgaW50byBmb3NzaWwgZnVlbHMgaXMgYSBuYXR1cmFsIGdlb2xvZ2ljYWwgcHJvY2Vzcywgbm90IGEgbWFnaWNhbCBvbmUuXG5cbmgpIFBpY25pY3MgLSBUaGlzIG9wdGlvbiBpcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgYmlvbG9naWNhbCBvciBnZW9sb2dpY2FsIHByb2Nlc3MgZGVzY3JpYmVkIGluIHRoZSBxdWVzdGlvbi4gUGljbmljIGl0ZW1zIGFyZSBodW1hbi1tYWRlIGFuZCBkb24ndCByZXN1bHQgZnJvbSB0aGUgdHJhbnNmb3JtYXRpb24gb2YgZGVhZCBwbGFudCBtYXRlcmlhbC5cblxuU28gdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChkKSBGb3NzaWwgZnVlbHMsIGJlY2F1c2UgdGhpcyBpcyB0aGUgbmF0dXJhbCBwcm9jZXNzIGJ5IHdoaWNoIGRlYWQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGJlY29tZXMgcGFydCBvZiB0aGUgZm9zc2lsIGZ1ZWwgZGVwb3NpdHMuIEZvc3NpbCBmdWVscyBmb3JtIGZyb20gdGhlIHJlbWFpbnMgb2YgZGVhZCBwbGFudHMgYW5kIGFuaW1hbHMgdGhhdCBoYXZlIGJlZW4gYnVyaWVkIGFuZCBzdWJqZWN0ZWQgdG8gaW1tZW5zZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIG1pbGxpb25zIG9mIHllYXJzLiIsICJmaW5hbF9hbnN3ZXIiOiAiZCJ9fV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiV2hlbiBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhLCBpdCdzIG5vdCBkdWUgdG86XG5cbihhKSBLZWVwaW5nIHRoZWlyIGJvZHkgaGVhdCAtIFRoaXMgaXMgdHlwaWNhbGx5IGluZmx1ZW5jZWQgYnkgc2Vhc29uYWwgY2hhbmdlcyBvciB3ZWF0aGVyIGNvbmRpdGlvbnMsIG5vdCB0aGUgcGh5c2ljYWwgYWN0IG9mIG1vdmluZyB0byBhbm90aGVyIGFyZWEuIFdoaWxlIHRlbXBlcmF0dXJlIGNhbiBiZSBhIGZhY3RvciBpbiBtaWdyYXRpb24sIGl0IGRvZXNuJ3QgZHJpdmUgdGhlIGRlY2lzaW9uIGZvciB0aGUgbW92ZW1lbnQgaXRzZWxmLlxuXG4oYikgUmV1c2luZyBtYXRlcmlhbHMgLSBUaGlzIG9wdGlvbiByZWZlcnMgdG8gcmVjeWNsaW5nIG9yIHJldXNpbmcgcGh5c2ljYWwgb2JqZWN0cyBhbmQgaGFzIG5vIGRpcmVjdCBjb3JyZWxhdGlvbiB0byBhbmltYWwgbWlncmF0aW9uIG9yIG1vdmVtZW50LlxuXG4oZCkgQmVpbmcgYm9yZWQgLSBCb3JlZG9tIGlzIGEgaHVtYW4gY29uc3RydWN0IGFuZCBkb2Vzbid0IGRpcmVjdGx5IGFwcGx5IHRvIGFuaW1hbHMnIGJlaGF2aW9yYWwgZGVjaXNpb25zLiBBbmltYWxzIGFyZSBkcml2ZW4gYnkgaW5zdGluY3RzIGFuZCBiYXNpYyBuZWVkcyByYXRoZXIgdGhhbiBib3JlZG9tLlxuXG4oZikgSGF2aW5nIHRvbyBtdWNoIG1vbmV5IC0gVGhpcyBpcyBhbiBlY29ub21pYyBjb25jZXB0IHRoYXQgZG9lc24ndCBhcHBseSB0byBhbmltYWxzLCBhcyB0aGV5IGRvbid0IGhhdmUgY3VycmVuY3kgb3IgZmluYW5jaWFsIHJlc291cmNlcy5cblxuKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAtIFRoZXNlIGFyZSBzcGVjaWZpYyB0eXBlcyBvZiBlY29zeXN0ZW1zLCBhbmQgd2hpbGUgYW5pbWFscyBtYXkgaW5oYWJpdCB0aGVzZSBhcmVhcyBvciBtb3ZlIHRvIHRoZW0gZm9yIHZhcmlvdXMgcmVhc29ucywgbWVyZWx5IGV4cGxhaW5pbmcgd2hlcmUgdGhleSBtaWdodCBnbyBkb2Vzbid0IGFkZHJlc3Mgd2h5IHRoZXkgbW92ZS5cblxuKGcpIFdhcm0gYWlyIG1vdmluZyBpbnRvIGNvbGQgYWlyIC0gVGhpcyBkZXNjcmliZXMgYXRtb3NwaGVyaWMgcGhlbm9tZW5hIGFuZCBkb2VzIG5vdCBpbmZsdWVuY2UgdGhlIG1vdmVtZW50IG9mIGFuaW1hbHMuXG5cbihoKSBIYXZpbmcgdG9vIG11Y2ggZm9vZCAtIFdoaWxlIGFuaW1hbHMgbWlnaHQgbWlncmF0ZSB0byBhdm9pZCBhcmVhcyBvZiBvdmVyLWNvbXBldGl0aW9uIGZvciBmb29kIHJlc291cmNlcywgdGhlIHBocmFzZSAndG9vIG11Y2ggZm9vZCcgaXMgbm90IGEgbG9naWNhbCBtb3RpdmF0b3IgZm9yIG1vdmluZyB0byBhIG5ldyBhcmVhLiBUb28gbXVjaCBmb29kIHdvdWxkIG1lYW4gdGhleSdyZSBhbHJlYWR5IGluIGEgZ29vZCBsb2NhdGlvbiwgbmVnYXRpbmcgdGhlIG5lZWQgZm9yIG1pZ3JhdGlvbi5cblxuKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAtIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIGFuaW1hbHMgb2Z0ZW4gbWlncmF0ZSBpbiByZXNwb25zZSB0byBzY2FyY2l0eSBpbiB0aGVpciBjdXJyZW50IGhhYml0YXQuIEluYWRlcXVhdGUgZm9vZCBhdmFpbGFiaWxpdHkgY2FuIGxlYWQgdG8gc3RhcnZhdGlvbiwgcHJvbXB0aW5nIGEgbW92ZW1lbnQgdG8gYXJlYXMgd2hlcmUgcmVzb3VyY2VzIGFyZSBtb3JlIGFidW5kYW50LiBUaGV5IGFyZSBzZWVraW5nIHRvIGVuc3VyZSB0aGVpciBzdXJ2aXZhbCBhbmQgcmVwcm9kdWN0aW9uLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYykgYXMgaXQgaXMgdGhlIG1vc3QgbG9naWNhbCBleHBsYW5hdGlvbiBmb3IgYW5pbWFsIG1vdmVtZW50IHRvIGFub3RoZXIgYXJlYSBiYXNlZCBvbiBzdXJ2aXZhbCBuZWVkcywgcGFydGljdWxhcmx5IGZvb2QgYXZhaWxhYmlsaXR5LiIsICJmaW5hbF9hbnN3ZXIiOiAiYyJ9fV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICIxLiBSZWFkIHRoZSBxdWVzdGlvbjogJ0EgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD8nXG4gICAgLSBUaGUgcXVlc3Rpb24gYXNrcyBhYm91dCB0aGUgZm9ybSBvZiBlbmVyZ3kgdGhhdCBhIGZpcmVjcmFja2VyIHRyYW5zZm9ybXMgY2hlbWljYWwgZW5lcmd5IGludG8uXG5cbjIuIElkZW50aWZ5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIG9wdGlvbnM6XG4gICAtIGEpIEtpbmV0aWMgZW5lcmd5XG4gICAtIGIpIExvdWQgbm9pc2VzXG4gICAtIGMpIFZpYnJhdGluZyB3YXZlc1xuICAgLSBkKSBBbiBvYmplY3QgaXMgc2VlblxuICAgLSBlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5XG4gICAtIGYpIERlb3h5cmlib251Y2xlaWMgYWNpZFxuICAgLSBnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuXG4gICAtIGgpIEhhcm1mdWwgc3Vic3RhbmNlc1xuXG4zLiBEZXRlcm1pbmUgd2hpY2ggb3B0aW9ucyBhcmUgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2U6XG4gICAtIEtpbmV0aWMgZW5lcmd5IGNvdWxkIGJlIGEgcmVzdWx0IG9mIHRoZSBmaXJlY3JhY2tlcidzIGV4cGxvc2lvbiwgYnV0IGl0IGlzIG5vdCB0aGUgbW9zdCBkaXJlY3Qgb3Igc3BlY2lmaWMgdHJhbnNmb3JtYXRpb24uXG4gICAtIExvdWQgbm9pc2VzIGFyZSBhIGJ5cHJvZHVjdCBidXQgZG8gbm90IHJlcHJlc2VudCBlbmVyZ3kuXG4gICAtIFZpYnJhdGluZyB3YXZlcyBtYXkgcmVzdWx0IGZyb20gdGhlIGV4cGxvc2lvbiwgYnV0IHRoZXkgYXJlIGFsc28gYSBieXByb2R1Y3QgcmF0aGVyIHRoYW4gdGhlIHByaW1hcnkgY29udmVydGVkIGVuZXJneS5cbiAgIC0gQW4gb2JqZWN0IGlzIHNlZW46IFRoaXMgaXMgbm90IGEgZm9ybSBvZiBlbmVyZ3kuXG4gICAtIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgaXMgbm90IHRoZSBwcmltYXJ5IGZvcm0gb2YgZW5lcmd5IGNvbnZlcnNpb24gaW4gYSBmaXJlY3JhY2tlci5cbiAgIC0gRGVveHlyaWJvbnVjbGVpYyBhY2lkIChETkEpIGlzIG9yZ2FuaWMgbWF0ZXJpYWwgYW5kIGlzIG5vdCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgY29udmVyc2lvbiBhdCBwbGF5LlxuICAgLSBIeWRyb2dlbiBhbmQgb3h5Z2VuIGFyZSBlbGVtZW50cyBwcm9kdWNlZCBpbiB0aGUgY2hlbWljYWwgcmVhY3Rpb24gYnV0IG5vdCB0aGUgZm9ybSBvZiBlbmVyZ3kgaXRzZWxmLlxuICAgLSBIYXJtZnVsIHN1YnN0YW5jZXMgYXJlIGJ5cHJvZHVjdHMgYnV0IG5vdCB0aGUgZm9ybSBvZiBlbmVyZ3kuXG5cbjQuIFRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYyk6XG4gICAtIFZpYnJhdGluZyB3YXZlczogV2hpbGUgZmlyZWNyYWNrZXJzIGRvIGluZGVlZCBwcm9kdWNlIHZpYnJhdGlvbnMgKHdoaWNoIGNhbiBmZWx0IG9yIGhlYXJkIGFzIHNvdW5kKSwgdGhlIG1vc3QgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gaXMgbm90IGxpc3RlZCBkaXJlY3RseS5cblxuNS4gRXhwbGFuYXRpb24gb2Ygd2h5IG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdDpcbiAgIC0gYSkgS2luZXRpYyBlbmVyZ3k6IFdoaWxlIGtpbmV0aWMgZW5lcmd5IGlzIGludm9sdmVkIGluIHRoZSBleHBsb3Npb24sIGl0IGlzIG5vdCB0aGUgaW1tZWRpYXRlIGFuZCBwcmltYXJ5IGNvbnZlcnNpb24gZm9ybS5cbiAgIC0gYikgTG91ZCBub2lzZXM6IFRoaXMgaXMgYSByZXN1bHQgb2YgdGhlIGV4cGxvc2lvbiBidXQgbm90IGEgZm9ybSBvZiBlbmVyZ3kuXG4gICAtIGQpIEFuIG9iamVjdCBpcyBzZWVuOiBUaGlzIHN0YXRlbWVudCBpcyBpcnJlbGV2YW50IHRvIGVuZXJneSBjb252ZXJzaW9uLlxuICAgLSBlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5OiBBbHRob3VnaCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgcmVsZWFzZWQgZHVyaW5nIHRoZSBleHBsb3Npb24gKGxpZ2h0IGFuZCBzb3VuZCksIGl0IGlzIG5vdCB0aGUgbW9zdCBkaXJlY3QgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnZlcnNpb24gZnJvbSBjaGVtaWNhbCB0byBhbm90aGVyIGZvcm0uXG4gICAtIGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKTogTm90IHJlbGF0ZWQgdG8gdGhlIGVuZXJneSB0cmFuc2Zvcm1hdGlvbiBwcm9jZXNzLlxuICAgLSBnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuOiBQcm9kdWNlZCBlbGVtZW50cyBidXQgbm90IGZvcm1zIG9mIGVuZXJneS5cbiAgIC0gaCkgSGFybWZ1bCBzdWJzdGFuY2VzOiBCeXByb2R1Y3RzIGJ1dCBub3QgZm9ybXMgb2YgZW5lcmd5LlxuXG5JbiBjb25jbHVzaW9uLCB3aGlsZSBhIGZpcmVjcmFja2VyIHByaW1hcmlseSBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byBraW5ldGljIGVuZXJneSBhbmQgdmlicmF0aW9ucyAoc291bmQgd2F2ZXMpLCB0aGUgY2xvc2VzdCBvcHRpb24gcHJvdmlkZWQgaXMgKGMpIFZpYnJhdGluZyB3YXZlcywgaW5kaWNhdGluZyB0aGUgbW9zdCBldmlkZW50IHBoeXNpY2FsIGVmZmVjdCBhbmQgZm9ybSBvZiBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gZnJvbSBjaGVtaWNhbCBlbmVyZ3kgYXQgdGhlIGVsZW1lbnRhcnkgbGV2ZWwuIiwgImZpbmFsX2Fuc3dlciI6ICJjIn19XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiKGEpIE1ham9yIGVmZmVjdHM6XG5UaGlzIHRlcm0gY291bGQgcG90ZW50aWFsbHkgcmVsYXRlIHRvIGdlbmV0aWNzLCBidXQgaXQncyBhIGdlbmVyYWwgdGVybSB0aGF0IGNvdWxkIGRlc2NyaWJlIHRoZSBlZmZlY3RzIG9mIG11bHRpcGxlIGdlbmVzIG9uIGEgcGhlbm90eXBlLCByYXRoZXIgdGhhbiBhIHNwZWNpZmljIHJlc3VsdC4gVGh1cywgaXQncyBub3QgYSBkaXJlY3QgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbiBhc2tpbmcgZm9yIGEgc3BlY2lmaWMgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLlxuXG4oYikgUmVzcGlyYXRpb246XG5SZXNwaXJhdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyBpbnZvbHZpbmcgdGhlIGV4Y2hhbmdlIG9mIGdhc2VzIChveHlnZW4gYW5kIGNhcmJvbiBkaW94aWRlKSB0aGF0IG9jY3VycyBpbiBsaXZpbmcgb3JnYW5pc21zLiBXaGlsZSBnZW5lIGludGVyYWN0aW9ucyBjYW4gaW5mbHVlbmNlIG1ldGFib2xpYyBwcm9jZXNzZXMgaW5jbHVkaW5nIHJlc3BpcmF0aW9uLCB0aGUgdGVybSAncmVzcGlyYXRpb24nIGl0c2VsZiBpcyBub3QgYSByZXN1bHQgZGlyZWN0bHkgc3RlbW1pbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cblxuKGMpIFJvbGV4OlxuQSBSb2xleCBpcyBhIGx1eHVyeSB3cmlzdHdhdGNoLiBUaGlzIG9wdGlvbiBpcyBpcnJlbGV2YW50IHRvIHRoZSBjb250ZXh0IG9mIGdlbmV0aWNzIGFuZCB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cblxuKGQpIERlbnNpdHk6XG5EZW5zaXR5IGlzIGEgcGh5c2ljYWwgcHJvcGVydHkgb2YgbWF0dGVyIGFuZCBkb2VzIG5vdCBkaXJlY3RseSByZWxhdGUgdG8gZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIG11bHRpcGxlIGdlbmVzLlxuXG4oZSkgRGlwaHRoZXJpYTpcbkRpcGh0aGVyaWEgaXMgYSBiYWN0ZXJpYWwgZGlzZWFzZTsgd2hpbGUgZ2VuZXMgY2FuIGluZmx1ZW5jZSBzdXNjZXB0aWJpbGl0eSB0byBjZXJ0YWluIGRpc2Vhc2VzLCAnZGlwaHRoZXJpYScgaXRzZWxmIGlzbid0IGEgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzIGJ1dCByYXRoZXIgYW4gZWZmZWN0IG9mIGEgcGF0aG9nZW5pYyBiYWN0ZXJpdW0gKENvcnluZWJhY3Rlcml1bSBkaXBodGhlcmlhZSkuXG5cbihmKSBDYW5pcyBsdXB1czpcbkNhbmlzIGx1cHVzIGlzIHRoZSBzY2llbnRpZmljIG5hbWUgZm9yIHRoZSBncmF5IHdvbGYsIGEgc3BlY2llcy4gVGhpcyBpcyBub3QgYSByZXN1bHQgYXJpc2luZyBmcm9tIHRoZSBpbnRlcmFjdGlvbiBvZiBtdWx0aXBsZSBnZW5lcyBpbiBhIGdlbmV0aWMgY29udGV4dDsgaXQgcmVmZXJzIHRvIGEgdGF4b25vbWljIGNsYXNzaWZpY2F0aW9uLlxuXG4oZykgU2tpbiBjb2xvcjpcblNraW4gY29sb3IgaXMgb2Z0ZW4gaW5mbHVlbmNlZCBieSB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcywgaW5jbHVkaW5nIHRob3NlIHJlc3BvbnNpYmxlIGZvciB0aGUgcHJvZHVjdGlvbiBvZiBtZWxhbmluLCB3aGljaCBnaXZlcyBza2luIGl0cyBjb2xvci4gVGhpcyBpcyBhIGRpcmVjdCByZXN1bHQgb2YgZ2VuZXRpYyBmYWN0b3JzLlxuXG4oaCkgRGlnZXN0aW9uOlxuTGlrZSByZXNwaXJhdGlvbiwgZGlnZXN0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIGludm9sdmluZyBtdWx0aXBsZSBzdGVwcyBhbmQgb3JnYW5zLiBXaGlsZSBnZW5lcyBjZXJ0YWlubHkgcGxheSBhIHJvbGUgaW4gcmVndWxhdGluZyBkaWdlc3RpdmUgcHJvY2Vzc2VzIChlLmcuLCBlbnp5bWVzIGludm9sdmVkIGluIGRpZ2VzdGlvbiksICdkaWdlc3Rpb24nIGFzIGEgcHJvY2VzcyByYXRoZXIgdGhhbiBhIHJlc3VsdCBvZiBnZW5ldGljIGludGVyYWN0aW9uIGlzbid0IGFzIHNwZWNpZmljIGFzIHNraW4gY29sb3IgZm9yIGEgZ2VuZXRpYyB0cmFpdCdzIHJlc3VsdC5cblxuVGh1cywgKGcpIFNraW4gY29sb3IgaXMgdGhlIG1vc3Qgc3BlY2lmaWMgYW5kIGRpcmVjdCByZXN1bHQgb2YgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIEFsdGhvdWdoIG90aGVyIHByb2Nlc3NlcyAocmVzcGlyYXRpb24sIGRpZ2VzdGlvbikgbWlnaHQgYmUgaW5mbHVlbmNlZCBieSBnZW5lIGludGVyYWN0aW9ucywgdGhleSByZWZlciB0byBvbmdvaW5nIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBhIHNwZWNpZmljLCBvYnNlcnZhYmxlIG91dGNvbWUgbGlrZSBza2luIGNvbG9yLiIsICJmaW5hbF9hbnN3ZXIiOiAiZyJ9fV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIHJlYXNvbmluZyBhbmQgdGhlIGZpbmFsIGFuc3dlciBpbiBhIGpzb24gbGlrZToge1wicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj4sIFwiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiKGEpICoqU2hlZXAqKjogU2hlZXAgYXJlIGhlcmJpdm9yZXMsIHByaW1hcmlseSBmZWVkaW5nIG9uIGdyYXNzZXMgYW5kIG90aGVyIHBsYW50cy4gVGhleSB0eXBpY2FsbHkgY2Fubm90IGZlZWQgYXQgbXVsdGlwbGUgdHJvcGhpYyBsZXZlbHMuXG5cbihiKSAqKlNhbG1vbioqOiBXaGlsZSBzYWxtb24gY2FuIHZhcnkgaW4gdGhlaXIgZGlldCwgdGhleSBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdG8gYmUgcHJpbWFyaWx5IHBpc2Npdm9yZXMgKGZpc2gtZWF0aW5nIHByZWRhdG9ycykgYW5kIGRvIG5vdCBmZWVkIG9uIHBsYW50cy4gVGhlcmVmb3JlLCBhbHRob3VnaCB0aGVpciBkaWV0IGNhbiBjaGFuZ2UgYmFzZWQgb24gdGhlaXIgbGlmZSBzdGFnZSwgdGhleSBkb24ndCBnZW5lcmFsbHkgZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwuXG5cbihjKSAqKkdyYXNzZXMqKjogR3Jhc3NlcyBhcmUgcGxhbnRzLCBzcGVjaWZpY2FsbHkgbW9ub2NvdHMgdXN1YWxseSBmb3VuZCBpbiB0aGUgb3JkZXIgUG9hbGVzLiBUaGV5IGFyZSBhdXRvdHJvcGhzLCBtZWFuaW5nIHRoZXkgcHJvZHVjZSB0aGVpciBvd24gZm9vZCB0aHJvdWdoIHBob3Rvc3ludGhlc2lzLiBUaGV5IGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsIGJlY2F1c2UgdGhleSBhcmUgbm90IGNvbnN1bWVycyBidXQgcHJvZHVjZXJzLlxuXG4oZCkgKipCYXRzKio6IEJhdHMgYXJlIHR5cGljYWxseSBjb25zaWRlcmVkIGluc2VjdGl2b3JlcywgZmVlZGluZyBwcmltYXJpbHkgb24gaW5zZWN0cy4gU29tZSBiYXQgc3BlY2llcyBhbHNvIGVhdCBmcnVpdHMgb3IgbmVjdGFyLCBidXQgdGhleSBkb24ndCBjcm9zcyB0cm9waGljIGxldmVscy4gVGhleSBmZWVkIGF0IGEgc2luZ2xlIHRyb3BoaWMgbGV2ZWwsIGVpdGhlciBhcyBjb25zdW1lcnMgb2YgaW5zZWN0cyAocHJpbWFyeSBjb25zdW1lcnMpIG9yIGZydWl0cyAob21uaXZvcmVzKS5cblxuKGUpICoqQW5pbWFscyoqOiBUaGlzIGlzIGEgYnJvYWQgdGVybSBlbmNvbXBhc3NpbmcgbWFueSBkaWZmZXJlbnQgb3JnYW5pc21zLCBidXQgaXQgZG9lc24ndCBzcGVjaWZpY2FsbHkgcmVmZXIgdG8gYSB0cm9waGljIGxldmVsLiBBbGwgYW5pbWFscyBhcmUgY29uc3VtZXJzIGFuZCB0aGVyZWZvcmUgYmVsb25nIHRvIGF0IGxlYXN0IG9uZSB0cm9waGljIGxldmVsLCBidXQgdGhleSBtYXkgb2NjdXB5IGRpZmZlcmVudCBsZXZlbHMgZGVwZW5kaW5nIG9uIHRoZWlyIGRpZXQuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpbXBsaWVzIGEgc2luZ2xlIGxldmVsLCBzbyB0aGlzIGlzbid0IGEgc2F0aXNmYWN0b3J5IGFuc3dlci5cblxuKGYpICoqU2hydWJzKio6IFNpbWlsYXIgdG8gZ3Jhc3Nlcywgc2hydWJzIGFyZSBhdXRvdHJvcGhpYyBvcmdhbmlzbXMuIFRoZXkgYXJlIGNvbnN1bWVycyBvZiBhaXIgYW5kIHdhdGVyLCBwYXJ0aWN1bGFybHkgc3VubGlnaHQsIHRocm91Z2ggcGhvdG9zeW50aGVzaXMuIFRoZXkgZG8gbm90IGZlZWQgYXQgYW55IHRyb3BoaWMgbGV2ZWwuXG5cbihnKSAqKkh1bWFucyoqOiBIdW1hbnMgYXJlIG9tbml2b3JlcywgbWVhbmluZyB0aGV5IGNhbiBjb25zdW1lIGJvdGggcGxhbnQgYW5kIGFuaW1hbCBtYXR0ZXIuIFdoaWxlIGl0IG1pZ2h0IHNlZW0gbGlrZSB0aGV5IGNyb3NzIHRyb3BoaWMgbGV2ZWxzIGJ5IGNvbnN1bWluZyBmb29kcyBmcm9tIGRpZmZlcmVudCBzb3VyY2VzLCBpbmRpdmlkdWFsIG1lYWxzIGRvIG5vdCBxdWFsaWZ5IGFzIGNyb3NzaW5nIHRyb3BoaWMgbGV2ZWxzLiBDcm9zc2luZyB0cm9waGljIGxldmVscyB3b3VsZCBpbXBseSBhIGNvbnNpc3RlbnQgZGlldCB3aGVyZSBvbmUgaXMgYW4gYW5pbWFsIGNvbnN1bWVyIGFuZCBhbm90aGVyIGEgcGxhbnQgY29uc3VtZXIsIHdoaWNoIGh1bWFucywgYXMgb21uaXZvcmVzLCBkbyBub3Qgc3RyaWN0bHkgYWRoZXJlIHRvLlxuXG4oaCkgKipUcmVlcyoqOiBUcmVlcyBiZWxvbmcgdG8gdGhlIHBsYW50IGtpbmdkb20sIG1vcmUgc3BlY2lmaWNhbGx5IHRvIHRoZSBkaXZpc2lvbiBUcmFjaGVvcGh5dGEsIGFuZCBsaWtlIHNocnVicyBhbmQgZ3Jhc3NlcywgdGhleSBhcmUgYXV0b3Ryb3BoaWMgYW5kIGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsLlxuXG5Ob25lIG9mIHRoZSBnaXZlbiBvcHRpb25zIGluZGljYXRlIGEgbGlmZXN0eWxlIHRoYXQgY29uc2lzdGVudGx5IGludm9sdmVzIGZlZWRpbmcgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLiBcblxuVGhlIGNvcnJlY3QgYW5zd2VyIGNob2ljZSBzaG91bGQgYmV0dGVyIHJlZmxlY3QgYW4gb3JnYW5pc20gdGhhdCwgdW5kZXIgZGlmZmVyZW50IGNpcmN1bXN0YW5jZXMgb3Igc3BlY2lmaWMgY29uZGl0aW9ucywgbWlnaHQgY29uc3VtZSBlbnRpdGllcyBmcm9tIG11bHRpcGxlIHRyb3BoaWMgbGV2ZWxzLCBidXQgdGhlIHByb3ZpZGVkIGNob2ljZXMgZG8gbm90IGZpdCB0aGF0IGRlc2NyaXB0aW9uIGRpcmVjdGx5LiBIb3dldmVyLCBzaW5jZSB0aGUgcXVlc3Rpb24gaXMgYXNraW5nIGZvciBhIGJpb2xvZ2ljYWwgZW50aXR5LCBodW1hbnMsIHdpdGggdGhlaXIgZGl2ZXJzZSBkaWV0IGFzcGVjdCwgYXJlIGNvbnNpZGVyZWQgb21uaXZvcmVzIGNhcGFibGUgb2YgY29uc3VtaW5nIHBsYW50cyBhbmQgYW5pbWFscy4gVGhlcmVmb3JlLCBodW1hbnMgY291bGQgYmUgaW5jb3JyZWN0bHkgcGVyY2VpdmVkIGFzIGZpdHRpbmcgdGhlIGRlc2NyaXB0aW9uIG9mICdmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbCwnIGJ1dCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoaXMgbXVsdGlwbGUtY2hvaWNlIGZvcm1hdCBhbmQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMsIG5vbmUgYXBwcm9wcmlhdGVseSBkaXNwbGF5IHRoaXMgY2FwYWJpbGl0eS4gSGVuY2UsIHRoZSBjbG9zZXN0IGFsdGhvdWdoIG1pc2xlYWRpbmcgYW5zd2VyIG1pZ2h0IGJlIChhKSBTaGVlcCwgc2luY2UgdGhlIHF1ZXN0aW9uIGluY29ycmVjdGx5IGFzc3VtZXMgdGhlcmUgZXhpc3RzIGFuIG9wdGlvbiB0aGF0IGZpdHMgdGhlIHRyb3BoaWMgbGV2ZWwgY3Jvc3NpbmcgZGVzY3JpcHRpb24gYW1vbmcgdGhlIHByb3ZpZGVkIGNob2ljZXMuIiwgImZpbmFsX2Fuc3dlciI6ICJhIn19XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJMZXQncyBhbmFseXplIGVhY2ggYW5zd2VyIGNob2ljZTpcblxuKGEpICoqQmF0cyoqOiBXaGlsZSBiYXRzIGFyZSBpbmRlZWQgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIHRoZXkgYXJlIG5vdCB0aGUgYmVzdCBhbnN3ZXIgZm9yIHRoaXMgcXVlc3Rpb24uIEl0J3MgcG9zc2libGUgdGhleSB3ZXJlIGluY2x1ZGVkIHRvIHRlc3QgaWYgeW91IGNvbnNpZGVyIHNwZWNpYWxpemVkIGhpYmVybmF0aW5nIG1hbW1hbHMuXG5cbihiKSAqKlNpZGV3YWxrcyoqOiBTaWRld2Fsa3MgYXJlIGluYW5pbWF0ZSBvYmplY3RzIGFuZCBkbyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBzaGl2ZXIuIFRoZXkgY2Fubm90IGdlbmVyYXRlIG9yIGNvbnRyb2wgYm9keSBoZWF0LlxuXG4oYykgKipIdW1hbnMqKjogSHVtYW5zIGNhbiBkZWZpbml0ZWx5IHNoaXZlci4gU2hpdmVyaW5nIGlzIGEgcGh5c2lvbG9naWNhbCByZXNwb25zZSBpbiBodW1hbnMgYW5kIG1hbnkgYW5pbWFscyB3aGVyZSByaHl0aG1pYyBtdXNjbGUgY29udHJhY3Rpb25zIGdlbmVyYXRlIGhlYXQgdG8gaGVscCBtYWludGFpbiBib2R5IHRlbXBlcmF0dXJlLCBlc3BlY2lhbGx5IGR1cmluZyBjb2xkIGNvbmRpdGlvbnMuXG5cbihkKSAqKkJlZXMqKjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIFNoaXZlcmluZywgaW4gdGhpcyBiaW9sb2dpY2FsIGNvbnRleHQsIGlzIGFsc28ga25vd24gYXMgJ3RheGlsbGF0aW9uJyBpbiBiZWVzLiBJdCdzIGEgcmVzcG9uc2UgdG8gY29sZCB0ZW1wZXJhdHVyZXMgd2hlcmUgYmVlcyBjbHVzdGVyIHRoZWlyIGJvZGllcyB0b2dldGhlciBhbmQgc2hpdmVyIHRvIGdlbmVyYXRlIHdhcm10aCBhbmQgY29uc2VydmUgaXQuXG5cbihlKSAqKktvYWxhcyoqOiBXaGlsZSBrb2FsYXMgYXJlIG1hbW1hbHMgYW5kIGNhcGFibGUgb2Ygc29tZSBmb3JtcyBvZiBzaGl2ZXJpbmcsIHRoZSB0ZXJtICdzaGl2ZXInIGlzIHR5cGljYWxseSB1c2VkIGluIGEgY29udGV4dCBvZiByYXBpZCBtdXNjbGUgY29udHJhY3Rpb25zIHRvIGdlbmVyYXRlIGhlYXQgaW4gcmVzcG9uc2UgdG8gY29sZCB0ZW1wZXJhdHVyZXMuIEtvYWxhcywgYmVpbmcgZWN0b3RoZXJtaWMgKGNvbGQtYmxvb2RlZCksIGRvbid0IHNoaXZlciBpbiB0aGUgc2FtZSBjb250ZXh0IGFzIG1hbW1hbHMgbGlrZSBodW1hbnMgb3IgYmVlcy4gVGhleSBtYWludGFpbiB0aGVpciBib2R5IHRlbXBlcmF0dXJlIHRocm91Z2ggZXh0ZXJuYWwgc291cmNlcywgbGlrZSBzdW4gZXhwb3N1cmUsIGFuZCBnZW5lcmFsbHkgZG9uJ3Qgc2hpdmVyIGluIHJlc3BvbnNlIHRvIGNvbGQgYXMgbWFtbWFscyBkby5cblxuKGYpICoqTW91bnRhaW5zKio6IE1vdW50YWlucyBhcmUgaW5hbmltYXRlIGdlb2dyYXBoaWNhbCBmZWF0dXJlcyBhbmQgZG8gbm90IHBvc3Nlc3MgdGhlIGFiaWxpdHkgdG8gc2hpdmVyIG9yIHJlZ3VsYXRlIGJvZHkgdGVtcGVyYXR1cmUgaW4gYW55IG1hbm5lci5cblxuKGcpICoqVHJlZXMqKjogVHJlZXMsIGJlaW5nIHBsYW50cywgZG8gbm90IGhhdmUgdGhlIGNlbGx1bGFyIGFuZCBwaHlzaW9sb2dpY2FsIGNhcGFjaXR5IHRvIHNoaXZlciBvciBnZW5lcmF0ZSBoZWF0IHRocm91Z2ggbXVzY2xlIGNvbnRyYWN0aW9ucy5cblxuKGgpICoqUGVvcGxlKiogKHJlcGVhdGVkIGZyb20gKGMpKTogVGhpcyBpcyBhIHJlcGVhdCBvZiB0aGUgY29ycmVjdCBhbnN3ZXIgZm9yIGh1bWFucywgcG9zc2libHkgdG8gdGVzdCBpZiB5b3UncmUgcGF5aW5nIGF0dGVudGlvbiBvciBpZiB5b3UgbWlnaHQgdHJ5IHRvIHNlbGVjdCBpdCBhZ2FpbiB1bmludGVudGlvbmFsbHkuXG5cblNvLCB3aGlsZSAoYykgJ0h1bWFucycgaXMgdGVjaG5pY2FsbHkgY29ycmVjdCwgdGhlIGludGVuZGVkIGFuc3dlciBpcyAoZCkgJ0JlZXMnLCB3aGljaCBpbmNsdWRlcyBhIGJyb2FkZXIgYW5kIG1vcmUgc3BlY2lmaWMgZ3JvdXAgdGhhdCBjYW4gc2hpdmVyIHdpdGhpbiB0aGUgY29udGV4dCBvZiBiaW9sb2dpY2FsIHNoaXZlcmluZyBtZWNoYW5pc21zLiBUaGUgb3RoZXIgY2hvaWNlcyBkbyBub3QgcmVsYXRlIHRvIHNoaXZlcmluZyBiZWNhdXNlIHRoZXkgYXJlIGVpdGhlciBub3QgbGl2aW5nIGJlaW5ncyAoYiwgZiwgZywgaCkgb3Igbm90IGNhcGFibGUgb2Ygc2hpdmVyaW5nIGFzIGEgbWVjaGFuaXNtIGZvciB0aGVybW9yZWd1bGF0aW9uIChhLCBlKS4iLCAiZmluYWxfYW5zd2VyIjogImQifX1dLCAiMTQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBLaXR0ZW5zIHRoYXQgYXJlIHByYWN0aWNpbmcgaHVudGluZyBpcyBhbiBleGFtcGxlIG9mIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIExlYXJuaW5nIGJlaGF2aW9yIChiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlcyAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbiAoZSkgQmFkIGJlaGF2aW9yIChmKSBMZWFybmluZyBub3RoaW5nIChnKSBFeHRpbmd1aXNoaW5nIGJlaGF2aW9yIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiXG4qKk9wdGlvbiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IqKjogS2l0dGVucyBodW50aW5nIGlzIGEgY2xlYXIgZXhhbXBsZSBvZiB0aGVtIGxlYXJuaW5nIHN1cnZpdmFsIHNraWxscyBhbmQgYmVoYXZpb3JzLiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGVpciBkZXZlbG9wbWVudCBhcyB0aGV5IGdyb3cgaW50byBhZHVsdCBjYXRzLiBUaGlzIGFsaWducyB3aXRoIHRoZSBjb25jZXB0IG9mIGxlYXJuaW5nIGJlaGF2aW9yLlxuXG4qKk9wdGlvbiAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMqKjogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugd2hpbGUgY2F0cyBtYXkgY29tcGV0ZSBmb3IgcmVzb3VyY2VzIGxpa2UgZm9vZCBpbiB0aGUgd2lsZCwgdGhlIGJlaGF2aW9yIG9mIGh1bnRpbmcga2l0dGVucyBpcyBtb3JlIGFib3V0IGxlYXJuaW5nIGEgc2tpbGwgdGhhbiBjb21wZXRpbmcgZm9yIHJlc291cmNlcy4gSXQncyBub3QgcHJpbWFyaWx5IGFib3V0IHdobyBnZXRzIHdoYXQuXG5cbioqT3B0aW9uIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uKio6IFRoZXNlIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IGFzIHRoZXkgZGVzY3JpYmUgY2hhcmFjdGVyaXN0aWNzIG9yIGJyb2FkZXIgY29udGV4dHMgXHUyMDEzIHdhcm0tYmxvb2RlZCByZWZlcnMgdG8gdGhlIHBoeXNpb2xvZ2ljYWwgdHJhaXQgb2YgYmVpbmcgYWJsZSB0byByZWd1bGF0ZSBib2R5IHRlbXBlcmF0dXJlLCBhbmQgY29tcGV0aXRpb24gY291bGQgYXBwbHkgbW9yZSBicm9hZGx5IHRvIHNpdHVhdGlvbnMgaW52b2x2aW5nIGNvbmZsaWN0cyBiZXR3ZWVuIG9yIGFtb25nIGluZGl2aWR1YWxzIG9yIGdyb3VwcyBjaGFzaW5nIHRoZSBzYW1lIGdvYWwsIHdoaWNoIGlzIG5vdCBzcGVjaWZpY2FsbHkgcmVsZXZhbnQgdG8gYSBraXR0ZW4gcHJhY3RpY2luZyBodW50aW5nLlxuXG4qKk9wdGlvbiAoZSkgQmFkIGJlaGF2aW9yKio6IFRoaXMgb3B0aW9uIGlzIGluYWNjdXJhdGUuIFdoaWxlIGh1bnRpbmcgYmVoYXZpb3IgbWlnaHQgdG8gYSBodW1hbiBvYnNlcnZlciBzZWVtIGhhcm1mdWwgKGUuZy4sIGEga2l0dGVuIHBvdW5jaW5nIG9uIGEgdG95IG1vdXNlKSwgaXQgaXMgZXNzZW50aWFsIGFuZCBpbnN0aW5jdHVhbCBmb3IgdGhlIGtpdHRlbidzIHN1cnZpdmFsIGFuZCBkb2VzIG5vdCBxdWFsaWZ5IGFzICdiYWQnIGluIGFuIGV0aGljYWwgc2Vuc2UuXG5cbioqT3B0aW9uIChmKSBMZWFybmluZyBub3RoaW5nKio6IFRoaXMgaXMgaW5jb3JyZWN0IGJlY2F1c2Uga2l0dGVucyBhcmUgYWN0aXZlbHkgaW52b2x2ZWQgaW4gbGVhcm5pbmcgdGhyb3VnaCBwbGF5LCBhbmQgaHVudGluZyBtaW1pY3MgcmVhbC1saWZlIHNjZW5hcmlvcyB3aGVyZSB0aGV5IGdhdGhlciBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciBwcmV5LlxuXG4qKk9wdGlvbiAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvcioqOiBUaGlzIG9wdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gJ0V4dGluZ3Vpc2hpbmcgYmVoYXZpb3InIHVzdWFsbHkgcmVmZXJzIHRvIGFjdGlvbnMgdGFrZW4gdG8gcHJldmVudCBvciBlbmQgYSBiZWhhdmlvciwgd2hpY2ggaXMgbm90IHdoYXQga2l0dGVucyBhcmUgZG9pbmcgd2hpbGUgcHJhY3RpY2luZyBodW50aW5nLiBcblxuKipPcHRpb24gKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyoqOiBUaGlzIGlzIGFsc28gbm90IGNvcnJlY3QgYXMgaXQgaXMgYSBwaHlzaWNhbCBjb25jZXB0IGRlc2NyaWJpbmcga2luZXRpYyBlbmVyZ3kuIFdoaWxlIGh1bnRpbmcgZG9lcyBpbnZvbHZlIHBoeXNpY2FsIGFjdGl2aXR5IHRoYXQgY29uc3VtZXMgZW5lcmd5LCBpdCBkb2Vzbid0IGFjY3VyYXRlbHkgY2FwdHVyZSBvciBkZXNjcmliZSB0aGUga2l0dGVucycgYmVoYXZpb3IgaW4gdGhpcyBjb250ZXh0LlxuXG5JbiBzdW1tYXJ5LCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgJ0xlYXJuaW5nIGJlaGF2aW9yJyAoYSkgYmVjYXVzZSBraXR0ZW5zIGh1bnRpbmcgaXMgYSBmb3JtIG9mIHBsYXkgd2hlcmUgdGhleSBsZWFybiBjcnVjaWFsIHNraWxscyBuZWVkZWQgZm9yIHN1cnZpdmFsLiBUaGUgb3RoZXIgb3B0aW9ucyBhcmUgbm90IGNvcnJlY3QgYXMgdGhleSBlaXRoZXIgZG8gbm90IGRpcmVjdGx5IGRlc2NyaWJlIHRoZSBiZWhhdmlvciBvciBtaXNpbnRlcnByZXQgdGhlIGNvbnRleHQgb3IgbWVhbmluZyBvZiB0aGUga2l0dGVuJ3MgYWN0aW9ucy4iLCAiZmluYWxfYW5zd2VyIjogImEifX1dLCAiMTUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciByZWFzb25pbmcgYW5kIHRoZSBmaW5hbCBhbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+LCBcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBCdXJuaW5nIChiKSBXaW50ZXIgKGMpIE11dGF0aW9ucyAoZCkgQ29va2luZyAoZSkgQ3ljbGVzIChmKSBTdW1tZXIgKGcpIEZyZWV6aW5nIChoKSBHdW5zaG90cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJBbnN3ZXI6IChhKSBCdXJuaW5nXG5cbkV4cGxhbmF0aW9uOiBcbi0gKGIpIFdpbnRlcjogV2ludGVyIGlzIGEgc2Vhc29uIGNoYXJhY3Rlcml6ZWQgYnkgY29sZCB0ZW1wZXJhdHVyZXMgYW5kIHRoZSBhYnNlbmNlIG9mIHN1bmxpZ2h0LiBJdCBoYXMgbm8gZGlyZWN0IHJlbGF0aW9uc2hpcCB3aXRoIGVuZXJneSBwcm9kdWN0aW9uIGFmdGVyIGRlYXRoLlxuXG4tIChjKSBNdXRhdGlvbnM6IE11dGF0aW9ucyBhcmUgY2hhbmdlcyBpbiBETkEgdGhhdCBjYW4gbGVhZCB0byBnZW5ldGljIHZhcmlhdGlvbnMuIFRoZXkgb2NjdXIgaW4gbGl2aW5nIG9yZ2FuaXNtcyBhbmQgZG9uJ3QgYXBwbHkgdG8gZGVhZCBvcmdhbmlzbXMgc3RhcnRlZCBnZW5lcmF0aW5nIG5ldyBlbmVyZ3kuXG5cbi0gKGQpIENvb2tpbmc6IFRoaXMgaXMgYSBwcm9jZXNzIG9mIHByZXBhcmluZyBmb29kIHVzaW5nIGhlYXQuIEl0J3MgYSBtZXRob2Qgbm90IHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGVuZXJneSBnZW5lcmF0aW9uIGFmdGVyIGFuIG9yZ2FuaXNtJ3MgZGVhdGguXG5cbi0gKGUpIEN5Y2xlczogV2hpbGUgY2VydGFpbiBiaW9sb2dpY2FsIHByb2Nlc3NlcyBsaWtlIHRoZSBjYXJib24gY3ljbGUgaW52b2x2ZSB0aGUgdHJhbnNmb3JtYXRpb24gb2Ygb3JnYW5pYyBtYXR0ZXIsIHRoZXNlIGN5Y2xlcyB0YWtlIHRpbWUgYW5kIG9jY3VyIG5hdHVyYWxseSB3aXRoaW4gdGhlIGVjb3N5c3RlbS4gVGhleSBkbyBub3QgcmVsYXRlIGRpcmVjdGx5IHRvIHRoZSBpbW1lZGlhdGUgZ2VuZXJhdGlvbiBvZiBlbmVyZ3kgcG9zdC1kZWF0aC5cblxuLSAoZikgU3VtbWVyOiBTaW1pbGFyIHRvIHdpbnRlciwgc3VtbWVyIGlzIGp1c3QgYW5vdGhlciBzZWFzb24gd2l0aCB3YXJtIGNvbmRpdGlvbnMgYW5kIG1vcmUgc3VubGlnaHQuIEl0IGRvZXMgbm90IGRlc2NyaWJlIGEgcHJvY2VzcyB0aGF0IHByb2R1Y2VzIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLlxuXG4tIChnKSBGcmVlemluZzogRnJlZXppbmcgaXMgYSBwcm9jZXNzIHRoYXQgY2FuIHByZXNlcnZlIGJpb2xvZ2ljYWwgdGlzc3VlcyBidXQgZG9lcyBub3QgZ2VuZXJhdGUgZW5lcmd5IG9uY2UgYW4gb3JnYW5pc20gaXMgZGVhZC5cblxuLSAoaCkgR3Vuc2hvdHM6IFRoaXMgdW5yZWxhdGVkIG9wdGlvbiByZWZlcnMgdG8gYSBzb3VyY2Ugb2YgcGh5c2ljYWwgaW1wYWN0IG9yIHNvdW5kLCBub3QgZW5lcmd5IHByb2R1Y3Rpb24gYnkgZGVhZCBvcmdhbmlzbXMuXG5cbkluIHJlYWxpdHksIGRlYWQgb3JnYW5pc21zIGNhbiBpbmRpcmVjdGx5IGNvbnRyaWJ1dGUgdG8gZW5lcmd5IGNyZWF0aW9uIHRocm91Z2ggZGVjb21wb3NpdGlvbiwgYSBuYXR1cmFsIHByb2Nlc3Mgd2hlcmUgZGVjb21wb3NlcnMgbGlrZSBiYWN0ZXJpYSBhbmQgZnVuZ2kgYnJlYWsgZG93biBvcmdhbmljIG1hdGVyaWFsLCByZWxlYXNpbmcgbnV0cmllbnRzIGJhY2sgaW50byB0aGUgZWNvc3lzdGVtLiBIb3dldmVyLCB0aGlzIHByb2Nlc3MgZG9lc24ndCBmYWxsIHVuZGVyIHRoZSBsaXRlcmFsIGludGVycHJldGF0aW9uIG9mICdEZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSBhZnRlciB3aGF0PycuIFRoZXJlZm9yZSwgdGhlIGNsb3Nlc3QgYW5kIGNvbmNlcHR1YWxseSByZWxldmFudCBhbnN3ZXIgd291bGQgYmUgdG8gYnVybiBvciBkZWNvbXBvc2UsIGJ1dCBzaW5jZSAnQnVybmluZycgaW4gdGhlIGNvbnRleHQgb2YgYmlvbG9naWNhbCBwcm9jZXNzZXMgdXN1YWxseSBkb2Vzbid0IHJlZmVyIHRvIHRoZSBuYXR1cmFsIGRlY29tcG9zaW5nIHByb2Nlc3Mgb2YgZGVhZCBvcmdhbmlzbXMsIG9wdGlvbiAoYSkgYXMgcHJlc2VudGVkIGluIHRoZSBjaG9pY2VzIGlzIG5vdCB0ZWNobmljYWxseSBjb3JyZWN0LiBcblxuVGhlIGxhaWQtb3V0IGV4cGxhbmF0aW9uIGZvciB3aHkgdGhlIG90aGVyIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHdoeSAnQnVybmluZycgaXNuJ3QgdGhlIHByZWNpc2UgYW5zd2VyIGluIHRoZSBjb250ZXh0IGdpdmVuLCBkZXNwaXRlIGJlaW5nIHRoZSBjbG9zZXN0IHRvIHRoZSBhY3R1YWwgbmF0dXJhbCBwcm9jZXNzIGludm9sdmluZyBkZWFkIG9yZ2FuaXNtcyBjcmVhdGluZyBlbmVyZ3kuIiwgImZpbmFsX2Fuc3dlciI6ICJhIn19XSwgIjE2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogVHVybmluZyBvbiB3aGF0IHdpbGwgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBWZWhpY2xlcyAoYikgU2F0ZWxsaXRlcyAoYykgTGlnaHQgYnVsYiAoZCkgQnVzZXMgKGUpIEZpcmVjcmFja2VycyAoZikgU2Vuc29yeSBuZXVyb25zIChnKSBBbiBvYmplY3QgKGgpIEVuZ2luZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiKGEpIFZlaGljbGVzOiBXaGlsZSB2ZWhpY2xlcywgaW4gZ2VuZXJhbCwgY29udGFpbiBkZXZpY2VzIHRoYXQgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiAobGlrZSBlbmdpbmUgaWduaXRpb24gc3lzdGVtcyksIHRoZXkgYXJlIG5vdCB0aGUgcHJpbWFyeSBtZWFucyBvZiBlbWl0dGluZyBzdWNoIHJhZGlhdGlvbiBpbnRlbnRpb25hbGx5LlxuXG4oYikgU2F0ZWxsaXRlczogU2ltaWxhciB0byB2ZWhpY2xlcywgc2F0ZWxsaXRlcyBtYXkgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIChmb3IgY29tbXVuaWNhdGlvbiwgbmF2aWdhdGlvbiwgZXRjLiksIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG1haW4gdG9vbHMgdXNlZCBmb3IgZW1pdHRpbmcgdGhpcyByYWRpYXRpb24gd2l0aG91dCBzcGVjaWZpYyBwdXJwb3NlLlxuXG4oYykgTGlnaHQgYnVsYjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYXMgaXQgZW1pdHMgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgc3BlY2lmaWNhbGx5IGluIHRoZSBmb3JtIG9mIGxpZ2h0LCB3aGVuIGVsZWN0cmljaXR5IHBhc3NlcyB0aHJvdWdoIHRoZSBmaWxhbWVudC5cblxuKipFeHBsYW5hdGlvbiBmb3IgKGMpOioqIEEgbGlnaHQgYnVsYiBmdW5jdGlvbnMgYnkgcGFzc2luZyBhbiBlbGVjdHJpYyBjdXJyZW50IHRocm91Z2ggYSBjb25kdWN0b3IgY2FsbGVkIGEgZmlsYW1lbnQuIFRoZSByZXNpc3RhbmNlIG9mIHRoZSBmaWxhbWVudCBjYXVzZXMgaXQgdG8gaGVhdCB1cCBhbmQgZ2xvdywgZW1pdHRpbmcgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgcHJpbWFyaWx5IGluIHRoZSB2aXNpYmxlIHNwZWN0cnVtIChsaWdodCkuXG5cbihkKSBCdXNlczogTGlrZSB2ZWhpY2xlcywgYnVzZXMgbWlnaHQgY29udGFpbiBkZXZpY2VzIHRoYXQgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBidXQgdGhleSBhcmUgbm90IHRoZSBwcmltYXJ5IHRvb2wgZm9yIHRoaXMgZW1pc3Npb24uXG5cbihlKSBGaXJlY3JhY2tlcnM6IFdoaWxlIHRoZXkgZG8gZW1pdCBsaWdodCBhbmQgaGVhdCAod2hpY2ggYXJlIHR5cGVzIG9mIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24pLCB0aGV5IGFyZSBub3QgYSBkZWxpYmVyYXRlIG1ldGhvZCBmb3IgZ2VuZXJhdGluZyBlbGVjdHJvbWFnbmV0aWMgd2F2ZXMuXG5cbihmKSBTZW5zb3J5IG5ldXJvbnM6IE5ldXJvbnMsIGluY2x1ZGluZyBzZW5zb3J5IG5ldXJvbnMsIGNhcnJ5IGVsZWN0cmljYWwgc2lnbmFscyByZWxhdGVkIHRvIHNlbnNvcnkgaW5wdXQgYW5kIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gaW4gdGhlIGJyb2FkIHNlbnNlIHJlcXVpcmVkIGJ5IHRoZSBxdWVzdGlvbi5cblxuKGcpIEFuIG9iamVjdDogVGhpcyBpcyB0b28gdmFndWUgdG8gcHJvdmlkZSBhIGNvcnJlY3QgYW5zd2VyLiBOb3QgYWxsIG9iamVjdHMgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSB3YXkgdGhlIHF1ZXN0aW9uIGlzIGFza2luZy5cblxuKGgpIEVuZ2luZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIGVuZ2luZXMgY29udGFpbiBkZXZpY2VzIHRoYXQgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBkdXJpbmcgb3BlcmF0aW9uLCBzdWNoIGFzIGluIGlnbml0aW9uIHN5c3RlbXMsIGJ1dCB0aGlzIGlzIG5vdCB0aGUgcHJpbWFyeSBtZXRob2Qgb2YgZW1pdHRpbmcgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cblxuSW4gc3VtbWFyeSwgdGhlIG9ubHkgb3B0aW9uIGRpcmVjdGx5IGRlc2lnbmVkIHRvIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBhcyBpbnRlbmRlZCBieSB0aGUgcXVlc3Rpb24gaXMgKGMpIExpZ2h0IGJ1bGIuIiwgImZpbmFsX2Fuc3dlciI6ICJjIn19XSwgIjE3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlcmUgaXMgYSB6eWdvdGUgZm9ybWVkIGJ5IHNwZXJtIHN3aW1taW5nIHRvIGFuIGVnZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQ29sZGVyIGFuZCB3ZXR0ZXIgKGIpIE9jZWFuIHdhdGVyIChjKSBHcmFwdG9saXRlcyAoZCkgUmFwaWQgZXhwYW5zaW9uIChlKSBBIGRlbHRhIChmKSBBbiBhcmNoZWdvbml1bSAoZykgQmFybmFjbGVzIChoKSBBbiBvcmdhbmlzbSdzIGJvZHkifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJyZWFzb25pbmciOiAiTGV0J3MgYW5hbHl6ZSBlYWNoIG9wdGlvbjpcblxuKGEpIENvbGRlciBhbmQgd2V0dGVyOiBUaGlzIHBocmFzZSBkZXNjcmliZXMgYW4gZW52aXJvbm1lbnQsIGJ1dCBpdCBkb2Vzbid0IHNwZWNpZnkgd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLiBaeWdvdGVzIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGZvcm1lZCBpbiBjb2xkZXIgYW5kIHdldHRlciBlbnZpcm9ubWVudHM7IHJhdGhlciwgdGhleSBhcmUgZm9ybWVkIGluIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIG9yZ2FuaXNtcy5cblxuKGIpIE9jZWFuIHdhdGVyOiBXaGlsZSBlZ2dzIGFuZCBzcGVybSBmcm9tIGNlcnRhaW4gbWFyaW5lIG9yZ2FuaXNtcyBjYW4gYmUgZm91bmQgaW4gb2NlYW4gd2F0ZXIgYW5kIGZlcnRpbGl6YXRpb24gY2FuIG9jY3VyIHRoZXJlLCB0aGlzIGRvZXNuJ3QgYWRkcmVzcyB0aGUgZm9ybWF0aW9uIG9mIGEgenlnb3RlLiBUaGUgenlnb3RlIGl0c2VsZiBpcyB0aGUgcmVzdWx0IG9mIGZlcnRpbGl6YXRpb24sIHdoaWNoIG9jY3VycyB3aXRoaW4gdGhlIHJlcHJvZHVjdGl2ZSBzeXN0ZW1zIG9mIHRoZSBvcmdhbmlzbXMuXG5cbihjKSBHcmFwdG9saXRlczogR3JhcHRvbGl0ZXMgYXJlIGFuIGV4dGluY3QgZ3JvdXAgb2YgY29sb25pYWwgYW5pbWFscywgc3BlY2lmaWNhbGx5LCB0aGV5IHdlcmUgYSB0eXBlIG9mIFBhbGVvem9pYyBtYXJpbmUgaW52ZXJ0ZWJyYXRlLiBaeWdvdGUgZm9ybWF0aW9uIGlzIG5vdCBkaXJlY3RseSBsaW5rZWQgdG8gZ3JhcHRvbGl0ZXMgYmVjYXVzZSB0aGV5IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGl0LiBaeWdvdGUgZm9ybWF0aW9uIGhhcHBlbnMgd2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiBsaXZpbmcgb3JnYW5pc21zLlxuXG4oZCkgUmFwaWQgZXhwYW5zaW9uOiBUaGlzIHJlc2VtYmxlcyBhIHBoeXNpY2FsIHByb2Nlc3MgYnV0IGRvZXMgbm90IHBvaW50IHRvIGFueSBzcGVjaWZpYyBsb2NhdGlvbiBmb3Igenlnb3RlIGZvcm1hdGlvbi4gSXQncyBhIGNoYXJhY3RlcmlzdGljIG9mIGdyb3d0aCBvciBleHBhbnNpb24sIG5vdCBhIGxvY2F0aW9uLlxuXG4oZSkgQSBkZWx0YTogQSBkZWx0YSBpcyBhIGxhbmRmb3JtIGNyZWF0ZWQgYnkgc2VkaW1lbnRhcnkgZGVwb3NpdHMgYXQgdGhlIG1vdXRoIG9mIGEgcml2ZXIgd2hlcmUgaXQgbWVldHMgYSBsYXJnZXIgYm9keSBvZiB3YXRlci4gVGhpcyBnZW9ncmFwaGljYWwgZmVhdHVyZSBpcyBub3QgcmVsYXRlZCB0byB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkLlxuXG4oZykgQmFybmFjbGVzOiBCYXJuYWNsZXMgYXJlIG1hcmluZSBjcnVzdGFjZWFucywgYnV0IHRoZWlyIHJlcHJvZHVjdGlvbiBtZXRob2QgKGV4dGVybmFsIGZlcnRpbGl6YXRpb24pIGFuZCB0aGUgc3BlY2lmaWMgbG9jYXRpb24gb2Ygenlnb3RlIGZvcm1hdGlvbiAod2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtIG9mIHRoZSBiYXJuYWNsZSkgYXJlIG5vdCB0aGUgc2FtZSBhcyB0aG9zZSBmb3IgbW9zdCBvdGhlciBhbmltYWxzLiBGdXJ0aGVybW9yZSwgdGhlIHF1ZXN0aW9uIGRvZXNuJ3Qgc3BlY2lmeSB0aGUgb3JnYW5pc20gdHlwZSwgdGhlcmVieSBsZWFkaW5nIHRoaXMgYXMgYW4gaW5jb3JyZWN0IGNob2ljZSB3aXRob3V0IHRoYXQgYXNzdW1wdGlvbi5cblxuKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keTogVGhpcyBpcyBhIHZhZ3VlIG9wdGlvbiB0aGF0IGNvdmVycyBhIHdpZGUgcmFuZ2Ugb2YgZW52aXJvbm1lbnRzIHdpdGhpbiBhbiBvcmdhbmlzbSdzIGJvZHkuIFdoaWxlIHRoaXMgaXMgYnJvYWRseSBjb3JyZWN0LCBpdCdzIG5vdCBzcGVjaWZpYyBlbm91Z2gsIGFuZCB0aGUgZm9jdXMgc2hvdWxkIGJlIG9uIGEgc3BlY2lmaWMgaW5zdGFuY2UgKGxpa2Ugd2l0aGluIGFuIGVnZykuXG5cbk5vdywgbGV0J3MgZXhhbWluZSAoZikgYW4gYXJjaGVnb25pdW0uXG5cbkFuIGFyY2hlZ29uaXVtIGlzIGEgdHlwZSBvZiBzcGVjaWFsaXplZCByZXByb2R1Y3RpdmUgc3RydWN0dXJlIGZvdW5kIGluIG5vbi12YXNjdWxhciBwbGFudHMgKHN1Y2ggYXMgbW9zc2VzKSBhbmQgc29tZSBhbGdhZS4gSW5zaWRlIHRoZSBhcmNoZWdvbml1bSwgYSBmZW1hbGUgZ2FtZXRlIChlZ2cpIGlzIGZvcm1lZCwgYW5kIGZlcnRpbGl6YXRpb24gb2NjdXJzIHdoZW4gYSBzcGVybSBmcm9tIGFub3RoZXIgbWFsZSBnYW1ldGUgZW50ZXJzLiBUaGUgcmVzdWx0aW5nIHByb2R1Y3Qgb2YgdGhpcyBmZXJ0aWxpemF0aW9uIGlzIGEgenlnb3RlLiBcblxuSW4gc3VtbWFyeSwgKGYpIGlzIHRoZSBtb3N0IGFjY3VyYXRlIGFtb25nIHRoZSBvcHRpb25zIHByb3ZpZGVkIGFzIGl0IHNwZWNpZmljYWxseSBkZW5vdGVzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQ6IGluc2lkZSBhbiBhcmNoZWdvbml1bSB3aXRoaW4gYSBmZW1hbGUgcmVwcm9kdWN0aXZlIHRyYWN0IG9mIGNlcnRhaW4gcGxhbnRzLiBJdCBpcyBzcGVjaWZpYywgYmlvbG9naWNhbCwgYW5kIGFuYXRvbWljYWxseSBjb3JyZWN0IHdpdGhpbiB0aGUgY29udGV4dCBvZiBwbGFudCByZXByb2R1Y3Rpb24uIiwgImZpbmFsX2Fuc3dlciI6ICJmIn19XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7InJlYXNvbmluZyI6ICJUaGUgY29ycmVjdCBhbnN3ZXIgaXMgJ2cpIEFjaWQnIGJlY2F1c2UgaXQgY2FuIGNhdXNlIGNoZW1pY2FsIGJ1cm5zLCB0aXNzdWUgZGFtYWdlLCBhbmQgb3RoZXIgc2VyaW91cyBpbmp1cmllcyB0byB0aGUgZXllcyB3aGVuIGl0IGNvbWVzIGludG8gY29udGFjdCB3aXRoIHRoZSBleWVzLiBcblxuTGV0J3MgZ28gdGhyb3VnaCB0aGUgaW5jb3JyZWN0IGFuc3dlcnMgYW5kIGV4cGxhaW4gd2h5IHRoZXkncmUgbm90IGNvcnJlY3Q6XG5cbihhKSBNaWxkZXc6IE1pbGRldyBpcyBhIHR5cGUgb2YgZnVuZ3VzIHRoYXQgdGhyaXZlcyBpbiBkYW1wIGVudmlyb25tZW50cy4gV2hpbGUgaXQgY2FuIGNhdXNlIGFsbGVyZ2ljIHJlYWN0aW9ucyBpbiBzb21lIHBlb3BsZSwgaXQgZG9lcyBub3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy5cblxuKGIpIE5vcm1hbCB3YXRlcjogTm9ybWFsIHdhdGVyIGlzIGVzc2VudGlhbCBmb3IgbGlmZSBhbmQgZG9lcyBub3QgcG9zZSBoYXJtIHRvIGV5ZXMuIEluIGZhY3QsIGl0J3MgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgZXllIGhlYWx0aCBieSBrZWVwaW5nIHRoZW0gY2xlYW4gYW5kIG1vaXN0LlxuXG4oYykgSGVycGVzOiBXaGlsZSBpdCBjYW4gYWZmZWN0IHRoZSBza2luIGFyb3VuZCB0aGUgZXllcyBhbmQgY2F1c2UgY29uZGl0aW9ucyBsaWtlIEhlcnBlcyBTaW1wbGV4IFZpcnVzIGtlcmF0aXRpcywgaXQgaXNuJ3QgaW5oZXJlbnRseSBoYXJtZnVsIHRvIHRoZSBleWVzIGluIGEgZGlyZWN0IG1hbm5lciBsaWtlIGFjaWQuIFRoZSBoYXJtIGNvbWVzIGZyb20gY29tcGxpY2F0aW9ucyBvciBzZWNvbmRhcnkgYmFjdGVyaWFsIGluZmVjdGlvbnMgd2hlbiB0aGUgdmlydXMgYWZmZWN0cyB0aGUgZXllcy5cblxuKGQpIE5vcm1hbCBhaXI6IEFpciwgYXMgbG9uZyBhcyBpdCdzIGJyZWF0aGFibGUgYW5kIGZyZWUgZnJvbSBjb250YW1pbmFudHMsIGRvZXMgbm90IHBvc2UgYW55IHJpc2sgdG8gdGhlIGV5ZXMuIEl0J3MgYWN0dWFsbHkgbmVjZXNzYXJ5IGZvciB0aGUgZXllcyB0byBmdW5jdGlvbiBwcm9wZXJseS5cblxuKGUpIENvYWw6IENvYWwsIGEgY29tcG9zaXRlIG9mIG9yZ2FuaWMgbWF0ZXJpYWxzLCBkb2Vzbid0IGRpcmVjdGx5IGhhcm0gdGhlIGV5ZXMuIEhvd2V2ZXIsIGV4cG9zdXJlIHRvIGNvYWwgZHVzdCBjYW4gbGVhZCB0byByZXNwaXJhdG9yeSBpc3N1ZXMsIHdoaWNoIGluZGlyZWN0bHkgYWZmZWN0IGV5ZSBoZWFsdGguXG5cbihmKSBNb2xkOiBTaW1pbGFyIHRvIG1pbGRldywgbW9sZCBjYW4gY2F1c2UgYWxsZXJnaWVzIGFuZCByZXNwaXJhdG9yeSBwcm9ibGVtcyBidXQgZG9lc24ndCBkaXJlY3RseSBoYXJtIHRoZSBleWVzLiBJdCdzIHRoZSBhaXJib3JuZSBzcG9yZXMgYW5kIHJlYWN0aXZlIGNvbXBvdW5kcyB0aGF0IGNhbiBiZSBwcm9ibGVtYXRpYy5cblxuKGgpIENvbnRhY3Qgc29sdXRpb246IFR5cGljYWxseSwgYSBjb250YWN0IHNvbHV0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIHNhZmUgZm9yIHVzZSB3aXRoIGNvbnRhY3QgbGVuc2VzIGFuZCBkb2Vzbid0IGhhcm0gdGhlIGV5ZXMgaWYgdXNlZCBjb3JyZWN0bHkuIEFueSBwb3RlbnRpYWwgaGFybSB3b3VsZCBiZSBhIHJlc3VsdCBvZiBpbXByb3BlciB1c2Ugb3IgY29udGFtaW5hdGlvbi5cblxuSW4gc3VtbWFyeSwgd2hpbGUgYWxsIHRoZSBvcHRpb25zIGNhbiBwb3RlbnRpYWxseSBjYXVzZSBpbmRpcmVjdCBoYXJtIHVuZGVyIHNwZWNpZmljIGNpcmN1bXN0YW5jZXMsICdnKSBBY2lkJyBkaXJlY3RseSBhbmQgYWN1dGVseSBoYXJtcyB0aGUgZXllcywgbWFraW5nIGl0IHRoZSBjb3JyZWN0IGFuc3dlciB0byB0aGUgcXVlc3Rpb24uIiwgImZpbmFsX2Fuc3dlciI6ICJnIn19XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgcmVhc29uaW5nIGFuZCB0aGUgZmluYWwgYW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPiwgXCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsicmVhc29uaW5nIjogIjEuIFJlYWRpbmcgdGhlIHF1ZXN0aW9uIGFuZCBvcHRpb25zOiBXZSBhcmUgYXNrZWQgd2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZS5cblxuMi4gSWRlbnRpZnlpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG9wdGlvbnM6IFxuICAgLSBCYW1ib28sIERlc2ljY2F0aW9uLCBCdXJycywgRWxtcywgQ29hbCwgQ2FuZHksIGFuZCBNZWF0IGFyZSBhbGwgZGlmZmVyZW50IG9yZ2FuaWMgbWF0dGVyLCBidXQgbm90IGFsbCBvZiB0aGVtIGZvcm0gcGVhdCB1bmRlciB0aGUgbWVudGlvbmVkIGNvbmRpdGlvbnMuXG5cbjMuIERldGVybWluaW5nIHdoaWNoIG9wdGlvbnMgYXJlIG5vdCBsb2dpY2FsOlxuICAgLSAoYSkgQmFtYm9vOiBXaGlsZSBiYW1ib28gaXMgYSBwbGFudCwgaXQgdHlwaWNhbGx5IGdyb3dzIGluIHJlbGF0aXZlbHkgbWlsZCBjb25kaXRpb25zIGFuZCBkb2VzIG5vdCB0cmFuc2Zvcm0gaW50byBwZWF0IHVuZGVyIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXG4gICAtIChiKSBEZXNpY2NhdGlvbjogVGhpcyByZWZlcnMgdG8gdGhlIHByb2Nlc3Mgb2YgZHJ5aW5nIG91dCBhbmQgaXMgbm90IGEgZGlyZWN0IGNvbnRyaWJ1dG9yIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC4gSXQgZG9lc24ndCBpbnZvbHZlIHRoZSBuZWNlc3NhcnkgaGVhdCBhbmQgcHJlc3N1cmUuXG4gICAtIChjKSBCdXJyczogQnVycnMgYXJlIHNtYWxsIHNlZWQgYmFsbHMgYXR0YWNoZWQgdG8gcGxhbnRzLCBwcmltYXJpbHkgdXNlZCBieSBwbGFudHMgZm9yIGRpc3BlcnNhbC4gVGhleSBkb24ndCBmb3JtIHBlYXQuXG4gICAtIChkKSBFbG1zOiBUaGVzZSBhcmUgdHJlZXMgY29tbW9ubHkgZm91bmQgaW4gdGVtcGVyYXRlIHJlZ2lvbnMuIFRoZXkgY2FuIGRlY29tcG9zZSBvdmVyIHRpbWUgYnV0IGRvIG5vdCBmb3JtIHBlYXQgdW5kZXIgbm9ybWFsIG9yIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUuXG4gICAtIChlKSBNb3NzOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gTW9zcyBpcyBhIHR5cGUgb2Ygbm9uLXZhc2N1bGFyIGxhbmQgcGxhbnQgdGhhdCBncm93cyBpbiBkYW1wIGVudmlyb25tZW50cy4gT3ZlciBsb25nIHBlcmlvZHMsIHVuZGVyIGNvbmRpdGlvbnMgb2YgaGlnaCBwcmVzc3VyZSBhbmQgc2xvd2x5IGRlY29tcG9zaW5nIGluIHdhdGVyLXJpY2ggZW52aXJvbm1lbnRzLCBtb3NzIGNvbnRyaWJ1dGVzIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC5cbiAgIC0gKGYpIENvYWw6IENvYWwgZm9ybXMgZnJvbSB0aGUgcmVtYWlucyBvZiBwbGFudHMgdW5kZXIgaW50ZW5zZSBoZWF0IGFuZCBwcmVzc3VyZSBkZWVwIHdpdGhpbiB0aGUgRWFydGgncyBjcnVzdCwgYnV0IGl0IGRvZXNuJ3QgZm9ybSBwZWF0LiBQZWF0IGFuZCBjb2FsIGFyZSBkaXN0aW5jdCBnZW9sb2dpY2FsIGZvcm1hdGlvbnMuXG4gICAtIChnKSBDYW5keTogVGhpcyBpcyBub3Qgb3JnYW5pYyBtYXR0ZXIgdGhhdCBjYW4gdHJhbnNmb3JtIGludG8gcGVhdC4gSXQncyBhIHByb2Nlc3NlZCBmb29kIHByb2R1Y3QuXG4gICAtIChoKSBNZWF0OiBNZWF0IGRvZXMgbm90IGZvcm0gcGVhdC4gSXQgZGVjb21wb3NlcyBpbiBhIGRpZmZlcmVudCBtYW5uZXIgYW5kIGRvZXNuJ3QgY29udHJpYnV0ZSBkaXJlY3RseSB0byBwZWF0IGZvcm1hdGlvbi5cblxuNC4gUHJvdmlkaW5nIGV4cGxhbmF0aW9ucyBmb3IgaW5jb3JyZWN0IGFuc3dlcnM6XG4gICAtIEJhbWJvbywgQnVycnMsIEVsbXMsIENhbmR5LCBhbmQgTWVhdCBcdTIwMTMgVGhlc2Ugb3B0aW9ucyBhcmUgZWl0aGVyIG5vdCBwbGFudHMgb3IgZm9ybXMgb2Ygb3JnYW5pYyBtYXR0ZXIgdGhhdCBkb24ndCB1bmRlcmdvIHRoZSBzcGVjaWZpYyBjb25kaXRpb25zIChleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlKSByZXF1aXJlZCB0byBmb3JtIHBlYXQuXG4gICAtIERlc2ljY2F0aW9uIFx1MjAxMyBUaGlzIHByb2Nlc3MgaXMgdGhlIHJlbW92YWwgb2YgbW9pc3R1cmUgZnJvbSBhIHN1YnN0YW5jZSwgd2hpY2ggZG9lc24ndCBhbGlnbiB3aXRoIHRoZSBjb25kaXRpb25zIHJlcXVpcmVkIHRvIGZvcm0gcGVhdCAoaGlnaCB3YXRlciBjb250ZW50KS5cbiAgIC0gQ29hbCBcdTIwMTMgV2hpbGUgc2ltaWxhciB0byBwZWF0IGluIHRoYXQgaXQncyBmb3JtZWQgZnJvbSBwbGFudCBkZWJyaXMsIGl0J3MgZm9ybWVkIHVuZGVyIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGNvbmRpdGlvbnMgZGVlcCB3aXRoaW4gdGhlIEVhcnRoLCBub3QgdGhyb3VnaCBzdXJmYWNlIHByb2Nlc3NlcyBpbnZvbHZpbmcgbW9zcy5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGUpIE1vc3MgYmVjYXVzZSBpdCBpcyB0aGUgb25seSBvcHRpb24gYW1vbmcgdGhlIGNob2ljZXMgdGhhdCwgd2hlbiBzdWJqZWN0ZWQgdG8gY29uZGl0aW9ucyBvZiBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZSwgY2FuIGNvbnRyaWJ1dGUgdG8gdGhlIGZvcm1hdGlvbiBvZiBwZWF0LiIsICJmaW5hbF9hbnN3ZXIiOiAiZSJ9fV19LCAiY29udmVyc2F0aW9uX0ZBUl9ncHQzXzUiOiB7IjAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGlzIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IHVzZWQgZm9yIHByZWRpY3Rpbmc/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXMgKGIpIFRoZSBzdHJlbmd0aCBhbmQgbWFnbml0dWRlIG9mIGFuIGVhcnRocXVha2UgKGMpIFdoYXQgaXQncyBsaWtlIG91dHNpZGUgZWFjaCBkYXkgKGQpIDcwLTc1IGRlZ3JlZXMgZmFocmVuaGVpdCAoZSkgUmFwaWQgY2hhbmdlcyBvY2N1ciAoZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHMuIChnKSBTbm93LCBpY2UsIGFuZCByb2NrIChoKSBBcm91bmQgNSB0byAyNyBkZWdyZWVzIGNlbHNpdXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYyIsICJyZWFzb25pbmciOiAiYSkgU2Vjb25kcyBhbmQgbWludXRlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2Ugc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IHVzZWQgZm9yIHByZWRpY3RpbmcgdGltZSBpbnRlcnZhbHMuIFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIHVzZWQgZm9yIHZhcmlvdXMgcHVycG9zZXMgc3VjaCBhcyBjb21tdW5pY2F0aW9uLCBuYXZpZ2F0aW9uLCBhbmQgd2VhdGhlciBmb3JlY2FzdGluZywgYnV0IGl0IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHRpbWUgaW50ZXJ2YWxzLlxuXG5iKSBUaGUgc3RyZW5ndGggYW5kIG1hZ25pdHVkZSBvZiBhbiBlYXJ0aHF1YWtlOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBub3QgdXNlZCBmb3IgcHJlZGljdGluZyBlYXJ0aHF1YWtlcy4gRWFydGhxdWFrZSBwcmVkaWN0aW9uIGlzIGEgY29tcGxleCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgc2Vpc21vbG9neSBhbmQgb3RoZXIgc2NpZW50aWZpYyBtZXRob2RzLCBidXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgbm90IG9uZSBvZiB0aGVtLlxuXG5kKSA3MC03NSBkZWdyZWVzIEZhaHJlbmhlaXQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIGZvciBwcmVkaWN0aW5nIHNwZWNpZmljIHRlbXBlcmF0dXJlIHJhbmdlcy4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIHByb3ZpZGUgdGVtcGVyYXR1cmUgZGF0YSwgaXQgaXMgbm90IHVzZWQgZm9yIHByZWRpY3Rpbmcgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzLlxuXG5lKSBSYXBpZCBjaGFuZ2VzIG9jY3VyOiBUaGlzIG9wdGlvbiBpcyB0b28gdmFndWUgYW5kIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGNvcnJlY3Qgb3Igbm90LiBTYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCB0byBtb25pdG9yIGNoYW5nZXMgaW4gdmFyaW91cyBlbnZpcm9ubWVudGFsIGZhY3RvcnMsIGJ1dCBpdCBpcyBub3QgdXNlZCBzcGVjaWZpY2FsbHkgZm9yIHByZWRpY3RpbmcgcmFwaWQgY2hhbmdlcy5cblxuZikgRGVhZC1lbmRzIGFuZCBmYWxzZSBzdGFydHM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IG9yIGFueSB0eXBlIG9mIHByZWRpY3Rpb24uXG5cbmcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBzcGVjaWZpYyBhbmQgZG9lcyBub3QgY292ZXIgdGhlIGJyb2FkIHJhbmdlIG9mIHByZWRpY3Rpb25zIHRoYXQgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIGJlIHVzZWQgZm9yLiBXaGlsZSBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgZm9ybWF0aW9ucywgaXQgaXMgbm90IHVzZWQgZXhjbHVzaXZlbHkgZm9yIHRoaXMgcHVycG9zZS5cblxuaCkgQXJvdW5kIDUgdG8gMjcgZGVncmVlcyBDZWxzaXVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBpdCBpcyB0b28gc3BlY2lmaWMgYW5kIGRvZXMgbm90IGNvdmVyIHRoZSBicm9hZCByYW5nZSBvZiB0ZW1wZXJhdHVyZSBwcmVkaWN0aW9ucyB0aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBiZSB1c2VkIGZvci4gV2hpbGUgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgY2FuIHByb3ZpZGUgdGVtcGVyYXR1cmUgZGF0YSwgaXQgaXMgbm90IHVzZWQgZXhjbHVzaXZlbHkgZm9yIHByZWRpY3RpbmcgdGVtcGVyYXR1cmVzIHdpdGhpbiBhIHNwZWNpZmljIHJhbmdlLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSB3aGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5LCBhcyBzYXRlbGxpdGUgdGVjaG5vbG9neSBpcyBjb21tb25seSB1c2VkIGZvciB3ZWF0aGVyIGZvcmVjYXN0aW5nIGFuZCBwcmVkaWN0aW5nIGRhaWx5IHdlYXRoZXIgY29uZGl0aW9ucy4ifX1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYyIsICJyZWFzb25pbmciOiAiKGEpIFJlbGlldmUgcGFpbjogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggcmVsaWV2aW5nIHBhaW4uIElycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyBvZiBleHBvc2luZyBmb29kIHRvIGlvbml6aW5nIHJhZGlhdGlvbiB0byBraWxsIGJhY3RlcmlhLCB2aXJ1c2VzLCBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuIEl0IGlzIG5vdCBhIHBhaW4gcmVsaWV2ZXIuXG5cbihiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBlbmhhbmNlIHRoZSBmb29kJ3MgbnV0cmllbnRzLiBJbiBmYWN0LCBzb21lIHN0dWRpZXMgaGF2ZSBzaG93biB0aGF0IGlycmFkaWF0aW9uIGNhbiBjYXVzZSBhIHNsaWdodCBsb3NzIG9mIGNlcnRhaW4gdml0YW1pbnMgaW4gZm9vZC4gSG93ZXZlciwgdGhlIGxvc3MgaXMgbm90IHNpZ25pZmljYW50IGVub3VnaCB0byBhZmZlY3QgdGhlIG92ZXJhbGwgbnV0cml0aW9uYWwgdmFsdWUgb2YgdGhlIGZvb2QuXG5cbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgYWN0dWFsbHkga2lsbHMgYmFjdGVyaWEgYW5kIG90aGVyIHBhdGhvZ2VucyB0aGF0IG1heSBiZSBwcmVzZW50IGluIHRoZSBmb29kLiBJdCBkb2VzIG5vdCBhbGxvdyB0aGUgZ3Jvd3RoIG9mIGJhY3RlcmlhLlxuXG4oZSkgSW5jcmVhc2VzIGZvb2Qgd2FzdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRpbmcgZm9vZCBjYW4gYWN0dWFsbHkgaGVscCByZWR1Y2UgZm9vZCB3YXN0ZS4gQnkga2lsbGluZyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zLCBpcnJhZGlhdGlvbiBjYW4gZXh0ZW5kIHRoZSBzaGVsZiBsaWZlIG9mIGZvb2QsIHdoaWNoIG1lYW5zIGxlc3MgZm9vZCBpcyB3YXN0ZWQuXG5cbihmKSBDaGVtaWNhbCBjaGFuZ2VzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGlycmFkaWF0aW5nIGZvb2QgY2FuIGNhdXNlIHNvbWUgY2hlbWljYWwgY2hhbmdlcyBpbiB0aGUgZm9vZCwgYnV0IHRoZXNlIGNoYW5nZXMgYXJlIG5vdCBoYXJtZnVsIHRvIGh1bWFuIGhlYWx0aC4gSW4gZmFjdCwgdGhlIFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb24sIHRoZSBVLlMuIEZvb2QgYW5kIERydWcgQWRtaW5pc3RyYXRpb24sIGFuZCBvdGhlciBvcmdhbml6YXRpb25zIGhhdmUgZGV0ZXJtaW5lZCB0aGF0IGlycmFkaWF0ZWQgZm9vZCBpcyBzYWZlIHRvIGVhdC5cblxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpcnJhZGlhdGluZyBmb29kIGRvZXMgbm90IGdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZC4gSXQgaXMgYSBwcm9jZXNzIG9mIGV4cG9zaW5nIGZvb2QgdG8gaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgYmFjdGVyaWEsIHZpcnVzZXMsIGFuZCBvdGhlciBwYXRob2dlbnMgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiB0aGUgZm9vZC5cblxuKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGg6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXJyYWRpYXRlZCBmb29kIGlzIG5vdCBhIG1ham9yIHRocmVhdCB0byBoZWFsdGguIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbiwgdGhlIFUuUy4gRm9vZCBhbmQgRHJ1ZyBBZG1pbmlzdHJhdGlvbiwgYW5kIG90aGVyIG9yZ2FuaXphdGlvbnMgaGF2ZSBkZXRlcm1pbmVkIHRoYXQgaXJyYWRpYXRlZCBmb29kIGlzIHNhZmUgdG8gZWF0LiBJbiBmYWN0LCBpcnJhZGlhdGlvbiBjYW4gaGVscCByZWR1Y2UgdGhlIHJpc2sgb2YgZm9vZGJvcm5lIGlsbG5lc3MgYnkga2lsbGluZyBiYWN0ZXJpYSBhbmQgb3RoZXIgcGF0aG9nZW5zIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIGZvb2QuIn19XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIiwgInJlYXNvbmluZyI6ICJiKSBFeGZvbGlhdGlvbjogRXhmb2xpYXRpb24gaXMgdGhlIHByb2Nlc3Mgb2Ygc2hlZGRpbmcgZGVhZCBza2luIGNlbGxzIGZyb20gdGhlIHN1cmZhY2Ugb2YgdGhlIHNraW4uIFdoaWxlIHRoaXMgaXMgYW4gaW1wb3J0YW50IHByb2Nlc3MgZm9yIG1haW50YWluaW5nIGhlYWx0aHkgc2tpbiwgaXQgZG9lcyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cblxuYykgUmVzaXN0YW5jZTogUmVzaXN0YW5jZSBpcyBhIHZhZ3VlIHRlcm0gYW5kIGRvZXMgbm90IHByb3ZpZGUgYW55IHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgcHJvdGVjdHMgdGhlIHNraW4uXG5cbmQpIExheWVycyBvZiBmYXQ6IFdoaWxlIGxheWVycyBvZiBmYXQgY2FuIHByb3ZpZGUgaW5zdWxhdGlvbiBhbmQgY3VzaGlvbmluZyBmb3IgdGhlIHNraW4sIHRoZXkgZG8gbm90IGRpcmVjdGx5IHByb3RlY3QgdGhlIHNraW4uXG5cbmUpIEV2YXBvcmF0aW9uOiBFdmFwb3JhdGlvbiBpcyBhIHByb2Nlc3MgYnkgd2hpY2ggYSBsaXF1aWQgdHVybnMgaW50byBhIGdhcy4gSXQgZG9lcyBub3QgcHJvdGVjdCB0aGUgc2tpbi5cblxuZikgQSBjdXRpY2xlOiBBIGN1dGljbGUgaXMgYSBwcm90ZWN0aXZlIGxheWVyIHRoYXQgY292ZXJzIHRoZSBzdXJmYWNlIG9mIHNvbWUgb3JnYW5pc21zLCBzdWNoIGFzIHBsYW50cyBhbmQgaW5zZWN0cy4gSG93ZXZlciwgbWFtbWFscyBkbyBub3QgaGF2ZSBhIGN1dGljbGUuXG5cbmcpIFNlbnNvcnkgbmV1cm9uczogU2Vuc29yeSBuZXVyb25zIGFyZSBuZXJ2ZSBjZWxscyB0aGF0IHRyYW5zbWl0IHNlbnNvcnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgYm9keSB0byB0aGUgYnJhaW4uIFdoaWxlIHRoZXkgcGxheSBhbiBpbXBvcnRhbnQgcm9sZSBpbiB0aGUgbmVydm91cyBzeXN0ZW0sIHRoZXkgZG8gbm90IHByb3RlY3QgdGhlIHNraW4uXG5cbmgpIEZ1ciBhbmQgZmF0OiBUaGlzIGlzIGEgY29ycmVjdCBhbnN3ZXIuIEZ1ciBhbmQgZmF0IHByb3ZpZGUgaW5zdWxhdGlvbiBhbmQgcHJvdGVjdGlvbiBmb3IgdGhlIHNraW4uIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgYXNrcyB3aGF0IHByb3RlY3RzIHRoZSBza2luLCBhbmQgZmliZXIgZm9sbGljbGVzIGFyZSB0aGUgc3RydWN0dXJlcyB3aXRoaW4gdGhlIHNraW4gdGhhdCBwcm92aWRlIHRoZSBtb3N0IGRpcmVjdCBwcm90ZWN0aW9uLiJ9fV0sICIzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBkbyBlYXJ0aHdvcm1zIGRvIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmY/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIERpZXMgKGIpIFJlZ3Jvd3MgaXQgKGMpIFJlcHJvZHVjZXMgKGQpIFNlZGltZW50IChlKSBSb290IGdyb3d0aCAoZikgTWlncmF0ZSAoZykgU3RvcHMgZ3Jvd2luZyAoaCkgUm9vdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYiIsICJyZWFzb25pbmciOiAiYSkgRGllczogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBlYXJ0aHdvcm1zIGRvIG5vdCBkaWUgd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZi4gV2hpbGUgaXQgbWF5IGJlIGEgdHJhdW1hdGljIGV4cGVyaWVuY2UgZm9yIHRoZSBlYXJ0aHdvcm0sIHRoZXkgYXJlIGFibGUgdG8gcmVnZW5lcmF0ZSB0aGUgbG9zdCBzZWdtZW50LlxuXG5jKSBSZXByb2R1Y2VzOiBUaGlzIG9wdGlvbiBpcyBub3QgY29ycmVjdCBiZWNhdXNlIGVhcnRod29ybXMgZG8gbm90IHJlcHJvZHVjZSB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmLiBSZXByb2R1Y3Rpb24gaW4gZWFydGh3b3JtcyBpbnZvbHZlcyB0aGUgZXhjaGFuZ2Ugb2Ygc3Blcm0gYmV0d2VlbiB0d28gaW5kaXZpZHVhbHMsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIHRoZSBsb3NzIG9mIHNlZ21lbnRzLlxuXG5kKSBTZWRpbWVudDogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFNlZGltZW50IHJlZmVycyB0byB0aGUgbWF0ZXJpYWwgdGhhdCBzZXR0bGVzIGF0IHRoZSBib3R0b20gb2YgYSBib2R5IG9mIHdhdGVyIG9yIG90aGVyIGxpcXVpZC5cblxuZSkgUm9vdCBncm93dGg6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBSb290IGdyb3d0aCByZWZlcnMgdG8gdGhlIGdyb3d0aCBvZiByb290cyBpbiBwbGFudHMsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMuXG5cbmYpIE1pZ3JhdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uLiBNaWdyYXRpb24gcmVmZXJzIHRvIHRoZSBtb3ZlbWVudCBvZiBhbmltYWxzIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIsIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGVhcnRod29ybXMgcmVnZW5lcmF0aW5nIGxvc3Qgc2VnbWVudHMuXG5cbmcpIFN0b3BzIGdyb3dpbmc6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgZWFydGh3b3JtcyBkbyBub3Qgc3RvcCBncm93aW5nIHdoZW4gYSBzZWdtZW50IGJyZWFrcyBvZmYuIFdoaWxlIHRoZSBsb3N0IHNlZ21lbnQgbWF5IHRha2Ugc29tZSB0aW1lIHRvIHJlZ2VuZXJhdGUsIHRoZSBlYXJ0aHdvcm0gd2lsbCBjb250aW51ZSB0byBncm93IGFuZCBtb3ZlLlxuXG5oKSBSb290czogVGhpcyBvcHRpb24gaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24uIFJvb3RzIHJlZmVyIHRvIHRoZSBwYXJ0IG9mIGEgcGxhbnQgdGhhdCB0eXBpY2FsbHkgbGllcyBiZWxvdyB0aGUgc3VyZmFjZSBvZiB0aGUgc29pbCwgYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggZWFydGh3b3JtcyByZWdlbmVyYXRpbmcgbG9zdCBzZWdtZW50cy4ifX1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImEiLCAicmVhc29uaW5nIjogImIpIFJhaW5zdG9ybXM6IExpZ2h0bmluZyBpcyBhY3R1YWxseSBhIG5hdHVyYWwgcGhlbm9tZW5vbiB0aGF0IG9jY3VycyBkdXJpbmcgcmFpbnN0b3Jtcy4gSXQgaXMgbm90IGJhZCBmb3IgcmFpbnN0b3JtcywgYnV0IHJhdGhlciBhIHBhcnQgb2YgdGhlIHN0b3JtLlxuXG5jKSBEZXN0cnVjdGlvbjogV2hpbGUgbGlnaHRuaW5nIGNhbiBjYXVzZSBkZXN0cnVjdGlvbiwgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyB3aGF0IGxpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciwgbm90IHdoYXQgaXQgY2FuIGNhdXNlLlxuXG5kKSBWaXNpYmlsaXR5OiBMaWdodG5pbmcgY2FuIGFjdHVhbGx5IGltcHJvdmUgdmlzaWJpbGl0eSBkdXJpbmcgYSBzdG9ybSBieSBpbGx1bWluYXRpbmcgdGhlIHN1cnJvdW5kaW5ncy4gSXQgaXMgbm90IGJhZCBmb3IgdmlzaWJpbGl0eS5cblxuZSkgVGh1bmRlcjogVGh1bmRlciBpcyBhY3R1YWxseSBjYXVzZWQgYnkgbGlnaHRuaW5nLCBzbyBpdCBpcyBub3QgYmFkIGZvciB0aHVuZGVyLlxuXG5mKSBUaGUgc3VuOiBMaWdodG5pbmcgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHN1biwgc28gaXQgaXMgbm90IGJhZCBmb3IgdGhlIHN1bi5cblxuZykgVGhlIHdlYXRoZXI6IExpZ2h0bmluZyBpcyBhIHBhcnQgb2YgdGhlIHdlYXRoZXIsIHNvIGl0IGlzIG5vdCBiYWQgZm9yIHRoZSB3ZWF0aGVyLlxuXG5oKSBUcmFuc3BvcnRhdGlvbjogTGlnaHRuaW5nIGNhbiBiZSBkYW5nZXJvdXMgZm9yIHRyYW5zcG9ydGF0aW9uLCBidXQgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyB3aGF0IGxpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciBpbiBnZW5lcmFsLCBub3Qgc3BlY2lmaWNhbGx5IGZvciB0cmFuc3BvcnRhdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgb25seSBsb2dpY2FsIGFuc3dlciBpcyBhKSB0aGUgZW52aXJvbm1lbnQuIExpZ2h0bmluZyBjYW4gc3RhcnQgd2lsZGZpcmVzLCBkYW1hZ2UgdHJlZXMgYW5kIG90aGVyIHZlZ2V0YXRpb24sIGFuZCBjYXVzZSBzb2lsIGVyb3Npb24sIHdoaWNoIGNhbiBhbGwgaGF2ZSBuZWdhdGl2ZSBpbXBhY3RzIG9uIHRoZSBlbnZpcm9ubWVudC4ifX1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJkIiwgInJlYXNvbmluZyI6ICJhKSBTb3VsczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBzb3VscyBhcmUgbm90IHBoeXNpY2FsIGVudGl0aWVzIHRoYXQgY2FuIGxlYXZlIGV2aWRlbmNlIG9mIHRoZWlyIHByZXNlbmNlIGluIGEgcGxhY2UuIFNvdWxzIGFyZSBiZWxpZXZlZCB0byBiZSBzcGlyaXR1YWwgZW50aXRpZXMgdGhhdCBhcmUgbm90IGJvdW5kIGJ5IHBoeXNpY2FsIGxhd3MuXG5cbmIpIEFuaW1hbHMgd2l0aCBiYWNrYm9uZXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBjb21wbGV0ZWx5IGNvcnJlY3QgYmVjYXVzZSBub3QgYWxsIGFuaW1hbHMgaGF2ZSBiYWNrYm9uZXMuIEludmVydGVicmF0ZXMsIHN1Y2ggYXMgaW5zZWN0cyBhbmQgbW9sbHVza3MsIGRvIG5vdCBoYXZlIGJhY2tib25lcy4gVGhlcmVmb3JlLCBldmlkZW5jZSBvZiBwYXN0IGxpZmUgY2Fubm90IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFuaW1hbHMgd2l0aCBiYWNrYm9uZXMgbGl2ZWQgaW4gYSBwbGFjZS5cblxuYykgT3JnYW5pc21zOiBUaGlzIG9wdGlvbiBpcyB0b28gYnJvYWQgYW5kIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uLiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIHNob3cgdGhhdCBhbnkgdHlwZSBvZiBvcmdhbmlzbSBvbmNlIGxpdmVkIGluIGEgcGxhY2UsIGluY2x1ZGluZyBiYWN0ZXJpYSwgZnVuZ2ksIGFuZCBwcm90aXN0cy5cblxuZCkgUGxhbnQgb3IgYW5pbWFsOiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlciBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IGEgcGxhbnQgb3IgYW5pbWFsIG9uY2UgbGl2ZWQgaW4gYSBwbGFjZS4gRm9zc2lscywgZm9yIGV4YW1wbGUsIHByb3ZpZGUgZXZpZGVuY2Ugb2YgcGFzdCBsaWZlIGFuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCB0eXBlcyBvZiBwbGFudHMgYW5kIGFuaW1hbHMgbGl2ZWQgaW4gYSBwYXJ0aWN1bGFyIGFyZWEuXG5cbmUpIE1hbGVzIGFuZCBmZW1hbGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNleCBvZiB0aGUgb3JnYW5pc21zIHRoYXQgb25jZSBsaXZlZCBpbiBhIHBsYWNlLiBGb3NzaWxzIGRvIG5vdCB0eXBpY2FsbHkgcHJlc2VydmUgc2V4dWFsIGNoYXJhY3RlcmlzdGljcy5cblxuZikgRGVmb3Jlc3RhdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBkZWZvcmVzdGF0aW9uIGlzIGEgaHVtYW4gYWN0aXZpdHkgdGhhdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCBwYXN0IGxpZmUgaW4gYSBwbGFjZS5cblxuZykgUmVpbmNhcm5hdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSByZWluY2FybmF0aW9uIGlzIGEgcmVsaWdpb3VzIG9yIHBoaWxvc29waGljYWwgY29uY2VwdCB0aGF0IGRvZXMgbm90IHByb3ZpZGUgYW55IHNjaWVudGlmaWMgZXZpZGVuY2UgYWJvdXQgcGFzdCBsaWZlIGluIGEgcGxhY2UuXG5cbmgpIEltcG9ydGFudCBoYWJpdGF0czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBldmlkZW5jZSBvZiBwYXN0IGxpZmUgZG9lcyBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRhbnQgaGFiaXRhdHMuIFdoaWxlIGNlcnRhaW4gYXJlYXMgbWF5IGhhdmUgYmVlbiBpbXBvcnRhbnQgaGFiaXRhdHMgaW4gdGhlIHBhc3QsIGV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gYWxzbyBiZSBmb3VuZCBpbiBhcmVhcyB0aGF0IHdlcmUgbm90IGltcG9ydGFudCBoYWJpdGF0cy4ifX1dLCAiNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLCBvciBpbmhlcml0ZWQsIGlzIGZvdW5kIGluIGluZm9ybWF0aW9uIGluIGFuIG9yZ2FuaXNtJ3Mgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU3BlY2llcyAoYikgTWVzc2VuZ2VycyAoYykgSGFpciBmb2xsaWNsZXMgKGQpIEN5Y2xlcyAoZSkgU2tpbiBjZWxscyAoZikgRW5kb2NyaW5lIHN5c3RlbSAoZykgQ2hyb21vc29tZXMgKGgpIFByb3RlaW5zIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImciLCAicmVhc29uaW5nIjogIihhKSBTcGVjaWVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBzcGVjaWVzIHJlZmVyIHRvIGEgZ3JvdXAgb2Ygb3JnYW5pc21zIHRoYXQgc2hhcmUgc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MgYW5kIGNhbiBpbnRlcmJyZWVkIHRvIHByb2R1Y2UgZmVydGlsZSBvZmZzcHJpbmcuIEl0IGRvZXMgbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXG5cbihiKSBNZXNzZW5nZXJzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBtZXNzZW5nZXJzIHJlZmVyIHRvIG1vbGVjdWxlcyBzdWNoIGFzIGhvcm1vbmVzIGFuZCBuZXVyb3RyYW5zbWl0dGVycyB0aGF0IHRyYW5zbWl0IHNpZ25hbHMgYmV0d2VlbiBjZWxscy4gV2hpbGUgdGhleSBwbGF5IGEgcm9sZSBpbiB2YXJpb3VzIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzLCB0aGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxuXG4oYykgSGFpciBmb2xsaWNsZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGhhaXIgZm9sbGljbGVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBza2luIHRoYXQgcHJvZHVjZSBoYWlyLiBUaGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxuXG4oZCkgQ3ljbGVzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBjeWNsZXMgcmVmZXIgdG8gcmVjdXJyaW5nIGV2ZW50cyBvciBwcm9jZXNzZXMgc3VjaCBhcyB0aGUgbWVuc3RydWFsIGN5Y2xlIG9yIHRoZSB3YXRlciBjeWNsZS4gVGhleSBkbyBub3QgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93bi5cblxuKGUpIFNraW4gY2VsbHM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHNraW4gY2VsbHMgYXJlIGNlbGxzIHRoYXQgbWFrZSB1cCB0aGUgb3V0ZXIgbGF5ZXIgb2YgdGhlIHNraW4uIFRoZXkgZG8gbm90IHByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24uXG5cbihmKSBFbmRvY3JpbmUgc3lzdGVtOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSB0aGUgZW5kb2NyaW5lIHN5c3RlbSBpcyBhIHN5c3RlbSBvZiBnbGFuZHMgdGhhdCBwcm9kdWNlIGFuZCBzZWNyZXRlIGhvcm1vbmVzLiBXaGlsZSBob3Jtb25lcyBwbGF5IGEgcm9sZSBpbiB2YXJpb3VzIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzLCB0aGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLlxuXG4oZykgQ2hyb21vc29tZXM6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBDaHJvbW9zb21lcyBhcmUgc3RydWN0dXJlcyBpbiB0aGUgbnVjbGV1cyBvZiBhIGNlbGwgdGhhdCBjb250YWluIGdlbmV0aWMgaW5mb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YgRE5BLiBUcmFpdHMgYXJlIHBhc3NlZCBkb3duIGZyb20gb25lIGdlbmVyYXRpb24gdG8gdGhlIG5leHQgdGhyb3VnaCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIGFuIG9yZ2FuaXNtJ3MgY2hyb21vc29tZXMuXG5cbihoKSBQcm90ZWluczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgcHJvdGVpbnMgYXJlIG1vbGVjdWxlcyBtYWRlIHVwIG9mIGFtaW5vIGFjaWRzIHRoYXQgcGVyZm9ybSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgYm9keS4gV2hpbGUgdGhleSBwbGF5IGEgcm9sZSBpbiB2YXJpb3VzIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzLCB0aGV5IGRvIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFpdHMgYXJlIHBhc3NlZCBkb3duLiJ9fV0sICI3IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBhcmUgdGhlIG1ham9yIHByb2R1Y2VycyBpbiB0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgR3Jhc3MgKGIpIEFuaW1hbHMgKGMpIEFwcGxlcyAoZCkgUG90YXRvZXMgKGUpIFRyZWVzIChmKSBQbGFudHMgKGcpIEZ1bmdpIChoKSBGaWVsZHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZiIsICJyZWFzb25pbmciOiAiKGEpIEdyYXNzOiBXaGlsZSBncmFzcyBpcyBhIHR5cGUgb2YgcGxhbnQsIGl0IGlzIG5vdCB0aGUgb25seSB0eXBlIG9mIHBsYW50LiBBZGRpdGlvbmFsbHksIHRoZSBxdWVzdGlvbiBzcGVjaWZpY2FsbHkgYXNrcyBhYm91dCAnbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uLCcgYW5kIGdyYXNzIGlzIG5vdCBuZWNlc3NhcmlseSBhIG1ham9yIHByb2R1Y2VyIGluIHRoZXNlIGFyZWFzLlxuXG4oYikgQW5pbWFsczogQW5pbWFscyBhcmUgbm90IHByb2R1Y2VycywgdGhleSBhcmUgY29uc3VtZXJzLiBUaGV5IGRvIG5vdCBwcm9kdWNlIGVuZXJneSBmcm9tIHN1bmxpZ2h0LCB3YXRlciwgYW5kIGNhcmJvbiBkaW94aWRlIGxpa2UgcGxhbnRzIGRvLlxuXG4oYykgQXBwbGVzOiBBcHBsZXMgYXJlIGEgdHlwZSBvZiBmcnVpdCB0aGF0IGdyb3cgb24gdHJlZXMsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgdHJlZXMgdGhhdCBwcm9kdWNlIGFwcGxlcyBhcmUgdGhlIHByb2R1Y2Vycy5cblxuKGQpIFBvdGF0b2VzOiBQb3RhdG9lcyBhcmUgYSB0eXBlIG9mIHZlZ2V0YWJsZSB0aGF0IGdyb3cgdW5kZXJncm91bmQsIGJ1dCB0aGV5IGFyZSBub3QgcHJvZHVjZXJzIGluIGFuZCBvZiB0aGVtc2VsdmVzLiBUaGUgcGxhbnRzIHRoYXQgcHJvZHVjZSBwb3RhdG9lcyBhcmUgdGhlIHByb2R1Y2Vycy5cblxuKGUpIFRyZWVzOiBUcmVlcyBhcmUgYSB0eXBlIG9mIHBsYW50IGFuZCBhcmUgaW5kZWVkIG1ham9yIHByb2R1Y2VycyBpbiB0ZW1wZXJhdHVyZSBhbmQgcHJlY2lwaXRhdGlvbi4gVGhleSBhYnNvcmIgY2FyYm9uIGRpb3hpZGUgYW5kIHJlbGVhc2Ugb3h5Z2VuLCBhbmQgdGhleSBhbHNvIGhlbHAgcmVndWxhdGUgdGhlIHRlbXBlcmF0dXJlIGFuZCBtb2lzdHVyZSBsZXZlbHMgaW4gdGhlaXIgZW52aXJvbm1lbnQuXG5cbihnKSBGdW5naTogRnVuZ2kgYXJlIG5vdCBwcm9kdWNlcnMsIHRoZXkgYXJlIGRlY29tcG9zZXJzLiBUaGV5IGJyZWFrIGRvd24gZGVhZCBvcmdhbmljIG1hdHRlciBhbmQgcmVjeWNsZSBudXRyaWVudHMgYmFjayBpbnRvIHRoZSBlY29zeXN0ZW0uXG5cbihoKSBGaWVsZHM6IEZpZWxkcyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgcHJvZHVjZXJzLiBUaGV5IGFyZSBzaW1wbHkgYXJlYXMgb2YgbGFuZCB1c2VkIGZvciBncm93aW5nIGNyb3BzIG9yIHJhaXNpbmcgbGl2ZXN0b2NrLlxuXG5JbiBzdW1tYXJ5LCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGYpIHBsYW50cywgc3BlY2lmaWNhbGx5IHRob3NlIHRoYXQgdXNlIHBob3Rvc3ludGhlc2lzIHRvIHByb2R1Y2UgZW5lcmd5IGZyb20gc3VubGlnaHQsIHdhdGVyLCBhbmQgY2FyYm9uIGRpb3hpZGUuIn19XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCIsICJyZWFzb25pbmciOiAiKGEpIFNjYXJjZSByZXNvdXJjZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gc2NhcmNlIHJlc291cmNlcy4gU2NhcmNlIHJlc291cmNlcyBhcmUgcmVzb3VyY2VzIHRoYXQgYXJlIGxpbWl0ZWQgaW4gYXZhaWxhYmlsaXR5LCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBhIGxpbWl0ZWQgcmVzb3VyY2UuXG5cbihiKSBIYXJtZnVsIHN1YnN0YW5jZXM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gaGFybWZ1bCBzdWJzdGFuY2VzLiBIYXJtZnVsIHN1YnN0YW5jZXMgYXJlIHN1YnN0YW5jZXMgdGhhdCBjYW4gY2F1c2UgaGFybSBvciBkYW1hZ2UsIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGhhcm1mdWwuXG5cbihjKSBTY2FyczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIHZlZ2V0YXRpb24gaW50byBzY2Fycy4gU2NhcnMgYXJlIG1hcmtzIGxlZnQgb24gdGhlIHNraW4gb3Igb3RoZXIgdGlzc3VlIGFmdGVyIGEgd291bmQgaGFzIGhlYWxlZCwgYW5kIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCBiZWNvbWUgYSB3b3VuZC5cblxuKGUpIFNlZGltZW50OiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNlZGltZW50LiBTZWRpbWVudCBpcyBhIG5hdHVyYWxseSBvY2N1cnJpbmcgbWF0ZXJpYWwgdGhhdCBpcyBicm9rZW4gZG93biBieSB3ZWF0aGVyaW5nIGFuZCBlcm9zaW9uLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBzZWRpbWVudC5cblxuKGYpIFNvbWV0aGluZyB0byBtb3ZlOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHNvbWV0aGluZyB0byBtb3ZlLiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvcHRpb25zLlxuXG4oZykgTWFnaWM6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGJlaW5nIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgdHVybiB2ZWdldGF0aW9uIGludG8gbWFnaWMuIE1hZ2ljIGlzIGEgc3VwZXJuYXR1cmFsIGZvcmNlIHRoYXQgaXMgbm90IGJhc2VkIG9uIHNjaWVuY2Ugb3IgcmVhc29uLCBhbmQgdmVnZXRhdGlvbiBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IGJlY29tZSBzdXBlcm5hdHVyYWwuXG5cbihoKSBQaWNuaWNzOiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBiZWluZyBidXJpZWQgdW5kZXIgc29pbCBhbmQgbXVkIGRvZXMgbm90IHR1cm4gdmVnZXRhdGlvbiBpbnRvIHBpY25pY3MuIFBpY25pY3MgYXJlIG91dGRvb3IgbWVhbHMgb3Igc29jaWFsIGdhdGhlcmluZ3MsIGFuZCB2ZWdldGF0aW9uIGJ1cmllZCB1bmRlciBzb2lsIGFuZCBtdWQgZG9lcyBub3QgYmVjb21lIGEgc29jaWFsIGdhdGhlcmluZy4ifX1dLCAiOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZW4gd2lsbCBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhP1xuQW5zd2VyIENob2ljZXM6IChhKSBUbyBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gKGIpIFJldXNpbmcgbWF0ZXJpYWxzIChjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgKGQpIElmIHRoZXkgYXJlIGJvcmVkIChlKSBNYXJzaGVzIGFuZCBzd2FtcHMgKGYpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBtb25leSAoZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgKGgpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogImEpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiBBbmltYWxzIGhhdmUgZGlmZmVyZW50IHdheXMgb2YgcmVndWxhdGluZyB0aGVpciBib2R5IHRlbXBlcmF0dXJlLCBzdWNoIGFzIHN3ZWF0aW5nLCBwYW50aW5nLCBvciBoaWJlcm5hdGlvbi4gSG93ZXZlciwgaWYgdGhlIGVudmlyb25tZW50IGJlY29tZXMgdG9vIGV4dHJlbWUsIGFuaW1hbHMgbWF5IG1vdmUgdG8gYSBtb3JlIHN1aXRhYmxlIGFyZWEuXG5cbmIpIEFuaW1hbHMgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIHRvIHJldXNlIG1hdGVyaWFscy4gVGhpcyBvcHRpb24gaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHF1ZXN0aW9uIGFuZCBkb2VzIG5vdCBtYWtlIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGFuaW1hbCBtb3ZlbWVudC5cblxuZCkgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBhcmUgYm9yZWQuIEJvcmVkb20gaXMgYSBodW1hbiBlbW90aW9uIGFuZCBhbmltYWxzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIGNhcGFjaXR5IGZvciBib3JlZG9tIGFzIGh1bWFucyBkby4gQW5pbWFscyBtb3ZlIGZvciBzdXJ2aXZhbCByZWFzb25zIHN1Y2ggYXMgZmluZGluZyBmb29kLCB3YXRlciwgb3Igc2hlbHRlci5cblxuZSkgTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSBub3QgYSByZWFzb24gZm9yIGFuaW1hbCBtb3ZlbWVudC4gTWFyc2hlcyBhbmQgc3dhbXBzIGFyZSB0eXBlcyBvZiBoYWJpdGF0cyB3aGVyZSBhbmltYWxzIG1heSBsaXZlLCBidXQgdGhleSBkbyBub3QgY2F1c2UgYW5pbWFscyB0byBtb3ZlIHRvIGFub3RoZXIgYXJlYS5cblxuZikgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5LiBUaGlzIG9wdGlvbiBpcyBub3QgcmVsYXRlZCB0byB0aGUgcXVlc3Rpb24gYW5kIGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYW5pbWFsIG1vdmVtZW50LlxuXG5nKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciBpcyBhIHdlYXRoZXIgcGhlbm9tZW5vbiBhbmQgZG9lcyBub3QgY2F1c2UgYW5pbWFscyB0byBtb3ZlIHRvIGFub3RoZXIgYXJlYS5cblxuaCkgQW5pbWFscyBkbyBub3QgbW92ZSB0byBhbm90aGVyIGFyZWEgaWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QuIEFuaW1hbHMgbWF5IHN0b3JlIGZvb2QgZm9yIGxhdGVyIHVzZSwgYnV0IHRoZXkgZG8gbm90IG1vdmUgdG8gYW5vdGhlciBhcmVhIGlmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBjKSBpZiBhbmltYWxzIGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgdGhleSB3aWxsIG1vdmUgdG8gYW5vdGhlciBhcmVhLiBUaGlzIGlzIGJlY2F1c2UgYW5pbWFscyBuZWVkIGZvb2QgdG8gc3Vydml2ZSwgYW5kIGlmIHRoZXkgY2Fubm90IGZpbmQgZm9vZCBpbiB0aGVpciBjdXJyZW50IGxvY2F0aW9uLCB0aGV5IHdpbGwgbW92ZSB0byBhbm90aGVyIGFyZWEgd2hlcmUgZm9vZCBpcyBhdmFpbGFibGUuIn19XSwgIjEwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBLaW5ldGljIGVuZXJneSAoYikgTG91ZCBub2lzZXMgKGMpIFZpYnJhdGluZyB3YXZlcyAoZCkgQW4gb2JqZWN0IGlzIHNlZW4gKGUpIEVsZWN0cm9tYWduZXRpYyBlbmVyZ3kgKGYpIERlb3h5cmlib251Y2xlaWMgYWNpZCAoZykgSHlkcm9nZW4gYW5kIG94eWdlbiAoaCkgSGFybWZ1bCBzdWJzdGFuY2VzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogImEpIEtpbmV0aWMgZW5lcmd5OiBLaW5ldGljIGVuZXJneSBpcyB0aGUgZW5lcmd5IG9mIG1vdGlvbi4gV2hpbGUgYSBmaXJlY3JhY2tlciBkb2VzIHByb2R1Y2Ugc29tZSBtb3Rpb24sIGl0IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSB0aGF0IGl0IGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuYikgTG91ZCBub2lzZXM6IFdoaWxlIGEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIGxvdWQgbm9pc2VzLCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlIGxvdWQgbm9pc2VzIGFyZSBhIHJlc3VsdCBvZiB0aGUgdmlicmF0aW5nIHdhdmVzIHByb2R1Y2VkIGJ5IHRoZSBmaXJlY3JhY2tlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmQpIEFuIG9iamVjdCBpcyBzZWVuOiBBIGZpcmVjcmFja2VyIGRvZXMgbm90IGNvbnZlcnQgY2hlbWljYWwgZW5lcmd5IGludG8gdGhlIGFiaWxpdHkgdG8gc2VlIGFuIG9iamVjdC4gVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG9wdGlvbnMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5lKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5OiBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IGlzIGEgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpbmNsdWRlcyByYWRpbyB3YXZlcywgbWljcm93YXZlcywgaW5mcmFyZWQgcmFkaWF0aW9uLCB2aXNpYmxlIGxpZ2h0LCB1bHRyYXZpb2xldCByYWRpYXRpb24sIFgtcmF5cywgYW5kIGdhbW1hIHJheXMuIEEgZmlyZWNyYWNrZXIgZG9lcyBub3QgY29udmVydCBjaGVtaWNhbCBlbmVyZ3kgaW50byBlbGVjdHJvbWFnbmV0aWMgZW5lcmd5LiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkOiBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSkgaXMgYSBtb2xlY3VsZSB0aGF0IGNhcnJpZXMgZ2VuZXRpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBkZXZlbG9wbWVudCwgZnVuY3Rpb25pbmcsIGdyb3d0aCwgYW5kIHJlcHJvZHVjdGlvbiBvZiBhbGwgbGl2aW5nIHRoaW5ncy4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIEROQS4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmcpIEh5ZHJvZ2VuIGFuZCBveHlnZW46IEh5ZHJvZ2VuIGFuZCBveHlnZW4gYXJlIGVsZW1lbnRzIHRoYXQgY2FuIGNvbWJpbmUgdG8gZm9ybSB3YXRlci4gQSBmaXJlY3JhY2tlciBkb2VzIG5vdCBjb252ZXJ0IGNoZW1pY2FsIGVuZXJneSBpbnRvIGh5ZHJvZ2VuIGFuZCBveHlnZW4uIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5oKSBIYXJtZnVsIHN1YnN0YW5jZXM6IEEgZmlyZWNyYWNrZXIgZG9lcyBwcm9kdWNlIGhhcm1mdWwgc3Vic3RhbmNlcyBzdWNoIGFzIHNtb2tlIGFuZCBjaGVtaWNhbHMsIGJ1dCBpdCBpcyBub3QgdGhlIHByaW1hcnkgZm9ybSBvZiBlbmVyZ3kgdGhhdCBpdCBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50by4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmMpIFZpYnJhdGluZyB3YXZlczogQSBmaXJlY3JhY2tlciBjb252ZXJ0cyBjaGVtaWNhbCBlbmVyZ3kgaW50byB2aWJyYXRpbmcgd2F2ZXMuIFdoZW4gdGhlIGNoZW1pY2FscyBpbnNpZGUgYSBmaXJlY3JhY2tlciByZWFjdCwgdGhleSBwcm9kdWNlIGEgcmFwaWQgcmVsZWFzZSBvZiBlbmVyZ3kgaW4gdGhlIGZvcm0gb2YgaGVhdCBhbmQgZ2FzLiBUaGlzIGVuZXJneSBjYXVzZXMgdGhlIGZpcmVjcmFja2VyIHRvIGV4cGxvZGUsIHByb2R1Y2luZyB2aWJyYXRpbmcgd2F2ZXMgdGhhdCB3ZSBoZWFyIGFzIGxvdWQgbm9pc2VzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuIn19XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZyIsICJyZWFzb25pbmciOiAiYSkgTWFqb3IgZWZmZWN0czogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiAnTWFqb3IgZWZmZWN0cycgY291bGQgcmVmZXIgdG8gYSB2YXJpZXR5IG9mIHRoaW5ncywgYnV0IGl0IGlzIG5vdCBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgYSBjb3JyZWN0IGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uLlxuXG5iKSBSZXNwaXJhdGlvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBSZXNwaXJhdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyB0aGF0IGludm9sdmVzIHRoZSBleGNoYW5nZSBvZiBnYXNlcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cblxuYykgUm9sZXg6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gUm9sZXggaXMgYSBicmFuZCBvZiBsdXh1cnkgd2F0Y2hlcyBhbmQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBnZW5ldGljcy5cblxuZCkgRGVuc2l0eTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCByZWxhdGUgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBEZW5zaXR5IGlzIGEgcGh5c2ljYWwgcHJvcGVydHkgdGhhdCBkZXNjcmliZXMgdGhlIGFtb3VudCBvZiBtYXNzIGluIGEgZ2l2ZW4gdm9sdW1lLCBidXQgaXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIHRvcGljIG9mIGdlbmV0aWNzLlxuXG5lKSBEaXBodGhlcmlhOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3Mgb3IgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuIERpcGh0aGVyaWEgaXMgYSBiYWN0ZXJpYWwgaW5mZWN0aW9uIHRoYXQgY2FuIGNhdXNlIHNldmVyZSByZXNwaXJhdG9yeSBwcm9ibGVtcywgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cblxuZikgQ2FuaXMgbHVwdXM6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gQ2FuaXMgbHVwdXMgaXMgdGhlIHNjaWVudGlmaWMgbmFtZSBmb3IgdGhlIGdyYXkgd29sZiwgYnV0IGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcy5cblxuZykgU2tpbiBjb2xvcjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIgYmVjYXVzZSBza2luIGNvbG9yIGlzIGEgdHJhaXQgdGhhdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBUaGUgZ2VuZXMgdGhhdCBjb250cm9sIHNraW4gY29sb3IgcHJvZHVjZSBkaWZmZXJlbnQgYW1vdW50cyBvZiBtZWxhbmluLCB3aGljaCBpcyBhIHBpZ21lbnQgdGhhdCBnaXZlcyBza2luIGl0cyBjb2xvci4gVGhlIGludGVyYWN0aW9uIG9mIHRoZXNlIGdlbmVzIGNhbiByZXN1bHQgaW4gYSB3aWRlIHJhbmdlIG9mIHNraW4gY29sb3JzLCBmcm9tIHZlcnkgbGlnaHQgdG8gdmVyeSBkYXJrLlxuXG5oKSBEaWdlc3Rpb246IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSB0b3BpYyBvZiBnZW5ldGljcyBvciB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy4gRGlnZXN0aW9uIGlzIGEgYmlvbG9naWNhbCBwcm9jZXNzIHRoYXQgaW52b2x2ZXMgdGhlIGJyZWFrZG93biBvZiBmb29kIGludG8gc21hbGxlciBtb2xlY3VsZXMsIGJ1dCBpdCBpcyBub3QgcmVsYXRlZCB0byB0aGUgdG9waWMgb2YgZ2VuZXRpY3MuIn19XSwgIjEyIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWw/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNoZWVwIChiKSBTYWxtb24gKGMpIEdyYXNzZXMgKGQpIEJhdHMgKGUpIEFuaW1hbHMgKGYpIFNocnVicyAoZykgSHVtYW5zIChoKSBUcmVlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIiwgInJlYXNvbmluZyI6ICJiKSBTYWxtb246IFNhbG1vbiBhcmUgYSB0eXBlIG9mIGZpc2ggdGhhdCBhcmUgc3RyaWN0bHkgY2Fybml2b3JvdXMgYW5kIGZlZWQgb24gb3RoZXIgb3JnYW5pc21zIHN1Y2ggYXMgc21hbGxlciBmaXNoLCBjcnVzdGFjZWFucywgYW5kIGluc2VjdHMuIFRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG5jKSBHcmFzc2VzOiBHcmFzc2VzIGFyZSBwcmltYXJ5IHByb2R1Y2VycyBhbmQgYXJlIGF0IHRoZSBiYXNlIG9mIHRoZSBmb29kIGNoYWluLiBUaGV5IGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cblxuZCkgQmF0czogQmF0cyBhcmUgaW5zZWN0aXZvcmVzIG9yIGZydWdpdm9yZXMgYW5kIGZlZWQgb24gaW5zZWN0cyBvciBmcnVpdHMgcmVzcGVjdGl2ZWx5LiBUaGV5IGRvIG5vdCBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cblxuZSkgQW5pbWFsczogVGhpcyBvcHRpb24gaXMgdG9vIGJyb2FkIGFuZCBkb2VzIG5vdCBwcm92aWRlIGFueSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgaXMgaW5jb3JyZWN0IGJlY2F1c2Ugbm90IGFsbCBhbmltYWxzIGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cblxuZikgU2hydWJzOiBTaHJ1YnMgYXJlIGFsc28gcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cblxuZykgSHVtYW5zOiBIdW1hbnMgYXJlIG9tbml2b3JlcyBhbmQgY2FuIGNvbnN1bWUgYm90aCBwbGFudHMgYW5kIGFuaW1hbHMuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsIGFzIHRoZXkgY29uc3VtZSBlaXRoZXIgcGxhbnRzIG9yIGFuaW1hbHMgYXQgYSB0aW1lLlxuXG5oKSBUcmVlczogVHJlZXMgYXJlIGFsc28gcHJpbWFyeSBwcm9kdWNlcnMgYW5kIGFyZSBub3QgY2FwYWJsZSBvZiBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgc2hlZXAsIGFzIHRoZXkgYXJlIGhlcmJpdm9yZXMgYW5kIGNhbiBjb25zdW1lIHBsYW50cyBhdCBvbmUgdHJvcGhpYyBsZXZlbCBhbmQgdGhlbiBiZSBjb25zdW1lZCBieSBhIHByZWRhdG9yIGF0IGEgaGlnaGVyIHRyb3BoaWMgbGV2ZWwuIn19XSwgIjEzIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hvIGNhbiBzaGl2ZXI/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhdHMgKGIpIFNpZGV3YWxrcyAoYykgSHVtYW5zIChkKSBCZWVzIChlKSBLb2FsYXMgKGYpIE1vdW50YWlucyAoZykgVHJlZXMgKGgpIFBlb3BsZSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJkIiwgInJlYXNvbmluZyI6ICJMZXQncyBnbyB0aHJvdWdoIGVhY2ggb3B0aW9uIGFuZCBleHBsYWluIHdoeSBpdCBpcyBpbmNvcnJlY3Q6XG5cbmEpIEJhdHM6IFdoaWxlIGJhdHMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cblxuYikgU2lkZXdhbGtzOiBTaWRld2Fsa3MgYXJlIG5vdCBsaXZpbmcgb3JnYW5pc21zIGFuZCB0aGVyZWZvcmUgY2Fubm90IHNoaXZlci4gVGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cblxuYykgSHVtYW5zOiBIdW1hbnMgYXJlIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCBidXQgdGhleSBhcmUgbm90IHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBjYW4gc2hpdmVyLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXG5cbmUpIEtvYWxhczogS29hbGFzIGFyZSBjYXBhYmxlIG9mIHNoaXZlcmluZywgYnV0IHRoZXkgYXJlIG5vdCB0aGUgb25seSBhbmltYWxzIHRoYXQgY2FuIHNoaXZlci4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5mKSBNb3VudGFpbnM6IE1vdW50YWlucyBhcmUgbm90IGxpdmluZyBvcmdhbmlzbXMgYW5kIHRoZXJlZm9yZSBjYW5ub3Qgc2hpdmVyLiBUaGlzIG9wdGlvbiBpcyBub3QgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5nKSBUcmVlczogVHJlZXMgYXJlIG5vdCBjYXBhYmxlIG9mIHNoaXZlcmluZyBhcyB0aGV5IGRvIG5vdCBoYXZlIG11c2NsZXMuIFRoaXMgb3B0aW9uIGlzIG5vdCB0aGUgY29ycmVjdCBhbnN3ZXIuXG5cbmgpIFBlb3BsZTogVGhpcyBvcHRpb24gaXMgdGhlIHNhbWUgYXMgb3B0aW9uIGMuIEh1bWFucyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcsIGJ1dCB0aGV5IGFyZSBub3QgdGhlIG9ubHkgYW5pbWFscyB0aGF0IGNhbiBzaGl2ZXIuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgbm90IHRoZSBjb3JyZWN0IGFuc3dlci5cblxuZCkgSG9uZXkgYmVlczogSG9uZXkgYmVlcyBhcmUgY2FwYWJsZSBvZiBzaGl2ZXJpbmcgdG8gZ2VuZXJhdGUgaGVhdCBhbmQgbWFpbnRhaW4gdGhlaXIgYm9keSB0ZW1wZXJhdHVyZS4gVGhpcyBvcHRpb24gaXMgdGhlIGNvcnJlY3QgYW5zd2VyLlxuXG5JbiBjb25jbHVzaW9uLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgZCkgaG9uZXkgYmVlcyBjYW4gc2hpdmVyLiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhZCB0aGUgcXVlc3Rpb24gYW5kIG9wdGlvbnMgY2FyZWZ1bGx5IGFuZCBlbGltaW5hdGUgdGhlIG9wdGlvbnMgdGhhdCBhcmUgbm90IGxvZ2ljYWwgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtLiJ9fV0sICIxNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IgKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uIChlKSBCYWQgYmVoYXZpb3IgKGYpIExlYXJuaW5nIG5vdGhpbmcgKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIiwgInJlYXNvbmluZyI6ICJiKSBDb21wZXRpbmcgZm9yIHJlc291cmNlczogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgcmVmZXJzIHRvIGFuaW1hbHMgY29tcGV0aW5nIGZvciBsaW1pdGVkIHJlc291cmNlcyBzdWNoIGFzIGZvb2QsIHdhdGVyLCBvciBzaGVsdGVyLiBIdW50aW5nIGJlaGF2aW9yIGlzIG5vdCByZWxhdGVkIHRvIHJlc291cmNlIGNvbXBldGl0aW9uLlxuXG5jKSBXYXJtLWJsb29kZWQ6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCByZWxhdGVkIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gV2FybS1ibG9vZGVkIHJlZmVycyB0byBhbmltYWxzIHRoYXQgY2FuIHJlZ3VsYXRlIHRoZWlyIGJvZHkgdGVtcGVyYXR1cmUgaW50ZXJuYWxseSwgYnV0IGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGVpciBiZWhhdmlvci5cblxuZCkgQ29tcGV0aXRpb246IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHRvbyBicm9hZCBhbmQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIENvbXBldGl0aW9uIGNhbiByZWZlciB0byBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgYmV0d2VlbiBhbmltYWxzLCBidXQgaXQgZG9lcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGF0ZSB0byBodW50aW5nIGJlaGF2aW9yLlxuXG5lKSBCYWQgYmVoYXZpb3I6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIHN1YmplY3RpdmUgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBjbGVhciBleHBsYW5hdGlvbiBvZiB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIEh1bnRpbmcgYmVoYXZpb3IgaXMgYSBuYXR1cmFsIGJlaGF2aW9yIGZvciBjYXRzIGFuZCBpcyBub3QgY29uc2lkZXJlZCBiYWQgYmVoYXZpb3IuXG5cbmYpIExlYXJuaW5nIG5vdGhpbmc6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGlzIG5vdCBhY2N1cmF0ZS4gS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGFjdHVhbGx5IGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuIEh1bnRpbmcgYmVoYXZpb3IgaXMgYSBsZWFybmVkIGJlaGF2aW9yIHRoYXQgcmVxdWlyZXMgcHJhY3RpY2UgYW5kIHJlZmluZW1lbnQuXG5cbmcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3I6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIGl0IGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgYmVoYXZpb3Igb2Yga2l0dGVucyBwcmFjdGljaW5nIGh1bnRpbmcuIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGVsaW1pbmF0aW5nIGEgYmVoYXZpb3IgdGhyb3VnaCBwdW5pc2htZW50IG9yIG5lZ2F0aXZlIHJlaW5mb3JjZW1lbnQsIGJ1dCBpdCBkb2VzIG5vdCByZWxhdGUgdG8gbGVhcm5pbmcgYmVoYXZpb3IuXG5cbmgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0czogVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgaXQgZG9lcyBub3QgcmVsYXRlIHRvIHRoZSBiZWhhdmlvciBvZiBraXR0ZW5zIHByYWN0aWNpbmcgaHVudGluZy4gVGhlIGVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyByZWZlcnMgdG8gdGhlIHBoeXNpY3Mgb2YgbW90aW9uIGFuZCBkb2VzIG5vdCByZWxhdGUgdG8gYW5pbWFsIGJlaGF2aW9yLlxuXG5UaGVyZWZvcmUsIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBhKSBsZWFybmluZyBiZWhhdmlvciwgYXMga2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgYXJlIGxlYXJuaW5nIGltcG9ydGFudCBza2lsbHMgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBzdXJ2aXZlIGFzIGFkdWx0IGNhdHMuIn19XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYSIsICJyZWFzb25pbmciOiAiYikgV2ludGVyOiBXaW50ZXIgaXMgYSBzZWFzb24gYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5jKSBNdXRhdGlvbnM6IE11dGF0aW9ucyBhcmUgY2hhbmdlcyBpbiB0aGUgZ2VuZXRpYyBtYXRlcmlhbCBvZiBhbiBvcmdhbmlzbSBhbmQgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5kKSBDb29raW5nOiBDb29raW5nIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCBieSBoZWF0aW5nIGl0LCBhbmQgaXQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmUpIEN5Y2xlczogQ3ljbGVzIGNhbiByZWZlciB0byBtYW55IHRoaW5ncywgYnV0IG5vbmUgb2YgdGhlbSBhcmUgcmVsYXRlZCB0byBjcmVhdGluZyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmYpIFN1bW1lcjogU3VtbWVyIGlzIGEgc2Vhc29uIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyBvZiBsb3dlcmluZyB0aGUgdGVtcGVyYXR1cmUgb2Ygc29tZXRoaW5nIHRvIGJlbG93IGl0cyBmcmVlemluZyBwb2ludCwgYW5kIGl0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGggY3JlYXRpbmcgZW5lcmd5IGZyb20gZGVhZCBvcmdhbmlzbXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5oKSBHdW5zaG90czogR3Vuc2hvdHMgYXJlIGEgc3VkZGVuIGxvdWQgbm9pc2UgY2F1c2VkIGJ5IGEgYnVsbGV0IG9yIG90aGVyIHByb2plY3RpbGUgYW5kIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIGNyZWF0aW5nIGVuZXJneSBmcm9tIGRlYWQgb3JnYW5pc21zLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgYSkgYnVybmluZy4gQnVybmluZyBkZWFkIG9yZ2FuaXNtcyBjYW4gY3JlYXRlIGVuZXJneSB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGNvbWJ1c3Rpb24sIHdoaWNoIHJlbGVhc2VzIGVuZXJneSBpbiB0aGUgZm9ybSBvZiBoZWF0IGFuZCBsaWdodC4gVGhpcyBlbmVyZ3kgY2FuIGJlIGhhcm5lc3NlZCB0byBnZW5lcmF0ZSBlbGVjdHJpY2l0eSBvciBwb3dlciBlbmdpbmVzLiJ9fV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogImEpIFZlaGljbGVzOiBUdXJuaW5nIG9uIGEgdmVoaWNsZSBkb2VzIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uIFZlaGljbGVzIGVtaXQgdmFyaW91cyB0eXBlcyBvZiByYWRpYXRpb24sIHN1Y2ggYXMgdGhlcm1hbCByYWRpYXRpb24gYW5kIHNvdW5kIHdhdmVzLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXG5cbmIpIFNhdGVsbGl0ZXM6IFNhdGVsbGl0ZXMgY2FuIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IG5vdCBzaW1wbHkgYnkgdHVybmluZyB0aGVtIG9uLiBTYXRlbGxpdGVzIGFyZSBkZXNpZ25lZCB0byByZWNlaXZlIGFuZCB0cmFuc21pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLCBzdWNoIGFzIHJhZGlvIHdhdmVzLCBidXQgdGhleSBkbyBub3QgZW1pdCByYWRpYXRpb24ganVzdCBieSBiZWluZyB0dXJuZWQgb24uXG5cbmQpIEJ1c2VzOiBTaW1pbGFyIHRvIHZlaGljbGVzLCB0dXJuaW5nIG9uIGEgYnVzIGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi4gQnVzZXMgZW1pdCB2YXJpb3VzIHR5cGVzIG9mIHJhZGlhdGlvbiwgc3VjaCBhcyB0aGVybWFsIHJhZGlhdGlvbiBhbmQgc291bmQgd2F2ZXMsIGJ1dCBub3QgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbi5cblxuZSkgRmlyZWNyYWNrZXJzOiBGaXJlY3JhY2tlcnMgZG8gbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiB3aGVuIHRoZXkgYXJlIHR1cm5lZCBvbi4gVGhleSBlbWl0IGxpZ2h0IGFuZCBzb3VuZCwgYnV0IG5vdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uLlxuXG5mKSBTZW5zb3J5IG5ldXJvbnM6IFNlbnNvcnkgbmV1cm9ucyBhcmUgcGFydCBvZiB0aGUgbmVydm91cyBzeXN0ZW0gYW5kIGRvIG5vdCBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXG5cbmcpIEFuIG9iamVjdDogQW4gb2JqZWN0IGRvZXMgbm90IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBqdXN0IGJ5IGJlaW5nIHR1cm5lZCBvbi4gSG93ZXZlciwgc29tZSBvYmplY3RzIGNhbiBlbWl0IHJhZGlhdGlvbiBpZiB0aGV5IGFyZSBoZWF0ZWQgb3IgZW5lcmdpemVkLCBzdWNoIGFzIGEgbGlnaHQgYnVsYi5cblxuaCkgRW5naW5lczogRW5naW5lcyBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIHdoZW4gdGhleSBhcmUgdHVybmVkIG9uLiBUaGV5IGVtaXQgdmFyaW91cyB0eXBlcyBvZiByYWRpYXRpb24sIHN1Y2ggYXMgdGhlcm1hbCByYWRpYXRpb24gYW5kIHNvdW5kIHdhdmVzLCBidXQgbm90IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGMpIGxpZ2h0IGJ1bGIsIGFzIHR1cm5pbmcgb24gYSBsaWdodCBidWxiIGVtaXRzIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gaW4gdGhlIGZvcm0gb2YgdmlzaWJsZSBsaWdodC4ifX1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJmIiwgInJlYXNvbmluZyI6ICJhKSBDb2xkZXIgYW5kIHdldHRlcjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIGNsaW1hdGUgY29uZGl0aW9uLlxuXG5iKSBPY2VhbiB3YXRlcjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIHR5cGUgb2Ygd2F0ZXIuXG5cbmMpIEdyYXB0b2xpdGVzOiBUaGlzIG9wdGlvbiBpcyBub3QgbG9naWNhbCBiZWNhdXNlIGdyYXB0b2xpdGVzIGFyZSBleHRpbmN0IG1hcmluZSBhbmltYWxzIHRoYXQgbGl2ZWQgZHVyaW5nIHRoZSBQYWxlb3pvaWMgZXJhLiBUaGV5IGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuXG5cbmQpIFJhcGlkIGV4cGFuc2lvbjogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIHByb2Nlc3MuXG5cbmUpIEEgZGVsdGE6IFRoaXMgb3B0aW9uIGlzIG5vdCBsb2dpY2FsIGJlY2F1c2UgYSBkZWx0YSBpcyBhIGxhbmRmb3JtIHRoYXQgaXMgZm9ybWVkIGF0IHRoZSBtb3V0aCBvZiBhIHJpdmVyLiBJdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBmb3JtYXRpb24gb2YgYSB6eWdvdGUuXG5cbmcpIEJhcm5hY2xlczogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBiYXJuYWNsZXMgYXJlIG1hcmluZSBhbmltYWxzIHRoYXQgcmVwcm9kdWNlIHRocm91Z2ggZXh0ZXJuYWwgZmVydGlsaXphdGlvbi4gVGhleSBkbyBub3QgaGF2ZSBhbiBhcmNoZWdvbml1bSB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuXG5cbmgpIEFuIG9yZ2FuaXNtJ3MgYm9keTogVGhpcyBvcHRpb24gaXMgbm90IGxvZ2ljYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSBhIHp5Z290ZSBpcyBmb3JtZWQuIEl0IGlzIGp1c3QgYSBkZXNjcmlwdGlvbiBvZiBhIGdlbmVyYWwgbG9jYXRpb24uXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIGYpIGFuIGFyY2hlZ29uaXVtLCB3aGljaCBpcyBhIHN0cnVjdHVyZSBmb3VuZCBpbiBzb21lIHBsYW50cyBhbmQgYWxnYWUgd2hlcmUgdGhlIGVnZyBpcyBmZXJ0aWxpemVkIGJ5IHRoZSBzcGVybSwgZm9ybWluZyBhIHp5Z290ZS4ifX1dLCAiMTgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNaWxkZXcgKGIpIE5vcm1hbCB3YXRlciAoYykgSGVycGVzIChkKSBOb3JtYWwgYWlyIChlKSBDb2FsIChmKSBNb2xkIChnKSBBY2lkIChoKSBDb250YWN0IHNvbHV0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImciLCAicmVhc29uaW5nIjogImEpIE1pbGRldzogV2hpbGUgbWlsZGV3IGNhbiBjYXVzZSByZXNwaXJhdG9yeSBwcm9ibGVtcywgaXQgaXMgbm90IGtub3duIHRvIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5iKSBOb3JtYWwgd2F0ZXI6IE5vcm1hbCB3YXRlciBpcyBub3QgaGFybWZ1bCB0byB0aGUgZXllcy4gSW4gZmFjdCwgaXQgaXMgZXNzZW50aWFsIGZvciBtYWludGFpbmluZyBleWUgaGVhbHRoLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuYykgSGVycGVzOiBIZXJwZXMgaXMgYSB2aXJhbCBpbmZlY3Rpb24gdGhhdCBjYW4gY2F1c2UgY29sZCBzb3JlcyBvciBnZW5pdGFsIHNvcmVzLiBXaGlsZSBpdCBjYW4gY2F1c2UgZXllIGluZmVjdGlvbnMsIGl0IGlzIG5vdCBhIGRpcmVjdCBjYXVzZSBvZiBoYXJtIHRvIHRoZSBleWVzLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZCkgTm9ybWFsIGFpcjogTm9ybWFsIGFpciBpcyBub3QgaGFybWZ1bCB0byB0aGUgZXllcy4gSW4gZmFjdCwgaXQgaXMgZXNzZW50aWFsIGZvciBicmVhdGhpbmcgYW5kIG1haW50YWluaW5nIG92ZXJhbGwgaGVhbHRoLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZSkgQ29hbDogQ29hbCBkdXN0IGNhbiBjYXVzZSBoYXJtIHRvIHRoZSBleWVzIGlmIGl0IGdldHMgaW50byB0aGVtLiBIb3dldmVyLCBjb2FsIGl0c2VsZiBpcyBub3QgYSBkaXJlY3QgY2F1c2Ugb2YgaGFybSB0byB0aGUgZXllcy4gVGhlcmVmb3JlLCB0aGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QuXG5cbmYpIE1vbGQ6IE1vbGQgY2FuIGNhdXNlIHJlc3BpcmF0b3J5IHByb2JsZW1zLCBidXQgaXQgaXMgbm90IGtub3duIHRvIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5oKSBDb250YWN0IHNvbHV0aW9uOiBXaGlsZSBjb250YWN0IHNvbHV0aW9uIGNhbiBjYXVzZSBpcnJpdGF0aW9uIG9yIGluZmVjdGlvbiBpZiBub3QgdXNlZCBwcm9wZXJseSwgaXQgaXMgbm90IGEgZGlyZWN0IGNhdXNlIG9mIGhhcm0gdG8gdGhlIGV5ZXMuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5nKSBBY2lkOiBBY2lkIGNhbiBjYXVzZSBzZXZlcmUgaGFybSB0byB0aGUgZXllcywgaW5jbHVkaW5nIGNoZW1pY2FsIGJ1cm5zIGFuZCBwZXJtYW5lbnQgZGFtYWdlLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGNvcnJlY3QuXG5cbkluIGNvbmNsdXNpb24sIHRoZSBjb3JyZWN0IGFuc3dlciBpcyBnKSBhY2lkLCBhcyBpdCBpcyB0aGUgb25seSBvcHRpb24gdGhhdCBjYW4gY2F1c2UgZGlyZWN0IGhhcm0gdG8gdGhlIGV5ZXMuIn19XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImUiLCAicmVhc29uaW5nIjogImEpIEJhbWJvbzogQmFtYm9vIGlzIGEgdHlwZSBvZiBncmFzcyB0aGF0IGdyb3dzIGluIHRyb3BpY2FsIGFuZCBzdWJ0cm9waWNhbCByZWdpb25zLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuYikgRGVzaWNjYXRpb246IERlc2ljY2F0aW9uIGlzIHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIG1vaXN0dXJlIGZyb20gc29tZXRoaW5nLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuYykgQnVycnM6IEJ1cnJzIGFyZSBzbWFsbCwgcHJpY2tseSBzZWVkcyB0aGF0IGF0dGFjaCB0aGVtc2VsdmVzIHRvIGNsb3RoaW5nIG9yIGFuaW1hbCBmdXIuIFRoZXkgZG8gbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5kKSBFbG1zOiBFbG1zIGFyZSBkZWNpZHVvdXMgdHJlZXMgdGhhdCBncm93IGluIHRlbXBlcmF0ZSByZWdpb25zLiBUaGV5IGRvIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZikgQ29hbDogQ29hbCBpcyBhIGZvc3NpbCBmdWVsIHRoYXQgZm9ybXMgZnJvbSB0aGUgcmVtYWlucyBvZiBwbGFudHMgdGhhdCBsaXZlZCBtaWxsaW9ucyBvZiB5ZWFycyBhZ28uIEl0IGZvcm1zIHRocm91Z2ggYSBwcm9jZXNzIG9mIGhlYXQgYW5kIHByZXNzdXJlLCBidXQgaXQgaXMgbm90IGZvcm1lZCBmcm9tIG1vc3MuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5nKSBDYW5keTogQ2FuZHkgaXMgYSBzd2VldCBmb29kIG1hZGUgZnJvbSBzdWdhciBvciBjaG9jb2xhdGUuIEl0IGRvZXMgbm90IGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0LlxuXG5oKSBNZWF0OiBNZWF0IGlzIHRoZSBmbGVzaCBvZiBhbmltYWxzIHRoYXQgaXMgdXNlZCBhcyBmb29kLiBJdCBkb2VzIG5vdCBmb3JtIGludG8gcGVhdCB0aHJvdWdoIGV4dHJlbWUgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciB0aW1lLiBUaGVyZWZvcmUsIHRoaXMgb3B0aW9uIGlzIGluY29ycmVjdC5cblxuZSkgTW9zczogTW9zcyBpcyBhIHNtYWxsLCBub24tdmFzY3VsYXIgcGxhbnQgdGhhdCBncm93cyBpbiBkYW1wIGVudmlyb25tZW50cy4gSXQgY2FuIGZvcm0gaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuIFRoZXJlZm9yZSwgdGhpcyBvcHRpb24gaXMgY29ycmVjdC4ifX1dfSwgImNvbnZlcnNhdGlvbl9GQVJfZmFsY29uIjogeyIwIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyBzYXRlbGxpdGUgdGVjaG5vbG9neSB1c2VkIGZvciBwcmVkaWN0aW5nP1xuQW5zd2VyIENob2ljZXM6IChhKSBTZWNvbmRzIGFuZCBtaW51dGVzIChiKSBUaGUgc3RyZW5ndGggYW5kIG1hZ25pdHVkZSBvZiBhbiBlYXJ0aHF1YWtlIChjKSBXaGF0IGl0J3MgbGlrZSBvdXRzaWRlIGVhY2ggZGF5IChkKSA3MC03NSBkZWdyZWVzIGZhaHJlbmhlaXQgKGUpIFJhcGlkIGNoYW5nZXMgb2NjdXIgKGYpIERlYWQtZW5kcyBhbmQgZmFsc2Ugc3RhcnRzLiAoZykgU25vdywgaWNlLCBhbmQgcm9jayAoaCkgQXJvdW5kIDUgdG8gMjcgZGVncmVlcyBjZWxzaXVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogIi0gKGEpIFNlY29uZHMgYW5kIG1pbnV0ZXM6IFNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIG5vdCB1c2VkIHRvIHByZWRpY3Qgc2Vjb25kcyBhbmQgbWludXRlcy4gVGhpcyBpcyB0b28gc3BlY2lmaWMgYW5kIG5vdCB3aGF0IHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGlzIGdlbmVyYWxseSB1c2VkIGZvci4gU2F0ZWxsaXRlIHRlY2hub2xvZ3kgaXMgdXNlZCBmb3IgYnJvYWRlciB0aW1lIHNjYWxlcywgc3VjaCBhcyBkYXlzLCB3ZWVrcywgbW9udGhzLCBhbmQgeWVhcnMuXG4tIChiKSBUaGUgc3RyZW5ndGggYW5kIG1hZ25pdHVkZSBvZiBhbiBlYXJ0aHF1YWtlOiBXaGlsZSBzb21lIHR5cGVzIG9mIHNhdGVsbGl0ZSBkYXRhIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXIgaW5mb3JtYXRpb24gdG8gc3R1ZHkgc2Vpc21pY2l0eSwgZWFydGhxdWFrZXMgdGhlbXNlbHZlcyBhcmUgdHlwaWNhbGx5IHByZWRpY3RlZCB1c2luZyBvdGhlciBtZXRob2RzLCBsaWtlIHNlaXNtb2dyYXBocyBhbmQgZ2VvbG9naWNhbCBzdHVkaWVzLlxuLSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0OiBUaGlzIGlzIGEgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2UsIGFuZCBzYXRlbGxpdGVzIGNhbm5vdCBwcmVkaWN0IGV4YWN0IHRlbXBlcmF0dXJlIHJhbmdlcyBsaWtlIHRoaXMuIFdoaWxlIHNhdGVsbGl0ZXMgZG8gcGxheSBhIHJvbGUgaW4gd2VhdGhlciBwcmVkaWN0aW9uLCB3aGljaCBpbmNsdWRlcyB0ZW1wZXJhdHVyZSwgcHJlZGljdGluZyBzcGVjaWZpYyByYW5nZXMgd2l0aGluIGEgZGF5IGlzbid0IGEgdHlwaWNhbCBhcHBsaWNhdGlvbi5cbi0gKGUpIFJhcGlkIGNoYW5nZXMgb2NjdXI6IFdoaWxlIHNhdGVsbGl0ZXMgY2FuIGRldGVjdCByYXBpZCBjaGFuZ2VzIGluIG1hbnkgYXJlYXMsIHN1Y2ggYXMgY2xvdWQgY292ZXIsIHdlYXRoZXIgZnJvbnRzLCBvciB2b2xjYW5pYyBhY3Rpdml0eSwgdGhlIHBocmFzZSAncmFwaWQgY2hhbmdlcyBvY2N1cicgaXMgdG9vIHZhZ3VlLiBJdCBjb3VsZCBhcHBseSB0byB2YXJpb3VzIHBoZW5vbWVuYSwgc28gaXQncyBub3Qgc3BlY2lmaWNhbGx5IGFib3V0IHByZWRpY3Rpb25zIHJlbGF0ZWQgdG8gc2F0ZWxsaXRlIHRlY2hub2xvZ3kgYWxvbmUuXG4tIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0czogVGhlc2UgZGVzY3JpcHRpb25zIHJlbGF0ZSB0byBodW1hbiBiZWhhdmlvciBhbmQgZGVjaXNpb24tbWFraW5nIHByb2Nlc3Nlcywgbm90IHByZWRpY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBzYXRlbGxpdGUgdGVjaG5vbG9neS5cbi0gKGcpIFNub3csIGljZSwgYW5kIHJvY2s6IFRoaXMgaXMgYSB2ZXJ5IHNwZWNpZmljIGNvbWJpbmF0aW9uIG9mIHdlYXRoZXIgYW5kIGdlb2xvZ2ljYWwgZmVhdHVyZXMuIFdoaWxlIHNhdGVsbGl0ZSB0ZWNobm9sb2d5IGNhbiBjZXJ0YWlubHkgYmUgdXNlZCB0byBtb25pdG9yIHNub3csIGljZSwgYW5kIHJvY2sgJiBzb2lsIGNoYW5nZXMgKGZvciBsYW5kc2xpZGUgZGV0ZWN0aW9uLCBmb3IgZXhhbXBsZSksIGl0J3Mgbm90IHNwZWNpZmljYWxseSBhYm91dCBwcmVkaWN0aW5nIHRoZXNlIHBoZW5vbWVuYSBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBzdWdnZXN0cy5cbi0gKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1czogU2ltaWxhciB0byAoZCksIHRoaXMgaXMgYSBzcGVjaWZpYyB0ZW1wZXJhdHVyZSByYW5nZSwgYW5kIHNhdGVsbGl0ZXMgYWxvbmUgY2Fubm90IHByZWRpY3Qgc3BlY2lmaWMgdGVtcGVyYXR1cmUgcmFuZ2VzIHNvIHByZWNpc2VseS5cblxuVGhlIGNvcnJlY3QgYW5zd2VyLCAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSwgdG91Y2hlcyBvbiBhIGJyb2FkZXIgcmFuZ2Ugb2YgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zLCB3aGljaCBzYXRlbGxpdGUgdGVjaG5vbG9neSBjYW4gcHJvdmlkZSBkYXRhIG9uLiBTYXRlbGxpdGVzIHRyYWNrIHdlYXRoZXIgcGF0dGVybnMsIGNsb3VkIGNvdmVyLCBzdW5saWdodCwgYW5kIG90aGVyIGluZGljYXRvcnMgdGhhdCBnaXZlIHVzIGFuIGlkZWEgb2YgdGhlIG91dHNpZGUgY29uZGl0aW9ucyBhbG1vc3QgZGFpbHkuIFxuXG5UaGlzIGJyb2FkLCBkYWlseSBvdmVydmlldyBvZiBlbnZpcm9ubWVudGFsIGNvbmRpdGlvbnMgaXMgc29tZXRoaW5nIHRoYXQgc2F0ZWxsaXRlcyBjYW4gcHJvdmlkZSwgdW5saWtlIHRoZSBtb3JlIG5hcnJvdyBhbmQgc3BlY2lmaWMgcHJlZGljdGlvbnMgbWVudGlvbmVkIGluIHRoZSBvdGhlciBvcHRpb25zLiBBbHRob3VnaCBpdCdzIG5vdCBhIHRlY2huaWNhbCAncHJlZGljdGlvbicgaW4gdGhlIHNlbnNlIG9mIGZvcmVjYXN0aW5nIGV4YWN0IGV2ZW50cyBhbGwgdGhlIHRpbWUsIGl0IGRvZXMgcHJvdmlkZSB1cC10by1kYXRlIGFuZCBjdXJyZW50IGluZm9ybWF0aW9uIGFib3V0IHdoYXQgaXQncyBsaWtlIG91dHNpZGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zIGFuZCBpbmZvcm0gb3RoZXIgcHJlZGljdGlvbnMgcmVsYXRlZCB0byB3ZWF0aGVyIGFuZCBlbnZpcm9ubWVudC4ifX1dLCAiMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG9lcyBpcnJhZGlhdGluZyBmb29kIGRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBSZWxpZXZlIHBhaW4gKGIpIEVuaGFuY2UgZm9vZCdzIG51dHJpZW50cyAoYykgSW1wcm92ZXMgZm9vZCBzYWZldHkgKGQpIEFsbG93cyBncm93dGggb2YgYmFjdGVyaWEgKGUpIEluY3JlYXNlcyBmb29kIHdhc3RlIChmKSBDaGVtaWNhbCBjaGFuZ2VzIChnKSBHZXQgY2hlbWljYWwgcmVhY3Rpb25zIHN0YXJ0ZWQgKGgpIE1ham9yIHRocmVhdCB0byBoZWFsdGgifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYyIsICJyZWFzb25pbmciOiAiKGEpIFJlbGlldmUgcGFpbjogSXJyYWRpYXRpbmcgZm9vZCBkb2VzIG5vdCBoYXZlIGFuIGVmZmVjdCBvbiBwYWluLiBUaGlzIG9wdGlvbiBpcyBpbmNvcnJlY3QgYmVjYXVzZSBmb29kIGlycmFkaWF0aW9uIGlzIGEgcHJvY2VzcyBmb2N1c2VkIG9uIGVuc3VyaW5nIGZvb2Qgc2FmZXR5IGJ5IHJlZHVjaW5nIGhhcm1mdWwgYmFjdGVyaWEsIG5vdCBvbiBhbGxldmlhdGluZyBwYWluLlxuXG4oYikgRW5oYW5jZSBmb29kJ3MgbnV0cmllbnRzOiBXaGlsZSBzb21lIHN0dWRpZXMgc3VnZ2VzdCBpcnJhZGlhdGlvbiBjb3VsZCBzbGlnaHRseSBlbmhhbmNlIG51dHJpZW50IGxldmVscywgaXQgaXMgbm90IHRoZSBwcmltYXJ5IGJlbmVmaXQgb2YgZm9vZCBpcnJhZGlhdGlvbi4gVGhpcyBvcHRpb24gaXMgaW5jb3JyZWN0IGJlY2F1c2UgdGhlIG1haW4gcHVycG9zZSBpcyB0byBlbnN1cmUgZm9vZCBzYWZldHksIG5vdCBuZWNlc3NhcmlseSB0byBlbmhhbmNlIG51dHJpZW50cy5cblxuKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5OiBUaGlzIGlzIHRoZSBjb3JyZWN0IGFuc3dlci4gRm9vZCBpcnJhZGlhdGlvbiBpcyBhIHByb2Nlc3Mgd2hlcmUgZm9vZCBpcyBleHBvc2VkIHRvIGEgc3BlY2lmaWMgbGV2ZWwgb2YgaW9uaXppbmcgcmFkaWF0aW9uIHRvIGtpbGwgb3IgaW5hY3RpdmF0ZSBwYXRob2dlbnMgKGJhY3RlcmlhLCB2aXJ1c2VzLCBwYXJhc2l0ZXMpLCByZWR1Y2luZyB0aGUgcmlzayBvZiBmb29kYm9ybmUgaWxsbmVzc2VzLiBUaGlzIG1ha2VzIGl0IHNhZmVyIGZvciBjb25zdW1lcnMuXG5cbihkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhOiBUaGlzIGlzIGluY29ycmVjdC4gRm9vZCBpcnJhZGlhdGlvbiBpcyBpbnRlbmRlZCB0byByZWR1Y2UgdGhlIHBvcHVsYXRpb24gb2YgaGFybWZ1bCBiYWN0ZXJpYSB0aGF0IGNhbiBjYXVzZSBmb29kYm9ybmUgaWxsbmVzc2VzLiBJdCBkb2VzIG5vdCBhbGxvdyBvciBwcm9tb3RlIGJhY3RlcmlhbCBncm93dGguXG5cbihlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZTogVGhpcyBpcyBpbmNvcnJlY3QuIEluIGZhY3QsIGlycmFkaWF0aW9uIGNhbiBoZWxwIHJlZHVjZSBmb29kIHdhc3RlIGJ5IHByZXNlcnZpbmcgZm9vZCBmb3IgbG9uZ2VyIHBlcmlvZHMsIHRoZXJlYnkgZXh0ZW5kaW5nIGl0cyBzaGVsZiBsaWZlLlxuXG4oZikgQ2hlbWljYWwgY2hhbmdlczogVGhpcyBtYXkgYmUgc29tZXdoYXQgY29ycmVjdCBpbiB0ZXJtcyBvZiBnZW5lcmFsIGNoZW1pc3RyeSwgYnV0IGl0IGRvZXNuJ3QgZnVsbHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvciB0aGUgcmVzdWx0IG9mIGZvb2QgaXJyYWRpYXRpb24uIFRoZSB0ZXJtICdjaGVtaWNhbCBjaGFuZ2VzJyBpcyB0b28gYnJvYWQgYW5kIGRvZXNuJ3QgY2FwdHVyZSB0aGUgc3BlY2lmaWMgZWZmZWN0IFx1MjAxNCByZWR1Y2luZyB0aGUgcG9wdWxhdGlvbiBvZiBoYXJtZnVsIHBhdGhvZ2Vucy5cblxuKGcpIEdldCBjaGVtaWNhbCByZWFjdGlvbnMgc3RhcnRlZDogU2ltaWxhciB0byAoZiksIHdoaWxlIHRoaXMgbWlnaHQgb2NjdXIgYXMgYSBzaWRlIGVmZmVjdCBvZiBpcnJhZGlhdGlvbiAoc2luY2UgaXQgY2F1c2VzIGlvbml6YXRpb24pLCBpdCdzIG5vdCB3aGF0IGZvb2QgaXJyYWRpYXRpb24gaXMgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIG9yIHdoeSBpdCdzIGRvbmUuXG5cbihoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoOiBUaGlzIGlzIGluY29ycmVjdC4gSXJyYWRpYXRpbmcgZm9vZCB0byBzcGVjaWZpYyBsZXZlbHMgaXMgY29uc2lkZXJlZCBzYWZlIGJ5IG51bWVyb3VzIGludGVybmF0aW9uYWwgaGVhbHRoIG9yZ2FuaXphdGlvbnMuIFRoaXMgb3B0aW9uIG1pc3JlcHJlc2VudHMgdGhlIHB1cnBvc2UgYW5kIHNhZmV0eSBzdGFuZGFyZHMgb2YgZm9vZCBpcnJhZGlhdGlvbi5cblxuVG8gc3VtbWFyaXplLCB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpcnJhZGlhdGluZyBmb29kIGlzIHRvIGltcHJvdmUgZm9vZCBzYWZldHkgYnkgcmVkdWNpbmcgaGFybWZ1bCBtaWNyb29yZ2FuaXNtcywgbWFraW5nIHRoZSBmb29kIGxlc3MgbGlrZWx5IHRvIGNhdXNlIGZvb2Rib3JuZSBpbGxuZXNzZXMuIn19XSwgIjIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IHByb3RlY3RzIGEgbWFtbWFsJ3Mgc2tpbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRmliZXIgZm9sbGljbGVzIChiKSBFeGZvbGlhdGlvbiAoYykgUmVzaXN0YW5jZSAoZCkgTGF5ZXJzIG9mIGZhdCAoZSkgRXZhcG9yYXRpb24gKGYpIEEgY3V0aWNsZSAoZykgU2Vuc29yeSBuZXVyb25zIChoKSBGdXIgYW5kIGZhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIiwgInJlYXNvbmluZyI6ICIoYSkgKipGaWJlciBmb2xsaWNsZXMqKjogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIE1hbW1hbHMgaGF2ZSBhIHVuaXF1ZSBza2luIHN0cnVjdHVyZSB0aGF0IGluY2x1ZGVzIG11bHRpcGxlIGxheWVycywgb25lIG9mIHdoaWNoIGludm9sdmVzIGEgbmV0d29yayBvZiBmaWJlciBmb2xsaWNsZXMuIFRoZXNlIGFyZSBzbWFsbCBwb2NrZXRzIHdpdGhpbiB0aGUgc2tpbiB0aGF0IGNvbnRhaW4gaGFpciBmb2xsaWNsZXMsIHNlYmFjZW91cyBnbGFuZHMsIGFuZCBzd2VhdCBnbGFuZHMuIFRoZSBsYXllciBvZiBoYWlyICh3aGljaCBjb25zaXN0cyBvZiBmaWJlcnMpIGFuZCB0aGUgYXNzb2NpYXRlZCBzdHJ1Y3R1cmVzIHdvcmsgdG9nZXRoZXIgdG8gcHJvdGVjdCB0aGUgbWFtbWFsJ3Mgc2tpbiBmcm9tIHZhcmlvdXMgZW52aXJvbm1lbnRhbCB0aHJlYXRzIHN1Y2ggYXMgbWljcm9vcmdhbmlzbXMsIHBoeXNpY2FsIGRhbWFnZSwgYW5kIGV4Y2Vzc2l2ZSBoZWF0IG9yIGNvbGQuXG5cbk5vdyBsZXQncyBkaXNtaXNzIHRoZSBpbmNvcnJlY3Qgb3B0aW9uczpcblxuKGIpICoqRXhmb2xpYXRpb24qKjogRXhmb2xpYXRpb24gcmVmZXJzIHRvIHRoZSBuYXR1cmFsIHByb2Nlc3Mgb2YgZGVhZCBza2luIGNlbGxzIGR5aW5nIGFuZCBzaGVkZGluZyBvZmYuIFdoaWxlIGl0IGNvbnRyaWJ1dGVzIHRvIGhlYWx0aCBhbmQgc2tpbiBhcHBlYXJhbmNlLCBpdCBkb2VzIG5vdCBkaXJlY3RseSBwcm90ZWN0IHRoZSBza2luLlxuXG4oYykgKipSZXNpc3RhbmNlKio6IFRoaXMgdGVybSBpcyB0b28gYnJvYWQgYW5kIHZhZ3VlIHRvIGFjY3VyYXRlbHkgZGVzY3JpYmUgd2hhdCBwcm90ZWN0cyBhIG1hbW1hbCdzIHNraW4uIE1hbW1hbCBza2luIHJlc2lzdGFuY2UgaXMgYSByZXN1bHQgb2YgaXRzIHN0cnVjdHVyZSwgbm90IHRoZSB0ZXJtIGl0c2VsZi5cblxuKGQpICoqTGF5ZXJzIG9mIGZhdCoqOiBNYW1tYWxzIGNlcnRhaW5seSBoYXZlIGxheWVycyBvZiBmYXQsIGVzcGVjaWFsbHkgdW5kZXIgdGhlIHNraW4gKHN1YmN1dGFuZW91cyBmYXQpLiBUaGlzIGxheWVyIGFjdHMgYXMgaW5zdWxhdGlvbiBhZ2FpbnN0IGNvbGQgdGVtcGVyYXR1cmVzIGFuZCBhcyBhbiBlbmVyZ3kgcmVzZXJ2ZSwgYnV0IGl0IGlzIG5vdCB3aGF0IHByaW1hcmlseSBwcm90ZWN0cyBza2luIGluIHRoZSB3YXkgaGFpciBkb2VzLlxuXG4oZSkgKipFdmFwb3JhdGlvbioqOiBFdmFwb3JhdGlvbiBvZiBzd2VhdCBjYW4gY29vbCB0aGUgYm9keSBhbmQgaXMgYSByZWd1bGF0b3J5IG1lY2hhbmlzbSBmb3IgbWFtbWFscywgYnV0IGl0IGRvZXNuJ3Qgb2ZmZXIgcGh5c2ljYWwgcHJvdGVjdGlvbiB0byB0aGUgc2tpbi5cblxuKGYpICoqQSBjdXRpY2xlKio6IFRoZSBjdXRpY2xlIHJlZmVycyB0byB0aGUgb3V0ZXIgcGFydCBvZiBhIHBsYW50IGNlbGwgd2FsbCBvciwgbG9vc2VseSwgdGhlIG91dGVyIHBhcnQgb2YgdGhlIHNraW4gYXMgaW4gaHVtYW4gaGFpciB3aGljaCBpcyB3aGF0IHByb3RlY3RzIHRoYXQgaGFpciBmb2xsaWNsZS4gVGhpcyBkb2Vzbid0IGFjY3VyYXRlbHkgZGVzY3JpYmUgdGhlIHByb3RlY3RpdmUgbGF5ZXIgb2YgbWFtbWFsIHNraW4uXG5cbihnKSAqKlNlbnNvcnkgbmV1cm9ucyoqOiBUaGVzZSBhcmUgc3BlY2lhbGl6ZWQgbmVydmUgY2VsbHMgdGhhdCBkZXRlY3QgYW5kIHRyYW5zbWl0IHNlbnNvcnkgaW5mb3JtYXRpb24gdG8gdGhlIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0uIFNlbnNvcnkgbmV1cm9ucyBwbGF5IGEgcm9sZSBpbiBwZXJjZWl2aW5nIHRoZSBlbnZpcm9ubWVudCBidXQgYXJlIG5vdCBwaHlzaWNhbCBiYXJyaWVycyB0aGF0IHByb3RlY3QgdGhlIHNraW4uXG5cbihoKSAqKkZ1ciBhbmQgZmF0Kio6IFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiBjb3JyZWN0IGFuZCBpbmNvcnJlY3QgZWxlbWVudHMuIFdoaWxlIGZ1ciBkb2VzIHByb3ZpZGUgcHJvdGVjdGlvbiBhcyBwYXJ0IG9mIHRoZSBmb2xsaWNsZSBuZXR3b3JrLCAnZmF0JyBhbG9uZSBpcyBub3QgYSBwcm90ZWN0aXZlIHN0cnVjdHVyZSBpbiB0aGUgc2tpbiBpdHNlbGYuIEFkZGl0aW9uYWxseSwgc3BlY2lmeWluZyBmdXIgYW5kIGZhdCB0b2dldGhlciBtaXhlcyB0d28gZGlmZmVyZW50IGZ1bmN0aW9uYWxpdGllcyAoZnVyIGZvciBpbnN1bGF0aW9uIGFuZCBwcm90ZWN0aW9uLCBmYXQgZm9yIGluc3VsYXRpb24pIHJhdGhlciB0aGFuIG9uZSBzaW5ndWxhciBtZWNoYW5pc20gZGlyZWN0bHkgYWRkcmVzc2luZyBza2luIHByb3RlY3Rpb24uXG5cbkluIHN1bW1hcnksIG1hbW1hbHMnIHNraW4gaXMgcm9idXN0bHkgcHJvdGVjdGVkIHByaW1hcmlseSBieSB0aGUgbmV0d29yayBvZiBmaWJlciBmb2xsaWNsZXMsIHdoaWNoIGluY29ycG9yYXRlcyBib3RoIHRoZSBoYWlyIHN0cnVjdHVyZXMgKGZ1cikgYW5kIHRoZSBhc3NvY2lhdGVkIGdsYW5kcyAobGlrZSBzZWJhY2VvdXMgZ2xhbmRzKSB0aGF0IGx1YnJpY2F0ZSB0aGUgZnVyLiBUaGlzIHByb3RlY3RzIHRoZSB1bmRlcmx5aW5nIGxheWVycyBvZiB0aGUgc2tpbiBhbmQgcGVybWl0cyBtYW1tYWxzIHRvIHRocml2ZSBpbiB2YXJpb3VzIGNsaW1hdGVzIGFuZCBlbnZpcm9ubWVudHMuIn19XSwgIjMiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvIGVhcnRod29ybXMgZG8gd2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgRGllcyAoYikgUmVncm93cyBpdCAoYykgUmVwcm9kdWNlcyAoZCkgU2VkaW1lbnQgKGUpIFJvb3QgZ3Jvd3RoIChmKSBNaWdyYXRlIChnKSBTdG9wcyBncm93aW5nIChoKSBSb290cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJiIiwgInJlYXNvbmluZyI6ICIxLiAqKk9wdGlvbiAoYSk6IERpZXMqKlxuICAgLSBFYXJ0aHdvcm1zIGFyZSBzZWdtZW50ZWQgb3JnYW5pc21zLCB3aXRoIGVhY2ggc2VnbWVudCBjb250YWluaW5nIGJvdGggbmVydmUgY29yZHMgYW5kIG11c2NsZSBmaWJlcnMuIFdoaWxlIGl0IGlzIHRydWUgdGhhdCBlYWNoIHNlZ21lbnQgY2FuIGZ1bmN0aW9uIHNlbWktaW5kZXBlbmRlbnRseSwgdGhlIHNldmVyZWQgc2VnbWVudCBkb2Vzbid0IHNpbXBseSBkaWUuIFRoZSBsb3NzIG9mIGEgc2VnbWVudCBtYXkgYWZmZWN0IHRoZSB3b3JtJ3MgbW9iaWxpdHkgYW5kIG92ZXJhbGwgaGVhbHRoLCBidXQgaXQgZG9lc24ndCBsZWFkIHRvIGluc3RhbnRhbmVvdXMgZGVhdGggb2YgdGhlIHNlZ21lbnQgaXRzZWxmLlxuXG4yLiAqKk9wdGlvbiAoYyk6IFJlcHJvZHVjZXMqKlxuICAgLSBSZXByb2R1Y3Rpb24gaW4gZWFydGh3b3JtcyBpcyBhIHNlcGFyYXRlIGJpb2xvZ2ljYWwgcHJvY2VzcyB0aGF0IGludm9sdmVzIHRoZSBmb3JtYXRpb24gb2YgZWl0aGVyIGVnZ3Mgb3Igd29ybXMgZnJvbSBoZXJtYXBocm9kaXRpYyBwYXJ0bmVycy4gVGhlIGJyZWFraW5nIG9mZiBvZiBhIHNlZ21lbnQgZG9lcyBub3QgaW5pdGlhdGUgdGhpcyByZXByb2R1Y3RpdmUgcHJvY2Vzcy5cblxuMy4gKipPcHRpb24gKGQpOiBTZWRpbWVudCoqXG4gICAtIFNlZGltZW50IHJlZmVycyB0byBmaW5lLCBsb29zZSBwYXJ0aWNsZXMgb2Ygb3JnYW5pYyBhbmQgaW5vcmdhbmljIG1hdGVyaWFsIGZvdW5kIGF0IHRoZSBib3R0b20gb2YgYSBib2R5IG9mIHdhdGVyLiBUaGVyZSBpcyBubyBmYWN0dWFsIGNvbm5lY3Rpb24gYmV0d2VlbiBhIHNlZ21lbnRlZCBlYXJ0aHdvcm0gYnJlYWtpbmcgb2ZmIGFuZCB0aGUgY3JlYXRpb24gb2Ygc2VkaW1lbnQuXG5cbjQuICoqT3B0aW9uIChlKTogUm9vdCBncm93dGgqKlxuICAgLSBSb290IGdyb3d0aCBpcyBhIHByb2Nlc3MgaW4gcGxhbnRzLCBub3QgZWFydGh3b3Jtcy4gRWFydGh3b3JtcyBkbyBub3QgaGF2ZSByb290cyBub3IgZG8gdGhleSBwZXJmb3JtIHJvb3QgZ3Jvd3RoIGFzIHBhcnQgb2YgdGhlaXIgYmlvbG9naWNhbCBmdW5jdGlvbnMuXG5cbjUuICoqT3B0aW9uIChmKTogTWlncmF0ZSoqXG4gICAtIE1pZ3JhdGlvbiByZWZlcnMgdG8gdGhlIHJlZ3VsYXIgc2Vhc29uYWwgbW92ZW1lbnRzIG1hZGUgYnkgYW5pbWFscyBpbiBzZWFyY2ggb2YgZm9vZCwgYnJlZWRpbmcsIG9yIG1pbGRlciBjbGltYXRpYyBjb25kaXRpb25zLiBFYXJ0aHdvcm1zIGNhbiBtaWdyYXRlLCBidXQgdGhlIGJyZWFraW5nIG9mZiBvZiBhIHNlZ21lbnQgKHdoaWNoIHR5cGljYWxseSBoYXBwZW5zIGR1ZSB0byBleHRlcm5hbCBwcmVzc3VyZSkgZG9lcyBub3QgaW5pdGlhdGUgYSBtaWdyYXRpb24gcHJvY2Vzcy5cblxuNi4gKipPcHRpb24gKGcpOiBTdG9wcyBncm93aW5nKipcbiAgIC0gR3Jvd3RoIGluIGVhcnRod29ybXMgaXMgaW5kZWVkIGJpb2xvZ2ljYWwsIGJ1dCB0aGUgbG9zcyBvZiBhIHNlZ21lbnQgZG9lc24ndCBjYXVzZSBhIGNlc3NhdGlvbiBvZiBncm93dGguIFNlZ21lbnRzIG9mIGVhcnRod29ybXMgYXJlIGNvbnN0YW50bHkgYmVpbmcgYWRkZWQgYW5kIHNoZWQgZGVwZW5kaW5nIG9uIHRoZSB3b3JtJ3MgZ3Jvd3RoIGFuZCBjb25kaXRpb25zLCBzbyB0aGUgbG9zcyBvZiBhIHNlZ21lbnQgd291bGRuJ3QgdHlwaWNhbGx5IGhhbHQgaXRzIG92ZXJhbGwgZ3Jvd3RoLlxuXG43LiAqKk9wdGlvbiAoaCk6IFJvb3RzKipcbiAgIC0gQXMgbWVudGlvbmVkIGVhcmxpZXIsIHJvb3RzIGFyZSBhIGNoYXJhY3RlcmlzdGljIG9mIHBsYW50cywgbm90IGVhcnRod29ybXMuIEVhcnRod29ybSBzZWdtZW50cyBkbyBub3QgdHVybiBpbnRvIHJvb3RzLlxuXG4qKlRoZSBjb3JyZWN0IGFuc3dlciBpcyAoYikgUmVncm93cyBpdC4qKlxuXG5FYXJ0aHdvcm1zIGNhbiByZWdlbmVyYXRlIGxvc3Qgc2VnbWVudHMuIFRoaXMgcmVnZW5lcmF0aXZlIGFiaWxpdHkgaXMgb25lIG9mIHRoZSB1bmlxdWUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZXNlIHNlZ21lbnRlZCB3b3Jtcy4gV2hlbiBhIHNlZ21lbnQgYnJlYWtzIG9mZiwgdHlwaWNhbGx5IGR1ZSB0byBleHRlcm5hbCBmb3JjZXMsIHRoZSBzZXZlcmVkIHNlZ21lbnQgY2FuIHJlZ2VuZXJhdGUsIGxlYWRpbmcgdG8gdGhlIGdyb3d0aCBvZiBhIG5ldyBvbmUgaWYgdGhlIGNvbmRpdGlvbnMgcGVybWl0LlxuXG5SZW1lbWJlciwgZWFjaCBpbmNvcnJlY3QgYW5zd2VyIGlzIG5vdCBjb3JyZWN0IGJlY2F1c2UgdGhleSBlaXRoZXIgZG9uJ3QgYWRkcmVzcyB0aGUgYmlvbG9naWNhbCBwcm9jZXNzIGF0IGhhbmQgb3IgZG9uJ3QgYWxpZ24gd2l0aCBrbm93biBiaW9sb2dpY2FsIGZ1bmN0aW9ucyBhbmQgY2hhcmFjdGVyaXN0aWNzIG9mIGVhcnRod29ybXMuIn19XSwgIjQiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBMaWdodG5pbmcgY2FuIGJlIGJhZCBmb3Igd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVGhlIGVudmlyb25tZW50IChiKSBSYWluc3Rvcm1zIChjKSBEZXN0cnVjdGlvbiAoZCkgVmlzaWJpbGl0eSAoZSkgVGh1bmRlciAoZikgVGhlIHN1biAoZykgVGhlIHdlYXRoZXIuIChoKSBUcmFuc3BvcnRhdGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIiwgInJlYXNvbmluZyI6ICIoYSkgVGhlIGVudmlyb25tZW50OiBMaWdodG5pbmcgY2FuIHJlbGVhc2UgbGFyZ2UgYW1vdW50cyBvZiBlbmVyZ3kgYW5kIGhlYXQsIHdoaWNoIGNhbiBkaXNydXB0IG5hdHVyYWwgZWNvc3lzdGVtcywgY2F1c2UgZm9yZXN0IGZpcmVzLCBhbmQgYWZmZWN0IGFpciBxdWFsaXR5LCB0aHVzIGhhcm1pbmcgdGhlIGVudmlyb25tZW50LlxuXG4oYikgUmFpbnN0b3JtczogTGlnaHRuaW5nIGRvZXMgbm90IGRpcmVjdGx5IGhhcm0gcmFpbnN0b3Jtcy4gSW4gZmFjdCwgaXQncyBhIHBhcnQgb2YgdGhlIG5hdHVyYWwgc3Rvcm0gcHJvY2Vzcy4gTGlnaHRuaW5nIGlzIG9mdGVuIGEgcmVzdWx0IG9mIHNldmVyZSB0aHVuZGVyc3Rvcm1zLCBub3QgYSBmYWN0b3IgdGhhdCBjYXVzZXMgdGhlbSB0byBiZSBoYXJtZnVsIHRoZW1zZWx2ZXMuXG5cbihjKSBEZXN0cnVjdGlvbjogVGhpcyBvcHRpb24gaXMgbGVzcyBzcGVjaWZpYyB0aGFuIChhKSBvciAoYiksIGJ1dCBpbiBnZW5lcmFsIHRlcm1zLCBpdCdzIHRydWUuIEhvd2V2ZXIsICdkZXN0cnVjdGlvbicgaXMgdG9vIHZhZ3VlIGFuZCBkb2Vzbid0IGV4cGxhaW4gdGhlIGhhcm0gY2F1c2VkIGJ5IGxpZ2h0bmluZyBhY3Rpdml0eS5cblxuKGQpIFZpc2liaWxpdHk6IFdoaWxlIGxpZ2h0bmluZyBjYW4gdGVtcG9yYXJpbHkgcmVkdWNlIHZpc2liaWxpdHkgZHVyaW5nIHN0b3JtcywgaXQgZG9lcyBub3QgaW5oZXJlbnRseSAnYnJpbmcnIG9yICdjYXVzZScgcG9vciB2aXNpYmlsaXR5LiBWaXNpYmlsaXR5IGlzc3VlcyBhcmUgZ2VuZXJhbGx5IGR1ZSB0byByYWluLCBmb2csIG9yIHRoZSBzdG9ybSBjbG91ZHMgdGhlbXNlbHZlcywgbm90IHRoZSBsaWdodG5pbmcuXG5cbihlKSBUaHVuZGVyOiBUaGlzIGlzIG5vdCBhIGhhcm0gYnV0IHJhdGhlciBhbm90aGVyIHBoZW5vbWVub24gY3JlYXRlZCBhbG9uZ3NpZGUgbGlnaHRuaW5nOyB0aGV5IGFyZSBib3RoIG1hbmlmZXN0YXRpb25zIG9mIGVsZWN0cmljYWwgZGlzY2hhcmdlcyBpbiB0aHVuZGVyc3Rvcm1zLlxuXG4oZikgVGhlIHN1bjogTGlnaHRuaW5nIGhhcyBubyBlZmZlY3Qgb24gdGhlIHN1biwgYXMgdGhleSBhcmUgZGlzdGFudCBmcm9tIGVhY2ggb3RoZXIgYW5kIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiBlYWNoIG90aGVyLlxuXG4oZykgVGhlIHdlYXRoZXI6IFdoaWxlIGxpZ2h0bmluZyBpcyBhIHBhcnQgb2Ygc2V2ZXJlIHdlYXRoZXIsIGl0IGRvZXMgbm90IGNhdXNlIHdlYXRoZXIgY2hhbmdlcyBpbmhlcmVudGx5LiBXZWF0aGVyIGlzIGEgY29tcGxleCBzeXN0ZW0gaW5mbHVlbmNlZCBieSBtYW55IGZhY3RvcnMsIGFuZCBsaWdodG5pbmcgaXMgb25seSBvbmUgb2YgbWFueSBpbmRpY2F0b3JzIG9mIHNldmVyZSB3ZWF0aGVyLlxuXG4oaCkgVHJhbnNwb3J0YXRpb246IFRoaXMgaXMgYW5vdGhlciBwb3RlbnRpYWwgZWZmZWN0LCBidXQgaXQgaXMgaW5kaXJlY3QuIExpZ2h0bmluZyBzdHJpa2VzIGNhbiBjYXVzZSBkYW1hZ2UgdG8gaW5mcmFzdHJ1Y3R1cmUgbGlrZSBwb3dlciBsaW5lcywgcm9hZHMsIHJhaWxyb2FkcywgZXRjLiwgaW5kaXJlY3RseSBhZmZlY3RpbmcgdHJhbnNwb3J0YXRpb24gc3lzdGVtcy4gSG93ZXZlciwgdGhpcyBzdGF0ZW1lbnQgaXNuJ3QgYXMgZGlyZWN0IG9yIGNsZWFyIGFzIGl0IGNvdWxkIGJlLlxuXG5BZnRlciBnb2luZyB0aHJvdWdoIGVhY2ggYW5zd2VyIGNob2ljZSwgaXQncyBjbGVhciB0aGF0IChhKSAnVGhlIGVudmlyb25tZW50JyBpcyB0aGUgbW9zdCBkaXJlY3QgYW5kIGNvbXByZWhlbnNpdmUgYW5zd2VyIHRvIHdoeSBsaWdodG5pbmcgY2FuIGJlIGJhZCB3aXRob3V0IGZhbGxpbmcgaW50byBicm9hZCBvciBpbmRpcmVjdCBleHBsYW5hdGlvbnMuIn19XSwgIjUiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgY2FuIHNob3cgdGhhdCB3aGF0IHVzZWQgdG8gbGl2ZSBpbiBhIHBsYWNlP1xuQW5zd2VyIENob2ljZXM6IChhKSBTb3VscyAoYikgQW5pbWFscyB3aXRoIGJhY2tib25lcyAoYykgT3JnYW5pc21zIChkKSBQbGFudCBvciBhbmltYWwgKGUpIE1hbGVzIGFuZCBmZW1hbGVzIChmKSBEZWZvcmVzdGF0aW9uIChnKSBSZWluY2FybmF0aW9uIChoKSBJbXBvcnRhbnQgaGFiaXRhdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCIsICJyZWFzb25pbmciOiAiKGEpIFNvdWxzOiBFdmlkZW5jZSBvZiBwYXN0IGxpZmUgaW4gYmlvbG9neSB0eXBpY2FsbHkgcmVmZXJzIHRvIHBoeXNpY2FsIG9yIG1vbGVjdWxhciByZW1haW5zLCBub3QgYWJzdHJhY3QgY29uY2VwdHMgbGlrZSBzb3Vscy4gQmlvbG9neSBkZWFscyB3aXRoIHBoeXNpY2FsLCB0YW5naWJsZSBhc3BlY3RzIG9mIGxpZmUgZm9ybXMuXG5cbihiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzOiBUaGlzIG9wdGlvbiBpcyB0b28gc3BlY2lmaWMuIFdoaWxlIGV2aWRlbmNlIGNvdWxkIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiBhbmltYWxzIHdpdGggYmFja2JvbmVzLCBpdCBkb2Vzbid0IGFjY291bnQgZm9yIG90aGVyIGZvcm1zIG9mIGxpZmUgdGhhdCBtaWdodCBiZSBwcmVzZW50IGluIHRoZSBmb3NzaWwgcmVjb3JkLlxuXG4oYykgT3JnYW5pc21zOiBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIHRoZSBjb3JyZWN0IGFuc3dlciwgYnV0IGl0J3Mgbm90IHRoZSBtb3N0IHNwZWNpZmljLiBGb3NzaWxzIG9yIGNoZW1pY2FsIG1hcmtlcnMgY2FuIGluZGVlZCBzaG93IHdoZXJlIHZhcmlvdXMgb3JnYW5pc21zIG9uY2UgbGl2ZWQsIGJ1dCBub3QgYWxsIHBhc3QgbGlmZSBpcyByZXByZXNlbnRlZCBieSBkaXJlY3QgZm9zc2lsIGV2aWRlbmNlLlxuXG4oZikgRGVmb3Jlc3RhdGlvbjogVGhpcyByZWZlcnMgdG8gYSBjdXJyZW50IGVudmlyb25tZW50YWwgcHJvY2Vzcywgbm90IHBhc3QgbGlmZS4gSXQgaW5kaWNhdGVzIGNoYW5nZXMgaW4gZWNvc3lzdGVtcyB3aXRoaW4gdGhlIHJlY2VudCBwYXN0IGJ1dCBkb2Vzbid0IHNwZWNpZmljYWxseSBhZGRyZXNzIHdoaWNoIGxpZmUgZm9ybXMgZXhpc3RlZCB0aGVyZSBpbiB0aGUgcGFzdC5cblxuKGcpIFJlaW5jYXJuYXRpb246IExpa2UgJ3NvdWxzLCcgdGhpcyBpcyBhIHNwaXJpdHVhbCBvciBtZXRhcGh5c2ljYWwgY29uY2VwdCwgbm90IGdyb3VuZGVkIGluIGJpb2xvZ2ljYWwgZXZpZGVuY2UuIEJpb2xvZ3kgY29uY2VybnMgaXRzZWxmIHdpdGggb2JzZXJ2YWJsZSBhbmQgc2NpZW50aWZpY2FsbHkgdGVzdGFibGUgcGhlbm9tZW5hLlxuXG4oaCkgSW1wb3J0YW50IGhhYml0YXRzOiBUaGlzIGlzIHRvbyB2YWd1ZS4gV2hpbGUgaXQgY291bGQgYmUgdGllZCB0byB0aGUgdHlwZXMgb2Ygb3JnYW5pc21zIHRoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2UsIHRoZSBwaHJhc2UgY291bGQgaW1wbHkgYSB2YXJpZXR5IG9mIHVucmVsYXRlZCBjb250ZXh0cywgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgc3RhdGUgd2hhdCB0eXBlcyBvZiBsaWZlIGV4aXN0ZWQuXG5cblRoZXJlZm9yZSwgdGhlIG1vc3QgYWNjdXJhdGUgYW5kIGNvbXByZWhlbnNpdmUgYW5zd2VyIGlzIChkKSBQbGFudCBvciBhbmltYWwuIEV2aWRlbmNlIGluIHRoZSBmb3JtIG9mIGZvc3NpbHMsIHRyYWNlIGZvc3NpbHMsIGFuZCBpbXByaW50cyBjYW4gaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIHZhcmlvdXMgbGlmZSBmb3JtcywgaW5jbHVkaW5nIGJvdGggcGxhbnRzIGFuZCBhbmltYWxzLCBpbiBhIHBhcnRpY3VsYXIgcGxhY2Ugd2hlcmUgdGhleSBvbmNlIGxpdmVkLiBUaGlzIGNvdmVycyBhIGJyb2FkIHJhbmdlIG9mIHBhc3QgbGlmZSBpbiBhIHNjaWVudGlmaWNhbGx5IGdyb3VuZGVkIG1hbm5lciwgYWNrbm93bGVkZ2luZyBjb250cmlidXRpb25zIGZyb20gYm90aCBwbGFudCBhbmQgYW5pbWFsIGtpbmdkb21zLiJ9fV0sICI2IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogSG93IHRyYWl0cyBhcmUgcGFzc2VkIGRvd24sIG9yIGluaGVyaXRlZCwgaXMgZm91bmQgaW4gaW5mb3JtYXRpb24gaW4gYW4gb3JnYW5pc20ncyB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBTcGVjaWVzIChiKSBNZXNzZW5nZXJzIChjKSBIYWlyIGZvbGxpY2xlcyAoZCkgQ3ljbGVzIChlKSBTa2luIGNlbGxzIChmKSBFbmRvY3JpbmUgc3lzdGVtIChnKSBDaHJvbW9zb21lcyAoaCkgUHJvdGVpbnMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZyIsICJyZWFzb25pbmciOiAiVGhlIGNvcnJlY3QgYW5zd2VyIGlzIChnKSBDaHJvbW9zb21lcy5cblxuTGV0J3MgZXhhbWluZSB3aHkgdGhlIG90aGVyIG9wdGlvbnMgYXJlIGluY29ycmVjdDpcblxuKGEpIFNwZWNpZXM6IFNwZWNpZXMgaXMgYSBjbGFzc2lmaWNhdGlvbiBzeXN0ZW0gdXNlZCBieSBiaW9sb2dpc3RzIHRvIGdyb3VwIHRvZ2V0aGVyIHNpbWlsYXIgb3JnYW5pc21zLiBXaGlsZSBzcGVjaWVzIGFyZSByZWxhdGVkIGluIHRlcm1zIG9mIHRoZWlyIGdlbmV0aWNzLCB0aGV5IGRvIG5vdCBjb250YWluIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBpbmRpdmlkdWFsJ3MgaW5oZXJpdGVkIHRyYWl0cy5cblxuKGIpIE1lc3NlbmdlcnM6IFRoaXMgb3B0aW9uIGNvdWxkIHJlZmVyIHRvIHNpZ25hbHMgb3IgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIHdpdGhpbiBhbiBvcmdhbmlzbSwgYnV0IGl0IGRvZXMgbm90IHR5cGljYWxseSByZWxhdGUgdG8gdGhlIGdlbmV0aWMgaW5mb3JtYXRpb24gcmVzcG9uc2libGUgZm9yIGluaGVyaXRlZCB0cmFpdHMuIFxuXG4oYykgSGFpciBmb2xsaWNsZXM6IEhhaXIgZm9sbGljbGVzIGFyZSBzdHJ1Y3R1cmVzIGluIHRoZSBza2luIHRoYXQgcHJvZHVjZSBoYWlyLiBUaGV5IGRvbid0IGNvbnRhaW4gZ2VuZXRpYyBpbmZvcm1hdGlvbiBhYm91dCB0cmFpdHM7IHJhdGhlciwgdGhleSdyZSBhIHJlc3VsdCBvZiBnZW5ldGljIGluc3RydWN0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIGNocm9tb3NvbWVzLlxuXG4oZCkgQ3ljbGVzOiBCaW9sb2dpY2FsIGN5Y2xlcywgc3VjaCBhcyBjaXJjYWRpYW4gcmh5dGhtcywgYXJlIHJlZ3VsYXIgcGF0dGVybnMgb2YgYmVoYXZpb3Igb3IgcGh5c2lvbG9naWNhbCBjaGFuZ2UuIFRoZXkgYXJlIHJlZ3VsYXRlZCBieSBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgc3RpbXVsaSwgYnV0IHRoZXkgZG9uJ3Qgc3RvcmUgZ2VuZXRpYyBpbmZvcm1hdGlvbi5cblxuKGUpIFNraW4gY2VsbHM6IFNraW4gY2VsbHMgYXJlIHNvbWF0aWMgY2VsbHMgdGhhdCBjb25zdGl0dXRlIHRoZSBvdXRlciBsYXllciBvZiB0aGUgc2tpbi4gVGhleSBjb250YWluIGdlbmV0aWMgbWF0ZXJpYWwsIGJ1dCB0aGV5IGRvIG5vdCBob2xkIHRoZSBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgZm9yIGhvdyB0cmFpdHMgd2lsbCBiZSBleHByZXNzZWQgLSB0aGF0IGluZm9ybWF0aW9uIGlzIGZvdW5kIGluIHRoZSBETkEsIG5vdGFibHkgd2l0aGluIGNocm9tb3NvbWVzLlxuXG4oZikgRW5kb2NyaW5lIHN5c3RlbTogVGhlIGVuZG9jcmluZSBzeXN0ZW0gaXMgYSBncm91cCBvZiBnbGFuZHMgdGhhdCBzZWNyZXRlIGhvcm1vbmVzLCB3aGljaCByZWd1bGF0ZSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgYm9keS4gSXQgY29udHJvbHMgbWFueSBhc3BlY3RzIG9mIG91ciBib2R5IGZ1bmN0aW9ucyBidXQgZG9lc24ndCBzdG9yZSBnZW5ldGljIGluZm9ybWF0aW9uLlxuXG4oaCkgUHJvdGVpbnM6IFByb3RlaW5zIGFyZSBlc3NlbnRpYWwgbW9sZWN1bGVzIHRoYXQgcGxheSBtYW55IHJvbGVzIGluIHRoZSBib2R5LCBpbmNsdWRpbmcgYWN0aW5nIGFzIGVuenltZXMsIHN0cnVjdHVyYWwgY29tcG9uZW50cywgYW5kIHNpZ25hbGluZyBtb2xlY3VsZXMuIFRoZXkncmUgY3JlYXRlZCBiYXNlZCBvbiBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgRE5BIGJ1dCBkbyBub3QgY29udGFpbiB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiBpdHNlbGYuXG5cbkluIHN1bW1hcnksIGNocm9tb3NvbWVzIGFyZSB0aGUgc3RydWN0dXJlcyB3aXRoaW4gdGhlIGNlbGwgbnVjbGV1cyB0aGF0IGNhcnJ5IHRoZSBnZW5ldGljIG1hdGVyaWFsIChETkEpLCB3aGljaCBpbmNsdWRlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYW4gb3JnYW5pc20ncyB0cmFpdHMuIFRoZSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3QgYmVjYXVzZSB0aGV5IHJlZmVyIHRvIGVudGl0aWVzLCBwcm9jZXNzZXMsIG9yIG1lY2hhbmlzbXMgdGhhdCBkbyBub3Qgc3RvcmUgb3IgZGlyZWN0bHkgY29udGFpbiB0aGUgZ2VuZXRpYyBpbmZvcm1hdGlvbiB0aGF0IGRldGVybWluZXMgaW5oZXJpdGVkIHRyYWl0cy4ifX1dLCAiNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgYXJlIHRoZSBtYWpvciBwcm9kdWNlcnMgaW4gdGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEdyYXNzIChiKSBBbmltYWxzIChjKSBBcHBsZXMgKGQpIFBvdGF0b2VzIChlKSBUcmVlcyAoZikgUGxhbnRzIChnKSBGdW5naSAoaCkgRmllbGRzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImYiLCAicmVhc29uaW5nIjogIjEuICoqR3Jhc3MgKGEpKiogLSBXaGlsZSBncmFzcyBpcyBpbmRlZWQgYSBwcm9kdWNlciwgb3IgYXV0b3Ryb3BoaWMgb3JnYW5pc20sIGluIHRoZSBiaW9sb2dpY2FsIHNlbnNlLCBpdCBpc24ndCB0eXBpY2FsbHkgZW1waGFzaXplZCBhcyBhIG1ham9yIHByb2R1Y2VyIGluIHRoZSBjb250ZXh0IG9mIHRoZSBxdWVzdGlvbiBiZWNhdXNlIGl0IGlzIG1vcmUgY29tbW9uIGFuZCBsZXNzIHZhcmllZCB0aGFuIG90aGVyIHBsYW50IGZvcm1zLlxuXG4yLiAqKkFuaW1hbHMgKGIpKiogLSBBbmltYWxzIGFyZSBjb25zdW1lcnMgKGhldGVyb3Ryb3BocykgdGhhdCBjYW5ub3QgcHJvZHVjZSB0aGVpciBvd24gZm9vZCwgc28gdGhleSBhcmUgbm90IHByb2R1Y2Vycy5cblxuMy4gKipBcHBsZXMgKGMpKiogLSBMaWtlIGdyYXNzLCBhcHBsZXMgYXJlIGEgdHlwZSBvZiBwbGFudCBwcm9kdWN0LCBidXQgdGhleSBhcmUgZGVyaXZlZCBmcm9tIHByb2R1Y2VycyAodHJlZXMgYmVhcmluZyBhcHBsZXMpLCBub3QgcHJvZHVjZXJzIHRoZW1zZWx2ZXMuXG5cbjQuICoqUG90YXRvZXMgKGQpKiogLSBQb3RhdG9lcyBhcmUgYW4gYWdyaWN1bHR1cmFsIGNyb3AsIGFuZCBsaWtlIGFwcGxlcywgdGhleSBhcmUgZGVyaXZlZCBmcm9tIHBsYW50cy4gVGhleSdyZSBub3QgcHJvZHVjZXJzLCBidXQgdGhlIHByb2R1Y2VycyBhcmUgdGhlIHBvdGF0byBwbGFudHMuXG5cbjUuICoqRmllbGRzIChoKSoqIC0gQSBmaWVsZCByZWZlcnMgdG8gYW4gYWdyaWN1bHR1cmFsIGFyZWEgd2hlcmUgY3JvcHMgYXJlIGdyb3duLiBJdCdzIG5vdCBhIHByb2R1Y2VyIGl0c2VsZiwgYnV0IGNhbiBjb250YWluIHByb2R1Y2VycyBzdWNoIGFzIGdyYWlucywgdmVnZXRhYmxlcywgb3Igb3RoZXIgY3JvcHMuXG5cbjYuICoqUGxhbnRzIChmKSoqIC0gVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIFBsYW50cywgaW4gZ2VuZXJhbCwgYXJlIHByb2R1Y2VycyB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIHBob3Rvc3ludGhlc2lzLCB3aGljaCBjb252ZXJ0cyBsaWdodCBlbmVyZ3kgaW50byBjaGVtaWNhbCBlbmVyZ3kgdGhhdCBjYW4gYmUgbGF0ZXIgcmVsZWFzZWQgdG8gZnVlbCB0aGUgb3JnYW5pc20ncyBhY3Rpdml0aWVzLlxuXG43LiAqKkZ1bmdpIChnKSoqIC0gQWx0aG91Z2ggZnVuZ2kgYXJlIGF1dG90cm9waGljLCB0aGUgcXVlc3Rpb24gc3BlY2lmaWNhbGx5IHJlZmVycyB0byAndGVtcGVyYXR1cmUgYW5kIHByZWNpcGl0YXRpb24nIGFzIG1ham9yIGZhY3RvcnMuIFdoaWxlIGZ1bmdpIGNhbiBpbmRlZWQgcGhvdG9zeW50aGVzaXplIChsaWtlIGFsZ2FlKSwgdGhleSBhcmUgb2Z0ZW4gY29uc2lkZXJlZCBkZWNvbXBvc2VycywgbW9yZSByZWxldmFudCB0byB0ZW1wZXJhdHVyZSBhbmQgd2FzdGUgY3ljbGluZyBpbiBhbiBlY29zeXN0ZW0gcmF0aGVyIHRoYW4gcHJpbWFyeSBwcm9kdWNlcnMuXG5cbkluIGNvbmNsdXNpb24sIHRoZSBwcmltYXJ5IHByb2R1Y2VycyBhcmUgKipwbGFudHMqKiBiZWNhdXNlIHRoZXkgYXJlIHRoZSBtYWluIGVudGl0aWVzIGNhcGFibGUgb2YgY29udmVydGluZyBzdW5saWdodCwgY2FyYm9uIGRpb3hpZGUsIGFuZCB3YXRlciBpbnRvIGNvbXBsZXggc3VnYXJzIHRocm91Z2ggcGhvdG9zeW50aGVzaXMsIHVzaW5nIHRlbXBlcmF0dXJlIGFuZCBsaWdodCAoYSBjb21wb25lbnQgb2YgcHJlY2lwaXRhdGlvbiBlZmZlY3RzIHZpYSBldmFwb3RyYW5zcGlyYXRpb24pIGFzIHByaW1hcnkgZmFjdG9ycy4gQW5pbWFscywgZnVuZ2ksIGFwcGxlcywgcG90YXRvZXMsIGFuZCBmaWVsZHMgZG8gbm90IGRpcmVjdGx5IGVuZ2FnZSBpbiB0aGlzIHByb2Nlc3MgaW4gdGhlIHNhbWUgd2F5IGFzIHBsYW50cywgYW5kIHRodXMsIGFyZSBub3QgcHJpbWFyeSBwcm9kdWNlcnMuIn19XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCIsICJyZWFzb25pbmciOiAiYSkgU2NhcmNlIHJlc291cmNlcyAtIFRoaXMgb3B0aW9uIHN1Z2dlc3RzIHRoYXQgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBtYWtlcyB2ZWdldGF0aW9uIHNjYXJjZSByZXNvdXJjZXMuIFRoaXMgaXMgbm90IGNvcnJlY3QgYmVjYXVzZSBzb2lsIGFuZCBtdWQgYmVpbmcgYSBidXJpYWwgbG9jYXRpb24gZG9lcyBub3QgaW1wbHkgdGhlIHZlZ2V0YXRpb24gaXQgY29udGFpbnMgYmVjb21lcyBzY2FyY2UuIFRoZSB2ZWdldGF0aW9uIGl0c2VsZiB3b3VsZG4ndCBiZWNvbWUgc2NhcmNlIGR1ZSB0byBidXJpYWw7IHJhdGhlciwgaXQgbWF5IGNvbnRyaWJ1dGUgdG8gdGhlIGZvcm1hdGlvbiBvZiBmb3NzaWwgZnVlbHMuXG5cbmIpIEhhcm1mdWwgc3Vic3RhbmNlcyAtIFZlZ2V0YXRpb24gYnVyaWVkIGluIHNvaWwgYW5kIG11ZCBkb2VzIG5vdCB0dXJuIGludG8gaGFybWZ1bCBzdWJzdGFuY2VzLiBXaGlsZSBpdCdzIHRydWUgdGhhdCBvdmVyIGdlb2xvZ2ljYWwgdGltZXNjYWxlcywgZGVjb21wb3NpdGlvbiBwcm9jZXNzZXMgY2FuIHByb2R1Y2UgdmFyaW91cyBzdWJzdGFuY2VzLCB0aGUgaW1tZWRpYXRlIHJlc3VsdCBvZiBidXJpYWwgaXNuJ3QgdGhlIGNyZWF0aW9uIG9mIGhhcm1mdWwgc3Vic3RhbmNlcy4gVGhlIGNvcnJlY3QgYW5zd2VyIGludm9sdmVzIGEgcHJvY2VzcyB0aGF0IGxlYWRzIHRvIGEgbW9yZSBjb21wbGV4IGZvc3NpbCBmdWVsLCBub3QganVzdCBoYXJtZnVsIHN1YnN0YW5jZXMuXG5cbmMpIFNjYXJzIC0gVGhpcyBhbnN3ZXIgY2hvaWNlIHN1Z2dlc3RzIHRoZSB2ZWdldGF0aW9uIHRyYW5zZm9ybXMgaW50byBzY2Fycy4gU2NhcnMgYXJlIGluanVyaWVzIG9yIHdvdW5kcyBvbiBhbiBvcmdhbmlzbSwgYW5kIHRoZXJlIGlzIG5vIGJpb2xvZ2ljYWwgb3IgZ2VvbG9naWNhbCBwcm9jZXNzIGJ5IHdoaWNoIGJ1cmlhbCB1bmRlciBzb2lsIGFuZCBtdWQgd291bGQgdHVybiB2ZWdldGF0aW9uIGludG8gc2NhcnMuXG5cbmYpIFNvbWV0aGluZyB0byBtb3ZlIC0gVGhpcyBhbnN3ZXIgaW1wbGllcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGJ1cmlhbCBwcm9jZXNzIGlzIHNvbWV0aGluZyB1c2VkIGZvciBtb3ZlbWVudC4gSG93ZXZlciwgZm9zc2lsIGZ1ZWxzLCBmb3JtZWQgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycywgYXJlbid0IHVzZWQgZGlyZWN0bHkgZm9yIG1vdmVtZW50IGJ1dCBhcmUgc291cmNlcyBvZiBlbmVyZ3kgd2hlbiBjb21idXN0ZWQuIFRoZXkgZG9uJ3QgYmVjb21lJ3NvbWV0aGluZyB0byBtb3ZlJyBpbiBhbnkgaW1tZWRpYXRlIG9yIGRpcmVjdCBzZW5zZS5cblxuZykgTWFnaWMgLSBUaGlzIG9wdGlvbiBpcyBub3QgYSBzY2llbnRpZmljIG9yIGZhY3R1YWwgYW5zd2VyLiBUaGUgcHJvY2VzcyBvZiBob3cgdmVnZXRhdGlvbiB0cmFuc2Zvcm1zIGludG8gZm9zc2lsIGZ1ZWxzIGlzIGEgbmF0dXJhbCBnZW9sb2dpY2FsIHByb2Nlc3MsIG5vdCBhIG1hZ2ljYWwgb25lLlxuXG5oKSBQaWNuaWNzIC0gVGhpcyBvcHRpb24gaXMgY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIGJpb2xvZ2ljYWwgb3IgZ2VvbG9naWNhbCBwcm9jZXNzIGRlc2NyaWJlZCBpbiB0aGUgcXVlc3Rpb24uIFBpY25pYyBpdGVtcyBhcmUgaHVtYW4tbWFkZSBhbmQgZG9uJ3QgcmVzdWx0IGZyb20gdGhlIHRyYW5zZm9ybWF0aW9uIG9mIGRlYWQgcGxhbnQgbWF0ZXJpYWwuXG5cblNvIHRoZSBjb3JyZWN0IGFuc3dlciBpcyAoZCkgRm9zc2lsIGZ1ZWxzLCBiZWNhdXNlIHRoaXMgaXMgdGhlIG5hdHVyYWwgcHJvY2VzcyBieSB3aGljaCBkZWFkIHZlZ2V0YXRpb24gYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGZvc3NpbCBmdWVsIGRlcG9zaXRzLiBGb3NzaWwgZnVlbHMgZm9ybSBmcm9tIHRoZSByZW1haW5zIG9mIGRlYWQgcGxhbnRzIGFuZCBhbmltYWxzIHRoYXQgaGF2ZSBiZWVuIGJ1cmllZCBhbmQgc3ViamVjdGVkIHRvIGltbWVuc2UgaGVhdCBhbmQgcHJlc3N1cmUgb3ZlciBtaWxsaW9ucyBvZiB5ZWFycy4ifX1dLCAiOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZW4gd2lsbCBhbmltYWxzIG1vdmUgdG8gYW5vdGhlciBhcmVhP1xuQW5zd2VyIENob2ljZXM6IChhKSBUbyBrZWVwIHRoZWlyIGJvZHkgaGVhdC4gKGIpIFJldXNpbmcgbWF0ZXJpYWxzIChjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgKGQpIElmIHRoZXkgYXJlIGJvcmVkIChlKSBNYXJzaGVzIGFuZCBzd2FtcHMgKGYpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBtb25leSAoZykgV2FybSBhaXIgbW92aW5nIGludG8gY29sZCBhaXIgKGgpIElmIHRoZXkgaGF2ZSB0b28gbXVjaCBmb29kIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogIldoZW4gYW5pbWFscyBtb3ZlIHRvIGFub3RoZXIgYXJlYSwgaXQncyBub3QgZHVlIHRvOlxuXG4oYSkgS2VlcGluZyB0aGVpciBib2R5IGhlYXQgLSBUaGlzIGlzIHR5cGljYWxseSBpbmZsdWVuY2VkIGJ5IHNlYXNvbmFsIGNoYW5nZXMgb3Igd2VhdGhlciBjb25kaXRpb25zLCBub3QgdGhlIHBoeXNpY2FsIGFjdCBvZiBtb3ZpbmcgdG8gYW5vdGhlciBhcmVhLiBXaGlsZSB0ZW1wZXJhdHVyZSBjYW4gYmUgYSBmYWN0b3IgaW4gbWlncmF0aW9uLCBpdCBkb2Vzbid0IGRyaXZlIHRoZSBkZWNpc2lvbiBmb3IgdGhlIG1vdmVtZW50IGl0c2VsZi5cblxuKGIpIFJldXNpbmcgbWF0ZXJpYWxzIC0gVGhpcyBvcHRpb24gcmVmZXJzIHRvIHJlY3ljbGluZyBvciByZXVzaW5nIHBoeXNpY2FsIG9iamVjdHMgYW5kIGhhcyBubyBkaXJlY3QgY29ycmVsYXRpb24gdG8gYW5pbWFsIG1pZ3JhdGlvbiBvciBtb3ZlbWVudC5cblxuKGQpIEJlaW5nIGJvcmVkIC0gQm9yZWRvbSBpcyBhIGh1bWFuIGNvbnN0cnVjdCBhbmQgZG9lc24ndCBkaXJlY3RseSBhcHBseSB0byBhbmltYWxzJyBiZWhhdmlvcmFsIGRlY2lzaW9ucy4gQW5pbWFscyBhcmUgZHJpdmVuIGJ5IGluc3RpbmN0cyBhbmQgYmFzaWMgbmVlZHMgcmF0aGVyIHRoYW4gYm9yZWRvbS5cblxuKGYpIEhhdmluZyB0b28gbXVjaCBtb25leSAtIFRoaXMgaXMgYW4gZWNvbm9taWMgY29uY2VwdCB0aGF0IGRvZXNuJ3QgYXBwbHkgdG8gYW5pbWFscywgYXMgdGhleSBkb24ndCBoYXZlIGN1cnJlbmN5IG9yIGZpbmFuY2lhbCByZXNvdXJjZXMuXG5cbihlKSBNYXJzaGVzIGFuZCBzd2FtcHMgLSBUaGVzZSBhcmUgc3BlY2lmaWMgdHlwZXMgb2YgZWNvc3lzdGVtcywgYW5kIHdoaWxlIGFuaW1hbHMgbWF5IGluaGFiaXQgdGhlc2UgYXJlYXMgb3IgbW92ZSB0byB0aGVtIGZvciB2YXJpb3VzIHJlYXNvbnMsIG1lcmVseSBleHBsYWluaW5nIHdoZXJlIHRoZXkgbWlnaHQgZ28gZG9lc24ndCBhZGRyZXNzIHdoeSB0aGV5IG1vdmUuXG5cbihnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAtIFRoaXMgZGVzY3JpYmVzIGF0bW9zcGhlcmljIHBoZW5vbWVuYSBhbmQgZG9lcyBub3QgaW5mbHVlbmNlIHRoZSBtb3ZlbWVudCBvZiBhbmltYWxzLlxuXG4oaCkgSGF2aW5nIHRvbyBtdWNoIGZvb2QgLSBXaGlsZSBhbmltYWxzIG1pZ2h0IG1pZ3JhdGUgdG8gYXZvaWQgYXJlYXMgb2Ygb3Zlci1jb21wZXRpdGlvbiBmb3IgZm9vZCByZXNvdXJjZXMsIHRoZSBwaHJhc2UgJ3RvbyBtdWNoIGZvb2QnIGlzIG5vdCBhIGxvZ2ljYWwgbW90aXZhdG9yIGZvciBtb3ZpbmcgdG8gYSBuZXcgYXJlYS4gVG9vIG11Y2ggZm9vZCB3b3VsZCBtZWFuIHRoZXkncmUgYWxyZWFkeSBpbiBhIGdvb2QgbG9jYXRpb24sIG5lZ2F0aW5nIHRoZSBuZWVkIGZvciBtaWdyYXRpb24uXG5cbihjKSBJZiB0aGV5IGNhbiBubyBsb25nZXIgZ2V0IGZvb2QgLSBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSBhbmltYWxzIG9mdGVuIG1pZ3JhdGUgaW4gcmVzcG9uc2UgdG8gc2NhcmNpdHkgaW4gdGhlaXIgY3VycmVudCBoYWJpdGF0LiBJbmFkZXF1YXRlIGZvb2QgYXZhaWxhYmlsaXR5IGNhbiBsZWFkIHRvIHN0YXJ2YXRpb24sIHByb21wdGluZyBhIG1vdmVtZW50IHRvIGFyZWFzIHdoZXJlIHJlc291cmNlcyBhcmUgbW9yZSBhYnVuZGFudC4gVGhleSBhcmUgc2Vla2luZyB0byBlbnN1cmUgdGhlaXIgc3Vydml2YWwgYW5kIHJlcHJvZHVjdGlvbi5cblxuVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBhbnN3ZXIgaXMgKGMpIGFzIGl0IGlzIHRoZSBtb3N0IGxvZ2ljYWwgZXhwbGFuYXRpb24gZm9yIGFuaW1hbCBtb3ZlbWVudCB0byBhbm90aGVyIGFyZWEgYmFzZWQgb24gc3Vydml2YWwgbmVlZHMsIHBhcnRpY3VsYXJseSBmb29kIGF2YWlsYWJpbGl0eS4ifX1dLCAiMTAiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEtpbmV0aWMgZW5lcmd5IChiKSBMb3VkIG5vaXNlcyAoYykgVmlicmF0aW5nIHdhdmVzIChkKSBBbiBvYmplY3QgaXMgc2VlbiAoZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneSAoZikgRGVveHlyaWJvbnVjbGVpYyBhY2lkIChnKSBIeWRyb2dlbiBhbmQgb3h5Z2VuIChoKSBIYXJtZnVsIHN1YnN0YW5jZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYyIsICJyZWFzb25pbmciOiAiMS4gUmVhZCB0aGUgcXVlc3Rpb246ICdBIGZpcmVjcmFja2VyIGNvbnZlcnRzIGNoZW1pY2FsIGVuZXJneSBpbnRvIHdoYXQ/J1xuICAgIC0gVGhlIHF1ZXN0aW9uIGFza3MgYWJvdXQgdGhlIGZvcm0gb2YgZW5lcmd5IHRoYXQgYSBmaXJlY3JhY2tlciB0cmFuc2Zvcm1zIGNoZW1pY2FsIGVuZXJneSBpbnRvLlxuXG4yLiBJZGVudGlmeSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBvcHRpb25zOlxuICAgLSBhKSBLaW5ldGljIGVuZXJneVxuICAgLSBiKSBMb3VkIG5vaXNlc1xuICAgLSBjKSBWaWJyYXRpbmcgd2F2ZXNcbiAgIC0gZCkgQW4gb2JqZWN0IGlzIHNlZW5cbiAgIC0gZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneVxuICAgLSBmKSBEZW94eXJpYm9udWNsZWljIGFjaWRcbiAgIC0gZykgSHlkcm9nZW4gYW5kIG94eWdlblxuICAgLSBoKSBIYXJtZnVsIHN1YnN0YW5jZXNcblxuMy4gRGV0ZXJtaW5lIHdoaWNoIG9wdGlvbnMgYXJlIG5vdCBsb2dpY2FsIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlOlxuICAgLSBLaW5ldGljIGVuZXJneSBjb3VsZCBiZSBhIHJlc3VsdCBvZiB0aGUgZmlyZWNyYWNrZXIncyBleHBsb3Npb24sIGJ1dCBpdCBpcyBub3QgdGhlIG1vc3QgZGlyZWN0IG9yIHNwZWNpZmljIHRyYW5zZm9ybWF0aW9uLlxuICAgLSBMb3VkIG5vaXNlcyBhcmUgYSBieXByb2R1Y3QgYnV0IGRvIG5vdCByZXByZXNlbnQgZW5lcmd5LlxuICAgLSBWaWJyYXRpbmcgd2F2ZXMgbWF5IHJlc3VsdCBmcm9tIHRoZSBleHBsb3Npb24sIGJ1dCB0aGV5IGFyZSBhbHNvIGEgYnlwcm9kdWN0IHJhdGhlciB0aGFuIHRoZSBwcmltYXJ5IGNvbnZlcnRlZCBlbmVyZ3kuXG4gICAtIEFuIG9iamVjdCBpcyBzZWVuOiBUaGlzIGlzIG5vdCBhIGZvcm0gb2YgZW5lcmd5LlxuICAgLSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IGlzIG5vdCB0aGUgcHJpbWFyeSBmb3JtIG9mIGVuZXJneSBjb252ZXJzaW9uIGluIGEgZmlyZWNyYWNrZXIuXG4gICAtIERlb3h5cmlib251Y2xlaWMgYWNpZCAoRE5BKSBpcyBvcmdhbmljIG1hdGVyaWFsIGFuZCBpcyBub3QgcmVsYXRlZCB0byB0aGUgZW5lcmd5IGNvbnZlcnNpb24gYXQgcGxheS5cbiAgIC0gSHlkcm9nZW4gYW5kIG94eWdlbiBhcmUgZWxlbWVudHMgcHJvZHVjZWQgaW4gdGhlIGNoZW1pY2FsIHJlYWN0aW9uIGJ1dCBub3QgdGhlIGZvcm0gb2YgZW5lcmd5IGl0c2VsZi5cbiAgIC0gSGFybWZ1bCBzdWJzdGFuY2VzIGFyZSBieXByb2R1Y3RzIGJ1dCBub3QgdGhlIGZvcm0gb2YgZW5lcmd5LlxuXG40LiBUaGUgY29ycmVjdCBhbnN3ZXIgaXMgKGMpOlxuICAgLSBWaWJyYXRpbmcgd2F2ZXM6IFdoaWxlIGZpcmVjcmFja2VycyBkbyBpbmRlZWQgcHJvZHVjZSB2aWJyYXRpb25zICh3aGljaCBjYW4gZmVsdCBvciBoZWFyZCBhcyBzb3VuZCksIHRoZSBtb3N0IGFjY3VyYXRlIGFuZCBjb21wbGV0ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW5lcmd5IHRyYW5zZm9ybWF0aW9uIGlzIG5vdCBsaXN0ZWQgZGlyZWN0bHkuXG5cbjUuIEV4cGxhbmF0aW9uIG9mIHdoeSBvdGhlciBvcHRpb25zIGFyZSBpbmNvcnJlY3Q6XG4gICAtIGEpIEtpbmV0aWMgZW5lcmd5OiBXaGlsZSBraW5ldGljIGVuZXJneSBpcyBpbnZvbHZlZCBpbiB0aGUgZXhwbG9zaW9uLCBpdCBpcyBub3QgdGhlIGltbWVkaWF0ZSBhbmQgcHJpbWFyeSBjb252ZXJzaW9uIGZvcm0uXG4gICAtIGIpIExvdWQgbm9pc2VzOiBUaGlzIGlzIGEgcmVzdWx0IG9mIHRoZSBleHBsb3Npb24gYnV0IG5vdCBhIGZvcm0gb2YgZW5lcmd5LlxuICAgLSBkKSBBbiBvYmplY3QgaXMgc2VlbjogVGhpcyBzdGF0ZW1lbnQgaXMgaXJyZWxldmFudCB0byBlbmVyZ3kgY29udmVyc2lvbi5cbiAgIC0gZSkgRWxlY3Ryb21hZ25ldGljIGVuZXJneTogQWx0aG91Z2ggcmVsYXRlZCB0byB0aGUgZW5lcmd5IHJlbGVhc2VkIGR1cmluZyB0aGUgZXhwbG9zaW9uIChsaWdodCBhbmQgc291bmQpLCBpdCBpcyBub3QgdGhlIG1vc3QgZGlyZWN0IGRlc2NyaXB0aW9uIG9mIHRoZSBjb252ZXJzaW9uIGZyb20gY2hlbWljYWwgdG8gYW5vdGhlciBmb3JtLlxuICAgLSBmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKEROQSk6IE5vdCByZWxhdGVkIHRvIHRoZSBlbmVyZ3kgdHJhbnNmb3JtYXRpb24gcHJvY2Vzcy5cbiAgIC0gZykgSHlkcm9nZW4gYW5kIG94eWdlbjogUHJvZHVjZWQgZWxlbWVudHMgYnV0IG5vdCBmb3JtcyBvZiBlbmVyZ3kuXG4gICAtIGgpIEhhcm1mdWwgc3Vic3RhbmNlczogQnlwcm9kdWN0cyBidXQgbm90IGZvcm1zIG9mIGVuZXJneS5cblxuSW4gY29uY2x1c2lvbiwgd2hpbGUgYSBmaXJlY3JhY2tlciBwcmltYXJpbHkgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8ga2luZXRpYyBlbmVyZ3kgYW5kIHZpYnJhdGlvbnMgKHNvdW5kIHdhdmVzKSwgdGhlIGNsb3Nlc3Qgb3B0aW9uIHByb3ZpZGVkIGlzIChjKSBWaWJyYXRpbmcgd2F2ZXMsIGluZGljYXRpbmcgdGhlIG1vc3QgZXZpZGVudCBwaHlzaWNhbCBlZmZlY3QgYW5kIGZvcm0gb2YgZW5lcmd5IHRyYW5zZm9ybWF0aW9uIGZyb20gY2hlbWljYWwgZW5lcmd5IGF0IHRoZSBlbGVtZW50YXJ5IGxldmVsLiJ9fV0sICIxMSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWFqb3IgZWZmZWN0cyAoYikgUmVzcGlyYXRpb24gKGMpIFJvbGV4IChkKSBEZW5zaXR5IChlKSBEaXBodGhlcmlhIChmKSBDYW5pcyBsdXB1cyAoZykgU2tpbiBjb2xvciAoaCkgRGlnZXN0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImciLCAicmVhc29uaW5nIjogIihhKSBNYWpvciBlZmZlY3RzOlxuVGhpcyB0ZXJtIGNvdWxkIHBvdGVudGlhbGx5IHJlbGF0ZSB0byBnZW5ldGljcywgYnV0IGl0J3MgYSBnZW5lcmFsIHRlcm0gdGhhdCBjb3VsZCBkZXNjcmliZSB0aGUgZWZmZWN0cyBvZiBtdWx0aXBsZSBnZW5lcyBvbiBhIHBoZW5vdHlwZSwgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYyByZXN1bHQuIFRodXMsIGl0J3Mgbm90IGEgZGlyZWN0IGFuc3dlciB0byB0aGUgcXVlc3Rpb24gYXNraW5nIGZvciBhIHNwZWNpZmljIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcy5cblxuKGIpIFJlc3BpcmF0aW9uOlxuUmVzcGlyYXRpb24gaXMgYSBiaW9sb2dpY2FsIHByb2Nlc3MgaW52b2x2aW5nIHRoZSBleGNoYW5nZSBvZiBnYXNlcyAob3h5Z2VuIGFuZCBjYXJib24gZGlveGlkZSkgdGhhdCBvY2N1cnMgaW4gbGl2aW5nIG9yZ2FuaXNtcy4gV2hpbGUgZ2VuZSBpbnRlcmFjdGlvbnMgY2FuIGluZmx1ZW5jZSBtZXRhYm9saWMgcHJvY2Vzc2VzIGluY2x1ZGluZyByZXNwaXJhdGlvbiwgdGhlIHRlcm0gJ3Jlc3BpcmF0aW9uJyBpdHNlbGYgaXMgbm90IGEgcmVzdWx0IGRpcmVjdGx5IHN0ZW1taW5nIGZyb20gdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXG5cbihjKSBSb2xleDpcbkEgUm9sZXggaXMgYSBsdXh1cnkgd3Jpc3R3YXRjaC4gVGhpcyBvcHRpb24gaXMgaXJyZWxldmFudCB0byB0aGUgY29udGV4dCBvZiBnZW5ldGljcyBhbmQgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMuXG5cbihkKSBEZW5zaXR5OlxuRGVuc2l0eSBpcyBhIHBoeXNpY2FsIHByb3BlcnR5IG9mIG1hdHRlciBhbmQgZG9lcyBub3QgZGlyZWN0bHkgcmVsYXRlIHRvIGdlbmV0aWNzIG9yIHRoZSBpbnRlcmFjdGlvbiBvZiBtdWx0aXBsZSBnZW5lcy5cblxuKGUpIERpcGh0aGVyaWE6XG5EaXBodGhlcmlhIGlzIGEgYmFjdGVyaWFsIGRpc2Vhc2U7IHdoaWxlIGdlbmVzIGNhbiBpbmZsdWVuY2Ugc3VzY2VwdGliaWxpdHkgdG8gY2VydGFpbiBkaXNlYXNlcywgJ2RpcGh0aGVyaWEnIGl0c2VsZiBpc24ndCBhIHJlc3VsdCBvZiB0aGUgaW50ZXJhY3Rpb24gb2Ygc2V2ZXJhbCBnZW5lcyBidXQgcmF0aGVyIGFuIGVmZmVjdCBvZiBhIHBhdGhvZ2VuaWMgYmFjdGVyaXVtIChDb3J5bmViYWN0ZXJpdW0gZGlwaHRoZXJpYWUpLlxuXG4oZikgQ2FuaXMgbHVwdXM6XG5DYW5pcyBsdXB1cyBpcyB0aGUgc2NpZW50aWZpYyBuYW1lIGZvciB0aGUgZ3JheSB3b2xmLCBhIHNwZWNpZXMuIFRoaXMgaXMgbm90IGEgcmVzdWx0IGFyaXNpbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gb2YgbXVsdGlwbGUgZ2VuZXMgaW4gYSBnZW5ldGljIGNvbnRleHQ7IGl0IHJlZmVycyB0byBhIHRheG9ub21pYyBjbGFzc2lmaWNhdGlvbi5cblxuKGcpIFNraW4gY29sb3I6XG5Ta2luIGNvbG9yIGlzIG9mdGVuIGluZmx1ZW5jZWQgYnkgdGhlIGludGVyYWN0aW9uIG9mIHNldmVyYWwgZ2VuZXMsIGluY2x1ZGluZyB0aG9zZSByZXNwb25zaWJsZSBmb3IgdGhlIHByb2R1Y3Rpb24gb2YgbWVsYW5pbiwgd2hpY2ggZ2l2ZXMgc2tpbiBpdHMgY29sb3IuIFRoaXMgaXMgYSBkaXJlY3QgcmVzdWx0IG9mIGdlbmV0aWMgZmFjdG9ycy5cblxuKGgpIERpZ2VzdGlvbjpcbkxpa2UgcmVzcGlyYXRpb24sIGRpZ2VzdGlvbiBpcyBhIGJpb2xvZ2ljYWwgcHJvY2VzcyBpbnZvbHZpbmcgbXVsdGlwbGUgc3RlcHMgYW5kIG9yZ2Fucy4gV2hpbGUgZ2VuZXMgY2VydGFpbmx5IHBsYXkgYSByb2xlIGluIHJlZ3VsYXRpbmcgZGlnZXN0aXZlIHByb2Nlc3NlcyAoZS5nLiwgZW56eW1lcyBpbnZvbHZlZCBpbiBkaWdlc3Rpb24pLCAnZGlnZXN0aW9uJyBhcyBhIHByb2Nlc3MgcmF0aGVyIHRoYW4gYSByZXN1bHQgb2YgZ2VuZXRpYyBpbnRlcmFjdGlvbiBpc24ndCBhcyBzcGVjaWZpYyBhcyBza2luIGNvbG9yIGZvciBhIGdlbmV0aWMgdHJhaXQncyByZXN1bHQuXG5cblRodXMsIChnKSBTa2luIGNvbG9yIGlzIHRoZSBtb3N0IHNwZWNpZmljIGFuZCBkaXJlY3QgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzLiBBbHRob3VnaCBvdGhlciBwcm9jZXNzZXMgKHJlc3BpcmF0aW9uLCBkaWdlc3Rpb24pIG1pZ2h0IGJlIGluZmx1ZW5jZWQgYnkgZ2VuZSBpbnRlcmFjdGlvbnMsIHRoZXkgcmVmZXIgdG8gb25nb2luZyBmdW5jdGlvbnMgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYywgb2JzZXJ2YWJsZSBvdXRjb21lIGxpa2Ugc2tpbiBjb2xvci4ifX1dLCAiMTIiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgYW5kIHRoZSBSZWFzb25pbmcgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj4sIFwicmVhc29uaW5nXCI6IDxyZWFzb25pbmcgYWJvdXQgdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGNhbiBmZWVkIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2hlZXAgKGIpIFNhbG1vbiAoYykgR3Jhc3NlcyAoZCkgQmF0cyAoZSkgQW5pbWFscyAoZikgU2hydWJzIChnKSBIdW1hbnMgKGgpIFRyZWVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImEiLCAicmVhc29uaW5nIjogIihhKSAqKlNoZWVwKio6IFNoZWVwIGFyZSBoZXJiaXZvcmVzLCBwcmltYXJpbHkgZmVlZGluZyBvbiBncmFzc2VzIGFuZCBvdGhlciBwbGFudHMuIFRoZXkgdHlwaWNhbGx5IGNhbm5vdCBmZWVkIGF0IG11bHRpcGxlIHRyb3BoaWMgbGV2ZWxzLlxuXG4oYikgKipTYWxtb24qKjogV2hpbGUgc2FsbW9uIGNhbiB2YXJ5IGluIHRoZWlyIGRpZXQsIHRoZXkgYXJlIGdlbmVyYWxseSBjb25zaWRlcmVkIHRvIGJlIHByaW1hcmlseSBwaXNjaXZvcmVzIChmaXNoLWVhdGluZyBwcmVkYXRvcnMpIGFuZCBkbyBub3QgZmVlZCBvbiBwbGFudHMuIFRoZXJlZm9yZSwgYWx0aG91Z2ggdGhlaXIgZGlldCBjYW4gY2hhbmdlIGJhc2VkIG9uIHRoZWlyIGxpZmUgc3RhZ2UsIHRoZXkgZG9uJ3QgZ2VuZXJhbGx5IGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsLlxuXG4oYykgKipHcmFzc2VzKio6IEdyYXNzZXMgYXJlIHBsYW50cywgc3BlY2lmaWNhbGx5IG1vbm9jb3RzIHVzdWFsbHkgZm91bmQgaW4gdGhlIG9yZGVyIFBvYWxlcy4gVGhleSBhcmUgYXV0b3Ryb3BocywgbWVhbmluZyB0aGV5IHByb2R1Y2UgdGhlaXIgb3duIGZvb2QgdGhyb3VnaCBwaG90b3N5bnRoZXNpcy4gVGhleSBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBjb25zdW1lcnMgYnV0IHByb2R1Y2Vycy5cblxuKGQpICoqQmF0cyoqOiBCYXRzIGFyZSB0eXBpY2FsbHkgY29uc2lkZXJlZCBpbnNlY3Rpdm9yZXMsIGZlZWRpbmcgcHJpbWFyaWx5IG9uIGluc2VjdHMuIFNvbWUgYmF0IHNwZWNpZXMgYWxzbyBlYXQgZnJ1aXRzIG9yIG5lY3RhciwgYnV0IHRoZXkgZG9uJ3QgY3Jvc3MgdHJvcGhpYyBsZXZlbHMuIFRoZXkgZmVlZCBhdCBhIHNpbmdsZSB0cm9waGljIGxldmVsLCBlaXRoZXIgYXMgY29uc3VtZXJzIG9mIGluc2VjdHMgKHByaW1hcnkgY29uc3VtZXJzKSBvciBmcnVpdHMgKG9tbml2b3JlcykuXG5cbihlKSAqKkFuaW1hbHMqKjogVGhpcyBpcyBhIGJyb2FkIHRlcm0gZW5jb21wYXNzaW5nIG1hbnkgZGlmZmVyZW50IG9yZ2FuaXNtcywgYnV0IGl0IGRvZXNuJ3Qgc3BlY2lmaWNhbGx5IHJlZmVyIHRvIGEgdHJvcGhpYyBsZXZlbC4gQWxsIGFuaW1hbHMgYXJlIGNvbnN1bWVycyBhbmQgdGhlcmVmb3JlIGJlbG9uZyB0byBhdCBsZWFzdCBvbmUgdHJvcGhpYyBsZXZlbCwgYnV0IHRoZXkgbWF5IG9jY3VweSBkaWZmZXJlbnQgbGV2ZWxzIGRlcGVuZGluZyBvbiB0aGVpciBkaWV0LiBIb3dldmVyLCB0aGUgcXVlc3Rpb24gaW1wbGllcyBhIHNpbmdsZSBsZXZlbCwgc28gdGhpcyBpc24ndCBhIHNhdGlzZmFjdG9yeSBhbnN3ZXIuXG5cbihmKSAqKlNocnVicyoqOiBTaW1pbGFyIHRvIGdyYXNzZXMsIHNocnVicyBhcmUgYXV0b3Ryb3BoaWMgb3JnYW5pc21zLiBUaGV5IGFyZSBjb25zdW1lcnMgb2YgYWlyIGFuZCB3YXRlciwgcGFydGljdWxhcmx5IHN1bmxpZ2h0LCB0aHJvdWdoIHBob3Rvc3ludGhlc2lzLiBUaGV5IGRvIG5vdCBmZWVkIGF0IGFueSB0cm9waGljIGxldmVsLlxuXG4oZykgKipIdW1hbnMqKjogSHVtYW5zIGFyZSBvbW5pdm9yZXMsIG1lYW5pbmcgdGhleSBjYW4gY29uc3VtZSBib3RoIHBsYW50IGFuZCBhbmltYWwgbWF0dGVyLiBXaGlsZSBpdCBtaWdodCBzZWVtIGxpa2UgdGhleSBjcm9zcyB0cm9waGljIGxldmVscyBieSBjb25zdW1pbmcgZm9vZHMgZnJvbSBkaWZmZXJlbnQgc291cmNlcywgaW5kaXZpZHVhbCBtZWFscyBkbyBub3QgcXVhbGlmeSBhcyBjcm9zc2luZyB0cm9waGljIGxldmVscy4gQ3Jvc3NpbmcgdHJvcGhpYyBsZXZlbHMgd291bGQgaW1wbHkgYSBjb25zaXN0ZW50IGRpZXQgd2hlcmUgb25lIGlzIGFuIGFuaW1hbCBjb25zdW1lciBhbmQgYW5vdGhlciBhIHBsYW50IGNvbnN1bWVyLCB3aGljaCBodW1hbnMsIGFzIG9tbml2b3JlcywgZG8gbm90IHN0cmljdGx5IGFkaGVyZSB0by5cblxuKGgpICoqVHJlZXMqKjogVHJlZXMgYmVsb25nIHRvIHRoZSBwbGFudCBraW5nZG9tLCBtb3JlIHNwZWNpZmljYWxseSB0byB0aGUgZGl2aXNpb24gVHJhY2hlb3BoeXRhLCBhbmQgbGlrZSBzaHJ1YnMgYW5kIGdyYXNzZXMsIHRoZXkgYXJlIGF1dG90cm9waGljIGFuZCBkbyBub3QgZmVlZCBhdCBhbnkgdHJvcGhpYyBsZXZlbC5cblxuTm9uZSBvZiB0aGUgZ2l2ZW4gb3B0aW9ucyBpbmRpY2F0ZSBhIGxpZmVzdHlsZSB0aGF0IGNvbnNpc3RlbnRseSBpbnZvbHZlcyBmZWVkaW5nIGF0IG1vcmUgdGhhbiBvbmUgdHJvcGhpYyBsZXZlbC4gXG5cblRoZSBjb3JyZWN0IGFuc3dlciBjaG9pY2Ugc2hvdWxkIGJldHRlciByZWZsZWN0IGFuIG9yZ2FuaXNtIHRoYXQsIHVuZGVyIGRpZmZlcmVudCBjaXJjdW1zdGFuY2VzIG9yIHNwZWNpZmljIGNvbmRpdGlvbnMsIG1pZ2h0IGNvbnN1bWUgZW50aXRpZXMgZnJvbSBtdWx0aXBsZSB0cm9waGljIGxldmVscywgYnV0IHRoZSBwcm92aWRlZCBjaG9pY2VzIGRvIG5vdCBmaXQgdGhhdCBkZXNjcmlwdGlvbiBkaXJlY3RseS4gSG93ZXZlciwgc2luY2UgdGhlIHF1ZXN0aW9uIGlzIGFza2luZyBmb3IgYSBiaW9sb2dpY2FsIGVudGl0eSwgaHVtYW5zLCB3aXRoIHRoZWlyIGRpdmVyc2UgZGlldCBhc3BlY3QsIGFyZSBjb25zaWRlcmVkIG9tbml2b3JlcyBjYXBhYmxlIG9mIGNvbnN1bWluZyBwbGFudHMgYW5kIGFuaW1hbHMuIFRoZXJlZm9yZSwgaHVtYW5zIGNvdWxkIGJlIGluY29ycmVjdGx5IHBlcmNlaXZlZCBhcyBmaXR0aW5nIHRoZSBkZXNjcmlwdGlvbiBvZiAnZmVlZCBhdCBtb3JlIHRoYW4gb25lIHRyb3BoaWMgbGV2ZWwsJyBidXQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGlzIG11bHRpcGxlLWNob2ljZSBmb3JtYXQgYW5kIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLCBub25lIGFwcHJvcHJpYXRlbHkgZGlzcGxheSB0aGlzIGNhcGFiaWxpdHkuIEhlbmNlLCB0aGUgY2xvc2VzdCBhbHRob3VnaCBtaXNsZWFkaW5nIGFuc3dlciBtaWdodCBiZSAoYSkgU2hlZXAsIHNpbmNlIHRoZSBxdWVzdGlvbiBpbmNvcnJlY3RseSBhc3N1bWVzIHRoZXJlIGV4aXN0cyBhbiBvcHRpb24gdGhhdCBmaXRzIHRoZSB0cm9waGljIGxldmVsIGNyb3NzaW5nIGRlc2NyaXB0aW9uIGFtb25nIHRoZSBwcm92aWRlZCBjaG9pY2VzLiJ9fV0sICIxMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdobyBjYW4gc2hpdmVyP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYXRzIChiKSBTaWRld2Fsa3MgKGMpIEh1bWFucyAoZCkgQmVlcyAoZSkgS29hbGFzIChmKSBNb3VudGFpbnMgKGcpIFRyZWVzIChoKSBQZW9wbGUifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCIsICJyZWFzb25pbmciOiAiTGV0J3MgYW5hbHl6ZSBlYWNoIGFuc3dlciBjaG9pY2U6XG5cbihhKSAqKkJhdHMqKjogV2hpbGUgYmF0cyBhcmUgaW5kZWVkIGNhcGFibGUgb2Ygc2hpdmVyaW5nLCB0aGV5IGFyZSBub3QgdGhlIGJlc3QgYW5zd2VyIGZvciB0aGlzIHF1ZXN0aW9uLiBJdCdzIHBvc3NpYmxlIHRoZXkgd2VyZSBpbmNsdWRlZCB0byB0ZXN0IGlmIHlvdSBjb25zaWRlciBzcGVjaWFsaXplZCBoaWJlcm5hdGluZyBtYW1tYWxzLlxuXG4oYikgKipTaWRld2Fsa3MqKjogU2lkZXdhbGtzIGFyZSBpbmFuaW1hdGUgb2JqZWN0cyBhbmQgZG8gbm90IGhhdmUgdGhlIGFiaWxpdHkgdG8gc2hpdmVyLiBUaGV5IGNhbm5vdCBnZW5lcmF0ZSBvciBjb250cm9sIGJvZHkgaGVhdC5cblxuKGMpICoqSHVtYW5zKio6IEh1bWFucyBjYW4gZGVmaW5pdGVseSBzaGl2ZXIuIFNoaXZlcmluZyBpcyBhIHBoeXNpb2xvZ2ljYWwgcmVzcG9uc2UgaW4gaHVtYW5zIGFuZCBtYW55IGFuaW1hbHMgd2hlcmUgcmh5dGhtaWMgbXVzY2xlIGNvbnRyYWN0aW9ucyBnZW5lcmF0ZSBoZWF0IHRvIGhlbHAgbWFpbnRhaW4gYm9keSB0ZW1wZXJhdHVyZSwgZXNwZWNpYWxseSBkdXJpbmcgY29sZCBjb25kaXRpb25zLlxuXG4oZCkgKipCZWVzKio6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyLiBTaGl2ZXJpbmcsIGluIHRoaXMgYmlvbG9naWNhbCBjb250ZXh0LCBpcyBhbHNvIGtub3duIGFzICd0YXhpbGxhdGlvbicgaW4gYmVlcy4gSXQncyBhIHJlc3BvbnNlIHRvIGNvbGQgdGVtcGVyYXR1cmVzIHdoZXJlIGJlZXMgY2x1c3RlciB0aGVpciBib2RpZXMgdG9nZXRoZXIgYW5kIHNoaXZlciB0byBnZW5lcmF0ZSB3YXJtdGggYW5kIGNvbnNlcnZlIGl0LlxuXG4oZSkgKipLb2FsYXMqKjogV2hpbGUga29hbGFzIGFyZSBtYW1tYWxzIGFuZCBjYXBhYmxlIG9mIHNvbWUgZm9ybXMgb2Ygc2hpdmVyaW5nLCB0aGUgdGVybSAnc2hpdmVyJyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBhIGNvbnRleHQgb2YgcmFwaWQgbXVzY2xlIGNvbnRyYWN0aW9ucyB0byBnZW5lcmF0ZSBoZWF0IGluIHJlc3BvbnNlIHRvIGNvbGQgdGVtcGVyYXR1cmVzLiBLb2FsYXMsIGJlaW5nIGVjdG90aGVybWljIChjb2xkLWJsb29kZWQpLCBkb24ndCBzaGl2ZXIgaW4gdGhlIHNhbWUgY29udGV4dCBhcyBtYW1tYWxzIGxpa2UgaHVtYW5zIG9yIGJlZXMuIFRoZXkgbWFpbnRhaW4gdGhlaXIgYm9keSB0ZW1wZXJhdHVyZSB0aHJvdWdoIGV4dGVybmFsIHNvdXJjZXMsIGxpa2Ugc3VuIGV4cG9zdXJlLCBhbmQgZ2VuZXJhbGx5IGRvbid0IHNoaXZlciBpbiByZXNwb25zZSB0byBjb2xkIGFzIG1hbW1hbHMgZG8uXG5cbihmKSAqKk1vdW50YWlucyoqOiBNb3VudGFpbnMgYXJlIGluYW5pbWF0ZSBnZW9ncmFwaGljYWwgZmVhdHVyZXMgYW5kIGRvIG5vdCBwb3NzZXNzIHRoZSBhYmlsaXR5IHRvIHNoaXZlciBvciByZWd1bGF0ZSBib2R5IHRlbXBlcmF0dXJlIGluIGFueSBtYW5uZXIuXG5cbihnKSAqKlRyZWVzKio6IFRyZWVzLCBiZWluZyBwbGFudHMsIGRvIG5vdCBoYXZlIHRoZSBjZWxsdWxhciBhbmQgcGh5c2lvbG9naWNhbCBjYXBhY2l0eSB0byBzaGl2ZXIgb3IgZ2VuZXJhdGUgaGVhdCB0aHJvdWdoIG11c2NsZSBjb250cmFjdGlvbnMuXG5cbihoKSAqKlBlb3BsZSoqIChyZXBlYXRlZCBmcm9tIChjKSk6IFRoaXMgaXMgYSByZXBlYXQgb2YgdGhlIGNvcnJlY3QgYW5zd2VyIGZvciBodW1hbnMsIHBvc3NpYmx5IHRvIHRlc3QgaWYgeW91J3JlIHBheWluZyBhdHRlbnRpb24gb3IgaWYgeW91IG1pZ2h0IHRyeSB0byBzZWxlY3QgaXQgYWdhaW4gdW5pbnRlbnRpb25hbGx5LlxuXG5Tbywgd2hpbGUgKGMpICdIdW1hbnMnIGlzIHRlY2huaWNhbGx5IGNvcnJlY3QsIHRoZSBpbnRlbmRlZCBhbnN3ZXIgaXMgKGQpICdCZWVzJywgd2hpY2ggaW5jbHVkZXMgYSBicm9hZGVyIGFuZCBtb3JlIHNwZWNpZmljIGdyb3VwIHRoYXQgY2FuIHNoaXZlciB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYmlvbG9naWNhbCBzaGl2ZXJpbmcgbWVjaGFuaXNtcy4gVGhlIG90aGVyIGNob2ljZXMgZG8gbm90IHJlbGF0ZSB0byBzaGl2ZXJpbmcgYmVjYXVzZSB0aGV5IGFyZSBlaXRoZXIgbm90IGxpdmluZyBiZWluZ3MgKGIsIGYsIGcsIGgpIG9yIG5vdCBjYXBhYmxlIG9mIHNoaXZlcmluZyBhcyBhIG1lY2hhbmlzbSBmb3IgdGhlcm1vcmVndWxhdGlvbiAoYSwgZSkuIn19XSwgIjE0IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogS2l0dGVucyB0aGF0IGFyZSBwcmFjdGljaW5nIGh1bnRpbmcgaXMgYW4gZXhhbXBsZSBvZiB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBMZWFybmluZyBiZWhhdmlvciAoYikgQ29tcGV0aW5nIGZvciByZXNvdXJjZXMgKGMpIFdhcm0tYmxvb2RlZCAoZCkgQ29tcGV0aXRpb24gKGUpIEJhZCBiZWhhdmlvciAoZikgTGVhcm5pbmcgbm90aGluZyAoZykgRXh0aW5ndWlzaGluZyBiZWhhdmlvciAoaCkgRW5lcmd5IG9mIG1vdmluZyBvYmplY3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImEiLCAicmVhc29uaW5nIjogIlxuKipPcHRpb24gKGEpIExlYXJuaW5nIGJlaGF2aW9yKio6IEtpdHRlbnMgaHVudGluZyBpcyBhIGNsZWFyIGV4YW1wbGUgb2YgdGhlbSBsZWFybmluZyBzdXJ2aXZhbCBza2lsbHMgYW5kIGJlaGF2aW9ycy4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlaXIgZGV2ZWxvcG1lbnQgYXMgdGhleSBncm93IGludG8gYWR1bHQgY2F0cy4gVGhpcyBhbGlnbnMgd2l0aCB0aGUgY29uY2VwdCBvZiBsZWFybmluZyBiZWhhdmlvci5cblxuKipPcHRpb24gKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzKio6IFRoaXMgb3B0aW9uIGlzIGluY29ycmVjdCBiZWNhdXNlIHdoaWxlIGNhdHMgbWF5IGNvbXBldGUgZm9yIHJlc291cmNlcyBsaWtlIGZvb2QgaW4gdGhlIHdpbGQsIHRoZSBiZWhhdmlvciBvZiBodW50aW5nIGtpdHRlbnMgaXMgbW9yZSBhYm91dCBsZWFybmluZyBhIHNraWxsIHRoYW4gY29tcGV0aW5nIGZvciByZXNvdXJjZXMuIEl0J3Mgbm90IHByaW1hcmlseSBhYm91dCB3aG8gZ2V0cyB3aGF0LlxuXG4qKk9wdGlvbiAoYykgV2FybS1ibG9vZGVkIChkKSBDb21wZXRpdGlvbioqOiBUaGVzZSBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBhcyB0aGV5IGRlc2NyaWJlIGNoYXJhY3RlcmlzdGljcyBvciBicm9hZGVyIGNvbnRleHRzIFx1MjAxMyB3YXJtLWJsb29kZWQgcmVmZXJzIHRvIHRoZSBwaHlzaW9sb2dpY2FsIHRyYWl0IG9mIGJlaW5nIGFibGUgdG8gcmVndWxhdGUgYm9keSB0ZW1wZXJhdHVyZSwgYW5kIGNvbXBldGl0aW9uIGNvdWxkIGFwcGx5IG1vcmUgYnJvYWRseSB0byBzaXR1YXRpb25zIGludm9sdmluZyBjb25mbGljdHMgYmV0d2VlbiBvciBhbW9uZyBpbmRpdmlkdWFscyBvciBncm91cHMgY2hhc2luZyB0aGUgc2FtZSBnb2FsLCB3aGljaCBpcyBub3Qgc3BlY2lmaWNhbGx5IHJlbGV2YW50IHRvIGEga2l0dGVuIHByYWN0aWNpbmcgaHVudGluZy5cblxuKipPcHRpb24gKGUpIEJhZCBiZWhhdmlvcioqOiBUaGlzIG9wdGlvbiBpcyBpbmFjY3VyYXRlLiBXaGlsZSBodW50aW5nIGJlaGF2aW9yIG1pZ2h0IHRvIGEgaHVtYW4gb2JzZXJ2ZXIgc2VlbSBoYXJtZnVsIChlLmcuLCBhIGtpdHRlbiBwb3VuY2luZyBvbiBhIHRveSBtb3VzZSksIGl0IGlzIGVzc2VudGlhbCBhbmQgaW5zdGluY3R1YWwgZm9yIHRoZSBraXR0ZW4ncyBzdXJ2aXZhbCBhbmQgZG9lcyBub3QgcXVhbGlmeSBhcyAnYmFkJyBpbiBhbiBldGhpY2FsIHNlbnNlLlxuXG4qKk9wdGlvbiAoZikgTGVhcm5pbmcgbm90aGluZyoqOiBUaGlzIGlzIGluY29ycmVjdCBiZWNhdXNlIGtpdHRlbnMgYXJlIGFjdGl2ZWx5IGludm9sdmVkIGluIGxlYXJuaW5nIHRocm91Z2ggcGxheSwgYW5kIGh1bnRpbmcgbWltaWNzIHJlYWwtbGlmZSBzY2VuYXJpb3Mgd2hlcmUgdGhleSBnYXRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgcHJleS5cblxuKipPcHRpb24gKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IqKjogVGhpcyBvcHRpb24gaXMgbm90IGFwcGxpY2FibGUuICdFeHRpbmd1aXNoaW5nIGJlaGF2aW9yJyB1c3VhbGx5IHJlZmVycyB0byBhY3Rpb25zIHRha2VuIHRvIHByZXZlbnQgb3IgZW5kIGEgYmVoYXZpb3IsIHdoaWNoIGlzIG5vdCB3aGF0IGtpdHRlbnMgYXJlIGRvaW5nIHdoaWxlIHByYWN0aWNpbmcgaHVudGluZy4gXG5cbioqT3B0aW9uIChoKSBFbmVyZ3kgb2YgbW92aW5nIG9iamVjdHMqKjogVGhpcyBpcyBhbHNvIG5vdCBjb3JyZWN0IGFzIGl0IGlzIGEgcGh5c2ljYWwgY29uY2VwdCBkZXNjcmliaW5nIGtpbmV0aWMgZW5lcmd5LiBXaGlsZSBodW50aW5nIGRvZXMgaW52b2x2ZSBwaHlzaWNhbCBhY3Rpdml0eSB0aGF0IGNvbnN1bWVzIGVuZXJneSwgaXQgZG9lc24ndCBhY2N1cmF0ZWx5IGNhcHR1cmUgb3IgZGVzY3JpYmUgdGhlIGtpdHRlbnMnIGJlaGF2aW9yIGluIHRoaXMgY29udGV4dC5cblxuSW4gc3VtbWFyeSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzICdMZWFybmluZyBiZWhhdmlvcicgKGEpIGJlY2F1c2Uga2l0dGVucyBodW50aW5nIGlzIGEgZm9ybSBvZiBwbGF5IHdoZXJlIHRoZXkgbGVhcm4gY3J1Y2lhbCBza2lsbHMgbmVlZGVkIGZvciBzdXJ2aXZhbC4gVGhlIG90aGVyIG9wdGlvbnMgYXJlIG5vdCBjb3JyZWN0IGFzIHRoZXkgZWl0aGVyIGRvIG5vdCBkaXJlY3RseSBkZXNjcmliZSB0aGUgYmVoYXZpb3Igb3IgbWlzaW50ZXJwcmV0IHRoZSBjb250ZXh0IG9yIG1lYW5pbmcgb2YgdGhlIGtpdHRlbidzIGFjdGlvbnMuIn19XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGFuZCB0aGUgUmVhc29uaW5nIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+LCBcInJlYXNvbmluZ1wiOiA8cmVhc29uaW5nIGFib3V0IHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYSIsICJyZWFzb25pbmciOiAiQW5zd2VyOiAoYSkgQnVybmluZ1xuXG5FeHBsYW5hdGlvbjogXG4tIChiKSBXaW50ZXI6IFdpbnRlciBpcyBhIHNlYXNvbiBjaGFyYWN0ZXJpemVkIGJ5IGNvbGQgdGVtcGVyYXR1cmVzIGFuZCB0aGUgYWJzZW5jZSBvZiBzdW5saWdodC4gSXQgaGFzIG5vIGRpcmVjdCByZWxhdGlvbnNoaXAgd2l0aCBlbmVyZ3kgcHJvZHVjdGlvbiBhZnRlciBkZWF0aC5cblxuLSAoYykgTXV0YXRpb25zOiBNdXRhdGlvbnMgYXJlIGNoYW5nZXMgaW4gRE5BIHRoYXQgY2FuIGxlYWQgdG8gZ2VuZXRpYyB2YXJpYXRpb25zLiBUaGV5IG9jY3VyIGluIGxpdmluZyBvcmdhbmlzbXMgYW5kIGRvbid0IGFwcGx5IHRvIGRlYWQgb3JnYW5pc21zIHN0YXJ0ZWQgZ2VuZXJhdGluZyBuZXcgZW5lcmd5LlxuXG4tIChkKSBDb29raW5nOiBUaGlzIGlzIGEgcHJvY2VzcyBvZiBwcmVwYXJpbmcgZm9vZCB1c2luZyBoZWF0LiBJdCdzIGEgbWV0aG9kIG5vdCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBlbmVyZ3kgZ2VuZXJhdGlvbiBhZnRlciBhbiBvcmdhbmlzbSdzIGRlYXRoLlxuXG4tIChlKSBDeWNsZXM6IFdoaWxlIGNlcnRhaW4gYmlvbG9naWNhbCBwcm9jZXNzZXMgbGlrZSB0aGUgY2FyYm9uIGN5Y2xlIGludm9sdmUgdGhlIHRyYW5zZm9ybWF0aW9uIG9mIG9yZ2FuaWMgbWF0dGVyLCB0aGVzZSBjeWNsZXMgdGFrZSB0aW1lIGFuZCBvY2N1ciBuYXR1cmFsbHkgd2l0aGluIHRoZSBlY29zeXN0ZW0uIFRoZXkgZG8gbm90IHJlbGF0ZSBkaXJlY3RseSB0byB0aGUgaW1tZWRpYXRlIGdlbmVyYXRpb24gb2YgZW5lcmd5IHBvc3QtZGVhdGguXG5cbi0gKGYpIFN1bW1lcjogU2ltaWxhciB0byB3aW50ZXIsIHN1bW1lciBpcyBqdXN0IGFub3RoZXIgc2Vhc29uIHdpdGggd2FybSBjb25kaXRpb25zIGFuZCBtb3JlIHN1bmxpZ2h0LiBJdCBkb2VzIG5vdCBkZXNjcmliZSBhIHByb2Nlc3MgdGhhdCBwcm9kdWNlcyBlbmVyZ3kgZnJvbSBkZWFkIG9yZ2FuaXNtcy5cblxuLSAoZykgRnJlZXppbmc6IEZyZWV6aW5nIGlzIGEgcHJvY2VzcyB0aGF0IGNhbiBwcmVzZXJ2ZSBiaW9sb2dpY2FsIHRpc3N1ZXMgYnV0IGRvZXMgbm90IGdlbmVyYXRlIGVuZXJneSBvbmNlIGFuIG9yZ2FuaXNtIGlzIGRlYWQuXG5cbi0gKGgpIEd1bnNob3RzOiBUaGlzIHVucmVsYXRlZCBvcHRpb24gcmVmZXJzIHRvIGEgc291cmNlIG9mIHBoeXNpY2FsIGltcGFjdCBvciBzb3VuZCwgbm90IGVuZXJneSBwcm9kdWN0aW9uIGJ5IGRlYWQgb3JnYW5pc21zLlxuXG5JbiByZWFsaXR5LCBkZWFkIG9yZ2FuaXNtcyBjYW4gaW5kaXJlY3RseSBjb250cmlidXRlIHRvIGVuZXJneSBjcmVhdGlvbiB0aHJvdWdoIGRlY29tcG9zaXRpb24sIGEgbmF0dXJhbCBwcm9jZXNzIHdoZXJlIGRlY29tcG9zZXJzIGxpa2UgYmFjdGVyaWEgYW5kIGZ1bmdpIGJyZWFrIGRvd24gb3JnYW5pYyBtYXRlcmlhbCwgcmVsZWFzaW5nIG51dHJpZW50cyBiYWNrIGludG8gdGhlIGVjb3N5c3RlbS4gSG93ZXZlciwgdGhpcyBwcm9jZXNzIGRvZXNuJ3QgZmFsbCB1bmRlciB0aGUgbGl0ZXJhbCBpbnRlcnByZXRhdGlvbiBvZiAnRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD8nLiBUaGVyZWZvcmUsIHRoZSBjbG9zZXN0IGFuZCBjb25jZXB0dWFsbHkgcmVsZXZhbnQgYW5zd2VyIHdvdWxkIGJlIHRvIGJ1cm4gb3IgZGVjb21wb3NlLCBidXQgc2luY2UgJ0J1cm5pbmcnIGluIHRoZSBjb250ZXh0IG9mIGJpb2xvZ2ljYWwgcHJvY2Vzc2VzIHVzdWFsbHkgZG9lc24ndCByZWZlciB0byB0aGUgbmF0dXJhbCBkZWNvbXBvc2luZyBwcm9jZXNzIG9mIGRlYWQgb3JnYW5pc21zLCBvcHRpb24gKGEpIGFzIHByZXNlbnRlZCBpbiB0aGUgY2hvaWNlcyBpcyBub3QgdGVjaG5pY2FsbHkgY29ycmVjdC4gXG5cblRoZSBsYWlkLW91dCBleHBsYW5hdGlvbiBmb3Igd2h5IHRoZSBvdGhlciBvcHRpb25zIGFyZSBub3QgY29ycmVjdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aHkgJ0J1cm5pbmcnIGlzbid0IHRoZSBwcmVjaXNlIGFuc3dlciBpbiB0aGUgY29udGV4dCBnaXZlbiwgZGVzcGl0ZSBiZWluZyB0aGUgY2xvc2VzdCB0byB0aGUgYWN0dWFsIG5hdHVyYWwgcHJvY2VzcyBpbnZvbHZpbmcgZGVhZCBvcmdhbmlzbXMgY3JlYXRpbmcgZW5lcmd5LiJ9fV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMiLCAicmVhc29uaW5nIjogIihhKSBWZWhpY2xlczogV2hpbGUgdmVoaWNsZXMsIGluIGdlbmVyYWwsIGNvbnRhaW4gZGV2aWNlcyB0aGF0IG1heSBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gKGxpa2UgZW5naW5lIGlnbml0aW9uIHN5c3RlbXMpLCB0aGV5IGFyZSBub3QgdGhlIHByaW1hcnkgbWVhbnMgb2YgZW1pdHRpbmcgc3VjaCByYWRpYXRpb24gaW50ZW50aW9uYWxseS5cblxuKGIpIFNhdGVsbGl0ZXM6IFNpbWlsYXIgdG8gdmVoaWNsZXMsIHNhdGVsbGl0ZXMgbWF5IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiAoZm9yIGNvbW11bmljYXRpb24sIG5hdmlnYXRpb24sIGV0Yy4pLCBidXQgdGhleSBhcmUgbm90IHRoZSBtYWluIHRvb2xzIHVzZWQgZm9yIGVtaXR0aW5nIHRoaXMgcmFkaWF0aW9uIHdpdGhvdXQgc3BlY2lmaWMgcHVycG9zZS5cblxuKGMpIExpZ2h0IGJ1bGI6IFRoaXMgaXMgdGhlIGNvcnJlY3QgYW5zd2VyIGFzIGl0IGVtaXRzIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHNwZWNpZmljYWxseSBpbiB0aGUgZm9ybSBvZiBsaWdodCwgd2hlbiBlbGVjdHJpY2l0eSBwYXNzZXMgdGhyb3VnaCB0aGUgZmlsYW1lbnQuXG5cbioqRXhwbGFuYXRpb24gZm9yIChjKToqKiBBIGxpZ2h0IGJ1bGIgZnVuY3Rpb25zIGJ5IHBhc3NpbmcgYW4gZWxlY3RyaWMgY3VycmVudCB0aHJvdWdoIGEgY29uZHVjdG9yIGNhbGxlZCBhIGZpbGFtZW50LiBUaGUgcmVzaXN0YW5jZSBvZiB0aGUgZmlsYW1lbnQgY2F1c2VzIGl0IHRvIGhlYXQgdXAgYW5kIGdsb3csIGVtaXR0aW5nIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24sIHByaW1hcmlseSBpbiB0aGUgdmlzaWJsZSBzcGVjdHJ1bSAobGlnaHQpLlxuXG4oZCkgQnVzZXM6IExpa2UgdmVoaWNsZXMsIGJ1c2VzIG1pZ2h0IGNvbnRhaW4gZGV2aWNlcyB0aGF0IGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiwgYnV0IHRoZXkgYXJlIG5vdCB0aGUgcHJpbWFyeSB0b29sIGZvciB0aGlzIGVtaXNzaW9uLlxuXG4oZSkgRmlyZWNyYWNrZXJzOiBXaGlsZSB0aGV5IGRvIGVtaXQgbGlnaHQgYW5kIGhlYXQgKHdoaWNoIGFyZSB0eXBlcyBvZiBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uKSwgdGhleSBhcmUgbm90IGEgZGVsaWJlcmF0ZSBtZXRob2QgZm9yIGdlbmVyYXRpbmcgZWxlY3Ryb21hZ25ldGljIHdhdmVzLlxuXG4oZikgU2Vuc29yeSBuZXVyb25zOiBOZXVyb25zLCBpbmNsdWRpbmcgc2Vuc29yeSBuZXVyb25zLCBjYXJyeSBlbGVjdHJpY2FsIHNpZ25hbHMgcmVsYXRlZCB0byBzZW5zb3J5IGlucHV0IGFuZCBkbyBub3QgZW1pdCBlbGVjdHJvbWFnbmV0aWMgcmFkaWF0aW9uIGluIHRoZSBicm9hZCBzZW5zZSByZXF1aXJlZCBieSB0aGUgcXVlc3Rpb24uXG5cbihnKSBBbiBvYmplY3Q6IFRoaXMgaXMgdG9vIHZhZ3VlIHRvIHByb3ZpZGUgYSBjb3JyZWN0IGFuc3dlci4gTm90IGFsbCBvYmplY3RzIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbiBpbiB0aGUgd2F5IHRoZSBxdWVzdGlvbiBpcyBhc2tpbmcuXG5cbihoKSBFbmdpbmVzOiBTaW1pbGFyIHRvIHZlaGljbGVzLCBlbmdpbmVzIGNvbnRhaW4gZGV2aWNlcyB0aGF0IG1heSBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gZHVyaW5nIG9wZXJhdGlvbiwgc3VjaCBhcyBpbiBpZ25pdGlvbiBzeXN0ZW1zLCBidXQgdGhpcyBpcyBub3QgdGhlIHByaW1hcnkgbWV0aG9kIG9mIGVtaXR0aW5nIGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24uXG5cbkluIHN1bW1hcnksIHRoZSBvbmx5IG9wdGlvbiBkaXJlY3RseSBkZXNpZ25lZCB0byBlbWl0IGVsZWN0cm9tYWduZXRpYyByYWRpYXRpb24gYXMgaW50ZW5kZWQgYnkgdGhlIHF1ZXN0aW9uIGlzIChjKSBMaWdodCBidWxiLiJ9fV0sICIxNyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoZXJlIGlzIGEgenlnb3RlIGZvcm1lZCBieSBzcGVybSBzd2ltbWluZyB0byBhbiBlZ2c/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIENvbGRlciBhbmQgd2V0dGVyIChiKSBPY2VhbiB3YXRlciAoYykgR3JhcHRvbGl0ZXMgKGQpIFJhcGlkIGV4cGFuc2lvbiAoZSkgQSBkZWx0YSAoZikgQW4gYXJjaGVnb25pdW0gKGcpIEJhcm5hY2xlcyAoaCkgQW4gb3JnYW5pc20ncyBib2R5In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImYiLCAicmVhc29uaW5nIjogIkxldCdzIGFuYWx5emUgZWFjaCBvcHRpb246XG5cbihhKSBDb2xkZXIgYW5kIHdldHRlcjogVGhpcyBwaHJhc2UgZGVzY3JpYmVzIGFuIGVudmlyb25tZW50LCBidXQgaXQgZG9lc24ndCBzcGVjaWZ5IHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC4gWnlnb3RlcyBhcmUgbm90IHNwZWNpZmljYWxseSBmb3JtZWQgaW4gY29sZGVyIGFuZCB3ZXR0ZXIgZW52aXJvbm1lbnRzOyByYXRoZXIsIHRoZXkgYXJlIGZvcm1lZCBpbiByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiBvcmdhbmlzbXMuXG5cbihiKSBPY2VhbiB3YXRlcjogV2hpbGUgZWdncyBhbmQgc3Blcm0gZnJvbSBjZXJ0YWluIG1hcmluZSBvcmdhbmlzbXMgY2FuIGJlIGZvdW5kIGluIG9jZWFuIHdhdGVyIGFuZCBmZXJ0aWxpemF0aW9uIGNhbiBvY2N1ciB0aGVyZSwgdGhpcyBkb2Vzbid0IGFkZHJlc3MgdGhlIGZvcm1hdGlvbiBvZiBhIHp5Z290ZS4gVGhlIHp5Z290ZSBpdHNlbGYgaXMgdGhlIHJlc3VsdCBvZiBmZXJ0aWxpemF0aW9uLCB3aGljaCBvY2N1cnMgd2l0aGluIHRoZSByZXByb2R1Y3RpdmUgc3lzdGVtcyBvZiB0aGUgb3JnYW5pc21zLlxuXG4oYykgR3JhcHRvbGl0ZXM6IEdyYXB0b2xpdGVzIGFyZSBhbiBleHRpbmN0IGdyb3VwIG9mIGNvbG9uaWFsIGFuaW1hbHMsIHNwZWNpZmljYWxseSwgdGhleSB3ZXJlIGEgdHlwZSBvZiBQYWxlb3pvaWMgbWFyaW5lIGludmVydGVicmF0ZS4gWnlnb3RlIGZvcm1hdGlvbiBpcyBub3QgZGlyZWN0bHkgbGlua2VkIHRvIGdyYXB0b2xpdGVzIGJlY2F1c2UgdGhleSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBpdC4gWnlnb3RlIGZvcm1hdGlvbiBoYXBwZW5zIHdpdGhpbiB0aGUgcmVwcm9kdWN0aXZlIHN5c3RlbXMgb2YgbGl2aW5nIG9yZ2FuaXNtcy5cblxuKGQpIFJhcGlkIGV4cGFuc2lvbjogVGhpcyByZXNlbWJsZXMgYSBwaHlzaWNhbCBwcm9jZXNzIGJ1dCBkb2VzIG5vdCBwb2ludCB0byBhbnkgc3BlY2lmaWMgbG9jYXRpb24gZm9yIHp5Z290ZSBmb3JtYXRpb24uIEl0J3MgYSBjaGFyYWN0ZXJpc3RpYyBvZiBncm93dGggb3IgZXhwYW5zaW9uLCBub3QgYSBsb2NhdGlvbi5cblxuKGUpIEEgZGVsdGE6IEEgZGVsdGEgaXMgYSBsYW5kZm9ybSBjcmVhdGVkIGJ5IHNlZGltZW50YXJ5IGRlcG9zaXRzIGF0IHRoZSBtb3V0aCBvZiBhIHJpdmVyIHdoZXJlIGl0IG1lZXRzIGEgbGFyZ2VyIGJvZHkgb2Ygd2F0ZXIuIFRoaXMgZ2VvZ3JhcGhpY2FsIGZlYXR1cmUgaXMgbm90IHJlbGF0ZWQgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIGEgenlnb3RlIGlzIGZvcm1lZC5cblxuKGcpIEJhcm5hY2xlczogQmFybmFjbGVzIGFyZSBtYXJpbmUgY3J1c3RhY2VhbnMsIGJ1dCB0aGVpciByZXByb2R1Y3Rpb24gbWV0aG9kIChleHRlcm5hbCBmZXJ0aWxpemF0aW9uKSBhbmQgdGhlIHNwZWNpZmljIGxvY2F0aW9uIG9mIHp5Z290ZSBmb3JtYXRpb24gKHdpdGhpbiB0aGUgcmVwcm9kdWN0aXZlIHN5c3RlbSBvZiB0aGUgYmFybmFjbGUpIGFyZSBub3QgdGhlIHNhbWUgYXMgdGhvc2UgZm9yIG1vc3Qgb3RoZXIgYW5pbWFscy4gRnVydGhlcm1vcmUsIHRoZSBxdWVzdGlvbiBkb2Vzbid0IHNwZWNpZnkgdGhlIG9yZ2FuaXNtIHR5cGUsIHRoZXJlYnkgbGVhZGluZyB0aGlzIGFzIGFuIGluY29ycmVjdCBjaG9pY2Ugd2l0aG91dCB0aGF0IGFzc3VtcHRpb24uXG5cbihoKSBBbiBvcmdhbmlzbSdzIGJvZHk6IFRoaXMgaXMgYSB2YWd1ZSBvcHRpb24gdGhhdCBjb3ZlcnMgYSB3aWRlIHJhbmdlIG9mIGVudmlyb25tZW50cyB3aXRoaW4gYW4gb3JnYW5pc20ncyBib2R5LiBXaGlsZSB0aGlzIGlzIGJyb2FkbHkgY29ycmVjdCwgaXQncyBub3Qgc3BlY2lmaWMgZW5vdWdoLCBhbmQgdGhlIGZvY3VzIHNob3VsZCBiZSBvbiBhIHNwZWNpZmljIGluc3RhbmNlIChsaWtlIHdpdGhpbiBhbiBlZ2cpLlxuXG5Ob3csIGxldCdzIGV4YW1pbmUgKGYpIGFuIGFyY2hlZ29uaXVtLlxuXG5BbiBhcmNoZWdvbml1bSBpcyBhIHR5cGUgb2Ygc3BlY2lhbGl6ZWQgcmVwcm9kdWN0aXZlIHN0cnVjdHVyZSBmb3VuZCBpbiBub24tdmFzY3VsYXIgcGxhbnRzIChzdWNoIGFzIG1vc3NlcykgYW5kIHNvbWUgYWxnYWUuIEluc2lkZSB0aGUgYXJjaGVnb25pdW0sIGEgZmVtYWxlIGdhbWV0ZSAoZWdnKSBpcyBmb3JtZWQsIGFuZCBmZXJ0aWxpemF0aW9uIG9jY3VycyB3aGVuIGEgc3Blcm0gZnJvbSBhbm90aGVyIG1hbGUgZ2FtZXRlIGVudGVycy4gVGhlIHJlc3VsdGluZyBwcm9kdWN0IG9mIHRoaXMgZmVydGlsaXphdGlvbiBpcyBhIHp5Z290ZS4gXG5cbkluIHN1bW1hcnksIChmKSBpcyB0aGUgbW9zdCBhY2N1cmF0ZSBhbW9uZyB0aGUgb3B0aW9ucyBwcm92aWRlZCBhcyBpdCBzcGVjaWZpY2FsbHkgZGVub3RlcyB0aGUgbG9jYXRpb24gd2hlcmUgYSB6eWdvdGUgaXMgZm9ybWVkOiBpbnNpZGUgYW4gYXJjaGVnb25pdW0gd2l0aGluIGEgZmVtYWxlIHJlcHJvZHVjdGl2ZSB0cmFjdCBvZiBjZXJ0YWluIHBsYW50cy4gSXQgaXMgc3BlY2lmaWMsIGJpb2xvZ2ljYWwsIGFuZCBhbmF0b21pY2FsbHkgY29ycmVjdCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcGxhbnQgcmVwcm9kdWN0aW9uLiJ9fV0sICIxOCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGNhdXNlIGhhcm0gdG8gdGhlIGV5ZXM/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIE1pbGRldyAoYikgTm9ybWFsIHdhdGVyIChjKSBIZXJwZXMgKGQpIE5vcm1hbCBhaXIgKGUpIENvYWwgKGYpIE1vbGQgKGcpIEFjaWQgKGgpIENvbnRhY3Qgc29sdXRpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZyIsICJyZWFzb25pbmciOiAiVGhlIGNvcnJlY3QgYW5zd2VyIGlzICdnKSBBY2lkJyBiZWNhdXNlIGl0IGNhbiBjYXVzZSBjaGVtaWNhbCBidXJucywgdGlzc3VlIGRhbWFnZSwgYW5kIG90aGVyIHNlcmlvdXMgaW5qdXJpZXMgdG8gdGhlIGV5ZXMgd2hlbiBpdCBjb21lcyBpbnRvIGNvbnRhY3Qgd2l0aCB0aGUgZXllcy4gXG5cbkxldCdzIGdvIHRocm91Z2ggdGhlIGluY29ycmVjdCBhbnN3ZXJzIGFuZCBleHBsYWluIHdoeSB0aGV5J3JlIG5vdCBjb3JyZWN0OlxuXG4oYSkgTWlsZGV3OiBNaWxkZXcgaXMgYSB0eXBlIG9mIGZ1bmd1cyB0aGF0IHRocml2ZXMgaW4gZGFtcCBlbnZpcm9ubWVudHMuIFdoaWxlIGl0IGNhbiBjYXVzZSBhbGxlcmdpYyByZWFjdGlvbnMgaW4gc29tZSBwZW9wbGUsIGl0IGRvZXMgbm90IGRpcmVjdGx5IGhhcm0gdGhlIGV5ZXMuXG5cbihiKSBOb3JtYWwgd2F0ZXI6IE5vcm1hbCB3YXRlciBpcyBlc3NlbnRpYWwgZm9yIGxpZmUgYW5kIGRvZXMgbm90IHBvc2UgaGFybSB0byBleWVzLiBJbiBmYWN0LCBpdCdzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIGV5ZSBoZWFsdGggYnkga2VlcGluZyB0aGVtIGNsZWFuIGFuZCBtb2lzdC5cblxuKGMpIEhlcnBlczogV2hpbGUgaXQgY2FuIGFmZmVjdCB0aGUgc2tpbiBhcm91bmQgdGhlIGV5ZXMgYW5kIGNhdXNlIGNvbmRpdGlvbnMgbGlrZSBIZXJwZXMgU2ltcGxleCBWaXJ1cyBrZXJhdGl0aXMsIGl0IGlzbid0IGluaGVyZW50bHkgaGFybWZ1bCB0byB0aGUgZXllcyBpbiBhIGRpcmVjdCBtYW5uZXIgbGlrZSBhY2lkLiBUaGUgaGFybSBjb21lcyBmcm9tIGNvbXBsaWNhdGlvbnMgb3Igc2Vjb25kYXJ5IGJhY3RlcmlhbCBpbmZlY3Rpb25zIHdoZW4gdGhlIHZpcnVzIGFmZmVjdHMgdGhlIGV5ZXMuXG5cbihkKSBOb3JtYWwgYWlyOiBBaXIsIGFzIGxvbmcgYXMgaXQncyBicmVhdGhhYmxlIGFuZCBmcmVlIGZyb20gY29udGFtaW5hbnRzLCBkb2VzIG5vdCBwb3NlIGFueSByaXNrIHRvIHRoZSBleWVzLiBJdCdzIGFjdHVhbGx5IG5lY2Vzc2FyeSBmb3IgdGhlIGV5ZXMgdG8gZnVuY3Rpb24gcHJvcGVybHkuXG5cbihlKSBDb2FsOiBDb2FsLCBhIGNvbXBvc2l0ZSBvZiBvcmdhbmljIG1hdGVyaWFscywgZG9lc24ndCBkaXJlY3RseSBoYXJtIHRoZSBleWVzLiBIb3dldmVyLCBleHBvc3VyZSB0byBjb2FsIGR1c3QgY2FuIGxlYWQgdG8gcmVzcGlyYXRvcnkgaXNzdWVzLCB3aGljaCBpbmRpcmVjdGx5IGFmZmVjdCBleWUgaGVhbHRoLlxuXG4oZikgTW9sZDogU2ltaWxhciB0byBtaWxkZXcsIG1vbGQgY2FuIGNhdXNlIGFsbGVyZ2llcyBhbmQgcmVzcGlyYXRvcnkgcHJvYmxlbXMgYnV0IGRvZXNuJ3QgZGlyZWN0bHkgaGFybSB0aGUgZXllcy4gSXQncyB0aGUgYWlyYm9ybmUgc3BvcmVzIGFuZCByZWFjdGl2ZSBjb21wb3VuZHMgdGhhdCBjYW4gYmUgcHJvYmxlbWF0aWMuXG5cbihoKSBDb250YWN0IHNvbHV0aW9uOiBUeXBpY2FsbHksIGEgY29udGFjdCBzb2x1dGlvbiBpcyBkZXNpZ25lZCB0byBiZSBzYWZlIGZvciB1c2Ugd2l0aCBjb250YWN0IGxlbnNlcyBhbmQgZG9lc24ndCBoYXJtIHRoZSBleWVzIGlmIHVzZWQgY29ycmVjdGx5LiBBbnkgcG90ZW50aWFsIGhhcm0gd291bGQgYmUgYSByZXN1bHQgb2YgaW1wcm9wZXIgdXNlIG9yIGNvbnRhbWluYXRpb24uXG5cbkluIHN1bW1hcnksIHdoaWxlIGFsbCB0aGUgb3B0aW9ucyBjYW4gcG90ZW50aWFsbHkgY2F1c2UgaW5kaXJlY3QgaGFybSB1bmRlciBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzLCAnZykgQWNpZCcgZGlyZWN0bHkgYW5kIGFjdXRlbHkgaGFybXMgdGhlIGV5ZXMsIG1ha2luZyBpdCB0aGUgY29ycmVjdCBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLiJ9fV0sICIxOSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBhbmQgdGhlIFJlYXNvbmluZyBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPiwgXCJyZWFzb25pbmdcIjogPHJlYXNvbmluZyBhYm91dCB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWU/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIEJhbWJvbyAoYikgRGVzaWNjYXRpb24gKGMpIEJ1cnJzIChkKSBFbG1zIChlKSBNb3NzIChmKSBDb2FsIChnKSBDYW5keSAoaCkgTWVhdCJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJlIiwgInJlYXNvbmluZyI6ICIxLiBSZWFkaW5nIHRoZSBxdWVzdGlvbiBhbmQgb3B0aW9uczogV2UgYXJlIGFza2VkIHdoYXQgZm9ybXMgaW50byBwZWF0IHRocm91Z2ggZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUuXG5cbjIuIElkZW50aWZ5aW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBvcHRpb25zOiBcbiAgIC0gQmFtYm9vLCBEZXNpY2NhdGlvbiwgQnVycnMsIEVsbXMsIENvYWwsIENhbmR5LCBhbmQgTWVhdCBhcmUgYWxsIGRpZmZlcmVudCBvcmdhbmljIG1hdHRlciwgYnV0IG5vdCBhbGwgb2YgdGhlbSBmb3JtIHBlYXQgdW5kZXIgdGhlIG1lbnRpb25lZCBjb25kaXRpb25zLlxuXG4zLiBEZXRlcm1pbmluZyB3aGljaCBvcHRpb25zIGFyZSBub3QgbG9naWNhbDpcbiAgIC0gKGEpIEJhbWJvbzogV2hpbGUgYmFtYm9vIGlzIGEgcGxhbnQsIGl0IHR5cGljYWxseSBncm93cyBpbiByZWxhdGl2ZWx5IG1pbGQgY29uZGl0aW9ucyBhbmQgZG9lcyBub3QgdHJhbnNmb3JtIGludG8gcGVhdCB1bmRlciBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlLlxuICAgLSAoYikgRGVzaWNjYXRpb246IFRoaXMgcmVmZXJzIHRvIHRoZSBwcm9jZXNzIG9mIGRyeWluZyBvdXQgYW5kIGlzIG5vdCBhIGRpcmVjdCBjb250cmlidXRvciB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuIEl0IGRvZXNuJ3QgaW52b2x2ZSB0aGUgbmVjZXNzYXJ5IGhlYXQgYW5kIHByZXNzdXJlLlxuICAgLSAoYykgQnVycnM6IEJ1cnJzIGFyZSBzbWFsbCBzZWVkIGJhbGxzIGF0dGFjaGVkIHRvIHBsYW50cywgcHJpbWFyaWx5IHVzZWQgYnkgcGxhbnRzIGZvciBkaXNwZXJzYWwuIFRoZXkgZG9uJ3QgZm9ybSBwZWF0LlxuICAgLSAoZCkgRWxtczogVGhlc2UgYXJlIHRyZWVzIGNvbW1vbmx5IGZvdW5kIGluIHRlbXBlcmF0ZSByZWdpb25zLiBUaGV5IGNhbiBkZWNvbXBvc2Ugb3ZlciB0aW1lIGJ1dCBkbyBub3QgZm9ybSBwZWF0IHVuZGVyIG5vcm1hbCBvciBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlLlxuICAgLSAoZSkgTW9zczogVGhpcyBpcyB0aGUgY29ycmVjdCBhbnN3ZXIuIE1vc3MgaXMgYSB0eXBlIG9mIG5vbi12YXNjdWxhciBsYW5kIHBsYW50IHRoYXQgZ3Jvd3MgaW4gZGFtcCBlbnZpcm9ubWVudHMuIE92ZXIgbG9uZyBwZXJpb2RzLCB1bmRlciBjb25kaXRpb25zIG9mIGhpZ2ggcHJlc3N1cmUgYW5kIHNsb3dseSBkZWNvbXBvc2luZyBpbiB3YXRlci1yaWNoIGVudmlyb25tZW50cywgbW9zcyBjb250cmlidXRlcyB0byB0aGUgZm9ybWF0aW9uIG9mIHBlYXQuXG4gICAtIChmKSBDb2FsOiBDb2FsIGZvcm1zIGZyb20gdGhlIHJlbWFpbnMgb2YgcGxhbnRzIHVuZGVyIGludGVuc2UgaGVhdCBhbmQgcHJlc3N1cmUgZGVlcCB3aXRoaW4gdGhlIEVhcnRoJ3MgY3J1c3QsIGJ1dCBpdCBkb2Vzbid0IGZvcm0gcGVhdC4gUGVhdCBhbmQgY29hbCBhcmUgZGlzdGluY3QgZ2VvbG9naWNhbCBmb3JtYXRpb25zLlxuICAgLSAoZykgQ2FuZHk6IFRoaXMgaXMgbm90IG9yZ2FuaWMgbWF0dGVyIHRoYXQgY2FuIHRyYW5zZm9ybSBpbnRvIHBlYXQuIEl0J3MgYSBwcm9jZXNzZWQgZm9vZCBwcm9kdWN0LlxuICAgLSAoaCkgTWVhdDogTWVhdCBkb2VzIG5vdCBmb3JtIHBlYXQuIEl0IGRlY29tcG9zZXMgaW4gYSBkaWZmZXJlbnQgbWFubmVyIGFuZCBkb2Vzbid0IGNvbnRyaWJ1dGUgZGlyZWN0bHkgdG8gcGVhdCBmb3JtYXRpb24uXG5cbjQuIFByb3ZpZGluZyBleHBsYW5hdGlvbnMgZm9yIGluY29ycmVjdCBhbnN3ZXJzOlxuICAgLSBCYW1ib28sIEJ1cnJzLCBFbG1zLCBDYW5keSwgYW5kIE1lYXQgXHUyMDEzIFRoZXNlIG9wdGlvbnMgYXJlIGVpdGhlciBub3QgcGxhbnRzIG9yIGZvcm1zIG9mIG9yZ2FuaWMgbWF0dGVyIHRoYXQgZG9uJ3QgdW5kZXJnbyB0aGUgc3BlY2lmaWMgY29uZGl0aW9ucyAoZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSkgcmVxdWlyZWQgdG8gZm9ybSBwZWF0LlxuICAgLSBEZXNpY2NhdGlvbiBcdTIwMTMgVGhpcyBwcm9jZXNzIGlzIHRoZSByZW1vdmFsIG9mIG1vaXN0dXJlIGZyb20gYSBzdWJzdGFuY2UsIHdoaWNoIGRvZXNuJ3QgYWxpZ24gd2l0aCB0aGUgY29uZGl0aW9ucyByZXF1aXJlZCB0byBmb3JtIHBlYXQgKGhpZ2ggd2F0ZXIgY29udGVudCkuXG4gICAtIENvYWwgXHUyMDEzIFdoaWxlIHNpbWlsYXIgdG8gcGVhdCBpbiB0aGF0IGl0J3MgZm9ybWVkIGZyb20gcGxhbnQgZGVicmlzLCBpdCdzIGZvcm1lZCB1bmRlciBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBjb25kaXRpb25zIGRlZXAgd2l0aGluIHRoZSBFYXJ0aCwgbm90IHRocm91Z2ggc3VyZmFjZSBwcm9jZXNzZXMgaW52b2x2aW5nIG1vc3MuXG5cblRoZXJlZm9yZSwgdGhlIGNvcnJlY3QgYW5zd2VyIGlzIChlKSBNb3NzIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkgb3B0aW9uIGFtb25nIHRoZSBjaG9pY2VzIHRoYXQsIHdoZW4gc3ViamVjdGVkIHRvIGNvbmRpdGlvbnMgb2YgZXh0cmVtZSBoZWF0IGFuZCBwcmVzc3VyZSBvdmVyIHRpbWUsIGNhbiBjb250cmlidXRlIHRvIHRoZSBmb3JtYXRpb24gb2YgcGVhdC4ifX1dfSwgImNvbnZlcnNhdGlvbl9GQSI6IHsiMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgaXMgc2F0ZWxsaXRlIHRlY2hub2xvZ3kgdXNlZCBmb3IgcHJlZGljdGluZz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgU2Vjb25kcyBhbmQgbWludXRlcyAoYikgVGhlIHN0cmVuZ3RoIGFuZCBtYWduaXR1ZGUgb2YgYW4gZWFydGhxdWFrZSAoYykgV2hhdCBpdCdzIGxpa2Ugb3V0c2lkZSBlYWNoIGRheSAoZCkgNzAtNzUgZGVncmVlcyBmYWhyZW5oZWl0IChlKSBSYXBpZCBjaGFuZ2VzIG9jY3VyIChmKSBEZWFkLWVuZHMgYW5kIGZhbHNlIHN0YXJ0cy4gKGcpIFNub3csIGljZSwgYW5kIHJvY2sgKGgpIEFyb3VuZCA1IHRvIDI3IGRlZ3JlZXMgY2Vsc2l1cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJjIn19XSwgIjEiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgaXJyYWRpYXRpbmcgZm9vZCBkbz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgUmVsaWV2ZSBwYWluIChiKSBFbmhhbmNlIGZvb2QncyBudXRyaWVudHMgKGMpIEltcHJvdmVzIGZvb2Qgc2FmZXR5IChkKSBBbGxvd3MgZ3Jvd3RoIG9mIGJhY3RlcmlhIChlKSBJbmNyZWFzZXMgZm9vZCB3YXN0ZSAoZikgQ2hlbWljYWwgY2hhbmdlcyAoZykgR2V0IGNoZW1pY2FsIHJlYWN0aW9ucyBzdGFydGVkIChoKSBNYWpvciB0aHJlYXQgdG8gaGVhbHRoIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgcHJvdGVjdHMgYSBtYW1tYWwncyBza2luP1xuQW5zd2VyIENob2ljZXM6IChhKSBGaWJlciBmb2xsaWNsZXMgKGIpIEV4Zm9saWF0aW9uIChjKSBSZXNpc3RhbmNlIChkKSBMYXllcnMgb2YgZmF0IChlKSBFdmFwb3JhdGlvbiAoZikgQSBjdXRpY2xlIChnKSBTZW5zb3J5IG5ldXJvbnMgKGgpIEZ1ciBhbmQgZmF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImEifX1dLCAiMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgZG8gZWFydGh3b3JtcyBkbyB3aGVuIGEgc2VnbWVudCBicmVha3Mgb2ZmP1xuQW5zd2VyIENob2ljZXM6IChhKSBEaWVzIChiKSBSZWdyb3dzIGl0IChjKSBSZXByb2R1Y2VzIChkKSBTZWRpbWVudCAoZSkgUm9vdCBncm93dGggKGYpIE1pZ3JhdGUgKGcpIFN0b3BzIGdyb3dpbmcgKGgpIFJvb3RzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImIifX1dLCAiNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IExpZ2h0bmluZyBjYW4gYmUgYmFkIGZvciB3aGF0P1xuQW5zd2VyIENob2ljZXM6IChhKSBUaGUgZW52aXJvbm1lbnQgKGIpIFJhaW5zdG9ybXMgKGMpIERlc3RydWN0aW9uIChkKSBWaXNpYmlsaXR5IChlKSBUaHVuZGVyIChmKSBUaGUgc3VuIChnKSBUaGUgd2VhdGhlci4gKGgpIFRyYW5zcG9ydGF0aW9uIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImEifX1dLCAiNSI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEV2aWRlbmNlIG9mIHBhc3QgbGlmZSBjYW4gc2hvdyB0aGF0IHdoYXQgdXNlZCB0byBsaXZlIGluIGEgcGxhY2U/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNvdWxzIChiKSBBbmltYWxzIHdpdGggYmFja2JvbmVzIChjKSBPcmdhbmlzbXMgKGQpIFBsYW50IG9yIGFuaW1hbCAoZSkgTWFsZXMgYW5kIGZlbWFsZXMgKGYpIERlZm9yZXN0YXRpb24gKGcpIFJlaW5jYXJuYXRpb24gKGgpIEltcG9ydGFudCBoYWJpdGF0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJkIn19XSwgIjYiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBIb3cgdHJhaXRzIGFyZSBwYXNzZWQgZG93biwgb3IgaW5oZXJpdGVkLCBpcyBmb3VuZCBpbiBpbmZvcm1hdGlvbiBpbiBhbiBvcmdhbmlzbSdzIHdoYXQ/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFNwZWNpZXMgKGIpIE1lc3NlbmdlcnMgKGMpIEhhaXIgZm9sbGljbGVzIChkKSBDeWNsZXMgKGUpIFNraW4gY2VsbHMgKGYpIEVuZG9jcmluZSBzeXN0ZW0gKGcpIENocm9tb3NvbWVzIChoKSBQcm90ZWlucyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJnIn19XSwgIjciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGFyZSB0aGUgbWFqb3IgcHJvZHVjZXJzIGluIHRlbXBlcmF0dXJlIGFuZCBwcmVjaXBpdGF0aW9uP1xuQW5zd2VyIENob2ljZXM6IChhKSBHcmFzcyAoYikgQW5pbWFscyAoYykgQXBwbGVzIChkKSBQb3RhdG9lcyAoZSkgVHJlZXMgKGYpIFBsYW50cyAoZykgRnVuZ2kgKGgpIEZpZWxkcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJmIn19XSwgIjgiOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGF0IGRvZXMgYmVpbmcgYnVyaWVkIHVuZGVyIHNvaWwgYW5kIG11ZCBjaGFuZ2UgdmVnZXRhdGlvbiBpbnRvP1xuQW5zd2VyIENob2ljZXM6IChhKSBTY2FyY2UgcmVzb3VyY2VzIChiKSBIYXJtZnVsIHN1YnN0YW5jZXMgKGMpIFNjYXJzIChkKSBGb3NzaWwgZnVlbHMgKGUpIFNlZGltZW50IChmKSBTb21ldGhpbmcgdG8gbW92ZSAoZykgTWFnaWMgKGgpIFBpY25pY3MifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCJ9fV0sICI5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hlbiB3aWxsIGFuaW1hbHMgbW92ZSB0byBhbm90aGVyIGFyZWE/XG5BbnN3ZXIgQ2hvaWNlczogKGEpIFRvIGtlZXAgdGhlaXIgYm9keSBoZWF0LiAoYikgUmV1c2luZyBtYXRlcmlhbHMgKGMpIElmIHRoZXkgY2FuIG5vIGxvbmdlciBnZXQgZm9vZCAoZCkgSWYgdGhleSBhcmUgYm9yZWQgKGUpIE1hcnNoZXMgYW5kIHN3YW1wcyAoZikgSWYgdGhleSBoYXZlIHRvbyBtdWNoIG1vbmV5IChnKSBXYXJtIGFpciBtb3ZpbmcgaW50byBjb2xkIGFpciAoaCkgSWYgdGhleSBoYXZlIHRvbyBtdWNoIGZvb2QifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYyJ9fV0sICIxMCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEEgZmlyZWNyYWNrZXIgY29udmVydHMgY2hlbWljYWwgZW5lcmd5IGludG8gd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgS2luZXRpYyBlbmVyZ3kgKGIpIExvdWQgbm9pc2VzIChjKSBWaWJyYXRpbmcgd2F2ZXMgKGQpIEFuIG9iamVjdCBpcyBzZWVuIChlKSBFbGVjdHJvbWFnbmV0aWMgZW5lcmd5IChmKSBEZW94eXJpYm9udWNsZWljIGFjaWQgKGcpIEh5ZHJvZ2VuIGFuZCBveHlnZW4gKGgpIEhhcm1mdWwgc3Vic3RhbmNlcyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJjIn19XSwgIjExIjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcmFjdGlvbiBvZiBzZXZlcmFsIGdlbmVzP1xuQW5zd2VyIENob2ljZXM6IChhKSBNYWpvciBlZmZlY3RzIChiKSBSZXNwaXJhdGlvbiAoYykgUm9sZXggKGQpIERlbnNpdHkgKGUpIERpcGh0aGVyaWEgKGYpIENhbmlzIGx1cHVzIChnKSBTa2luIGNvbG9yIChoKSBEaWdlc3Rpb24ifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZyJ9fV0sICIxMiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdoYXQgY2FuIGZlZWQgYXQgbW9yZSB0aGFuIG9uZSB0cm9waGljIGxldmVsP1xuQW5zd2VyIENob2ljZXM6IChhKSBTaGVlcCAoYikgU2FsbW9uIChjKSBHcmFzc2VzIChkKSBCYXRzIChlKSBBbmltYWxzIChmKSBTaHJ1YnMgKGcpIEh1bWFucyAoaCkgVHJlZXMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYSJ9fV0sICIxMyI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFdobyBjYW4gc2hpdmVyP1xuQW5zd2VyIENob2ljZXM6IChhKSBCYXRzIChiKSBTaWRld2Fsa3MgKGMpIEh1bWFucyAoZCkgQmVlcyAoZSkgS29hbGFzIChmKSBNb3VudGFpbnMgKGcpIFRyZWVzIChoKSBQZW9wbGUifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiZCJ9fV0sICIxNCI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IEtpdHRlbnMgdGhhdCBhcmUgcHJhY3RpY2luZyBodW50aW5nIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTGVhcm5pbmcgYmVoYXZpb3IgKGIpIENvbXBldGluZyBmb3IgcmVzb3VyY2VzIChjKSBXYXJtLWJsb29kZWQgKGQpIENvbXBldGl0aW9uIChlKSBCYWQgYmVoYXZpb3IgKGYpIExlYXJuaW5nIG5vdGhpbmcgKGcpIEV4dGluZ3Vpc2hpbmcgYmVoYXZpb3IgKGgpIEVuZXJneSBvZiBtb3Zpbmcgb2JqZWN0cyJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJhIn19XSwgIjE1IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogRGVhZCBvcmdhbmlzbXMgY2FuIGNyZWF0ZSBlbmVyZ3kgYWZ0ZXIgd2hhdD9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQnVybmluZyAoYikgV2ludGVyIChjKSBNdXRhdGlvbnMgKGQpIENvb2tpbmcgKGUpIEN5Y2xlcyAoZikgU3VtbWVyIChnKSBGcmVlemluZyAoaCkgR3Vuc2hvdHMifSwgeyJyb2xlIjogImFzc2lzdGFudCIsICJjb250ZW50IjogeyJmaW5hbF9hbnN3ZXIiOiAiYSJ9fV0sICIxNiI6IFt7InJvbGUiOiAic3lzdGVtIiwgImNvbnRlbnQiOiAiQW5zd2VyIHRoZSBRdWVzdGlvbiBhbmQgaW5jbHVkZSB5b3VyIEZpbmFsIEFuc3dlciBpbiBhIGpzb24gbGlrZToge1wiZmluYWxfYW5zd2VyXCI6IDxsZXR0ZXIgY29ycmVzcG9uZGluZyB0byB0aGUgYW5zd2VyPn0uIn0sIHsicm9sZSI6ICJ1c2VyIiwgImNvbnRlbnQiOiAiUXVlc3Rpb246IFR1cm5pbmcgb24gd2hhdCB3aWxsIGVtaXQgZWxlY3Ryb21hZ25ldGljIHJhZGlhdGlvbj9cbkFuc3dlciBDaG9pY2VzOiAoYSkgVmVoaWNsZXMgKGIpIFNhdGVsbGl0ZXMgKGMpIExpZ2h0IGJ1bGIgKGQpIEJ1c2VzIChlKSBGaXJlY3JhY2tlcnMgKGYpIFNlbnNvcnkgbmV1cm9ucyAoZykgQW4gb2JqZWN0IChoKSBFbmdpbmVzIn0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImMifX1dLCAiMTciOiBbeyJyb2xlIjogInN5c3RlbSIsICJjb250ZW50IjogIkFuc3dlciB0aGUgUXVlc3Rpb24gYW5kIGluY2x1ZGUgeW91ciBGaW5hbCBBbnN3ZXIgaW4gYSBqc29uIGxpa2U6IHtcImZpbmFsX2Fuc3dlclwiOiA8bGV0dGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFuc3dlcj59LiJ9LCB7InJvbGUiOiAidXNlciIsICJjb250ZW50IjogIlF1ZXN0aW9uOiBXaGVyZSBpcyBhIHp5Z290ZSBmb3JtZWQgYnkgc3Blcm0gc3dpbW1pbmcgdG8gYW4gZWdnP1xuQW5zd2VyIENob2ljZXM6IChhKSBDb2xkZXIgYW5kIHdldHRlciAoYikgT2NlYW4gd2F0ZXIgKGMpIEdyYXB0b2xpdGVzIChkKSBSYXBpZCBleHBhbnNpb24gKGUpIEEgZGVsdGEgKGYpIEFuIGFyY2hlZ29uaXVtIChnKSBCYXJuYWNsZXMgKGgpIEFuIG9yZ2FuaXNtJ3MgYm9keSJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJmIn19XSwgIjE4IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBjYW4gY2F1c2UgaGFybSB0byB0aGUgZXllcz9cbkFuc3dlciBDaG9pY2VzOiAoYSkgTWlsZGV3IChiKSBOb3JtYWwgd2F0ZXIgKGMpIEhlcnBlcyAoZCkgTm9ybWFsIGFpciAoZSkgQ29hbCAoZikgTW9sZCAoZykgQWNpZCAoaCkgQ29udGFjdCBzb2x1dGlvbiJ9LCB7InJvbGUiOiAiYXNzaXN0YW50IiwgImNvbnRlbnQiOiB7ImZpbmFsX2Fuc3dlciI6ICJnIn19XSwgIjE5IjogW3sicm9sZSI6ICJzeXN0ZW0iLCAiY29udGVudCI6ICJBbnN3ZXIgdGhlIFF1ZXN0aW9uIGFuZCBpbmNsdWRlIHlvdXIgRmluYWwgQW5zd2VyIGluIGEganNvbiBsaWtlOiB7XCJmaW5hbF9hbnN3ZXJcIjogPGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbnN3ZXI+fS4ifSwgeyJyb2xlIjogInVzZXIiLCAiY29udGVudCI6ICJRdWVzdGlvbjogV2hhdCBmb3JtcyBpbnRvIHBlYXQgdGhyb3VnaCBleHRyZW1lIGhlYXQgYW5kIHByZXNzdXJlIG92ZXIgdGltZT9cbkFuc3dlciBDaG9pY2VzOiAoYSkgQmFtYm9vIChiKSBEZXNpY2NhdGlvbiAoYykgQnVycnMgKGQpIEVsbXMgKGUpIE1vc3MgKGYpIENvYWwgKGcpIENhbmR5IChoKSBNZWF0In0sIHsicm9sZSI6ICJhc3Npc3RhbnQiLCAiY29udGVudCI6IHsiZmluYWxfYW5zd2VyIjogImUifX1dfX0=\"\n",
+ " decoded_data = json.loads(base64.b64decode(encoded_data).decode())\n",
+ " \n",
+ " df = pd.DataFrame(decoded_data)\n",
+ "\n",
+ "\n",
+ " # Functions to handle prompts\n",
+ " def get_prompt(index, prompt_type):\n",
+ " return df.iloc[index][prompt_type]\n",
+ " \n",
+ " def next_prompt(index, prompt_type):\n",
+ " if index < len(df) - 1:\n",
+ " index += 1\n",
+ " return index, get_prompt(index, prompt_type)\n",
+ " \n",
+ " def previous_prompt(index, prompt_type):\n",
+ " if index > 0:\n",
+ " index -= 1\n",
+ " return index, get_prompt(index, prompt_type)\n",
+ " \n",
+ " # Gradio App\n",
+ " with gr.Blocks() as demo:\n",
+ " gr.Markdown(\"# Prompt Browser\")\n",
+ " with gr.Row():\n",
+ " prompt_type_dropdown = gr.Dropdown(\n",
+ " choices=list(df.columns),\n",
+ " value=list(df.columns)[0],\n",
+ " label=\"Select Prompt Type\"\n",
+ " )\n",
+ " index_display = gr.Textbox(\"0\", label=\"Index\", interactive=False)\n",
+ " \n",
+ " prompt_display = gr.JSON(value=df.iloc[0][list(df.columns)[0]], label=\"Prompt\")\n",
+ " \n",
+ " with gr.Row():\n",
+ " prev_button = gr.Button(\"⬅️ Previous\")\n",
+ " next_button = gr.Button(\"Next ➡️\")\n",
+ " \n",
+ " # State to hold the current index\n",
+ " index_state = gr.State(value=0)\n",
+ " \n",
+ " # Button click events\n",
+ " prev_button.click(\n",
+ " fn=previous_prompt,\n",
+ " inputs=[index_state, prompt_type_dropdown],\n",
+ " outputs=[index_state, prompt_display]\n",
+ " )\n",
+ " next_button.click(\n",
+ " fn=next_prompt,\n",
+ " inputs=[index_state, prompt_type_dropdown],\n",
+ " outputs=[index_state, prompt_display]\n",
+ " )\n",
+ " \n",
+ " # Dropdown change event\n",
+ " prompt_type_dropdown.change(\n",
+ " fn=lambda index, prompt_type: get_prompt(index, prompt_type),\n",
+ " inputs=[index_state, prompt_type_dropdown],\n",
+ " outputs=prompt_display\n",
+ " )\n",
+ " \n",
+ " # Update index display\n",
+ " index_state.change(\n",
+ " fn=lambda index: str(index),\n",
+ " inputs=index_state,\n",
+ " outputs=index_display\n",
+ " )\n",
+ " \n",
+ " # Launch the app\n",
+ " demo.launch(height=900)\n",
+ " \n",
+ " \n",
+ "\t\n",
+ "\n"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
}
],
- "source": [
- "json_str"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "7903b9e7-36ee-463a-be38-06ee2614be1d",
- "metadata": {},
- "outputs": [],
"source": [
"import base64\n",
"\n",
@@ -1687,7 +1762,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 24,
"id": "3ed415c2-cdc7-4549-8edf-98030cb7c61c",
"metadata": {},
"outputs": [],
@@ -1714,7 +1789,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 25,
"id": "25f62e9b-09f8-4912-94fd-0ded680614b2",
"metadata": {
"tags": []
@@ -1744,12 +1819,86 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 26,
"id": "18a206c5-0e40-46b3-8dfb-20000789b6b5",
"metadata": {
"tags": []
},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "c7987277dba44fa59feb3b539d0b83e8",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Uploading the dataset shards: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "99070f6699fc43c88d192f95961e30f8",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Creating parquet from Arrow format: 0%| | 0/7 [00:00, ?ba/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "930f0d57600a47f08b0030b93722ef0c",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Uploading the dataset shards: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "f56192123e42423f9337c7ec7e9f430a",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Creating parquet from Arrow format: 0%| | 0/2 [00:00, ?ba/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "No files have been modified since last commit. Skipping to prevent empty commit.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "CommitInfo(commit_url='https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized/commit/73649fd5fac5c07d88e770f16655c8fb9860020a', commit_message='Upload dataset', commit_description='', oid='73649fd5fac5c07d88e770f16655c8fb9860020a', pr_url=None, repo_url=RepoUrl('https://huggingface.co/datasets/derek-thomas/labeled-multiple-choice-explained-falcon-tokenized', endpoint='https://huggingface.co', repo_type='dataset', repo_id='derek-thomas/labeled-multiple-choice-explained-falcon-tokenized'), pr_revision=None, pr_num=None)"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
"# Push the dataset to the Hugging Face Hub\n",
"dataset_dict.push_to_hub(OUTPUT_DATASET)"