<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>Gridder</name>
	<version>0.1</version>
  <mincmsversion>1.6.5</mincmsversion>
	<help>PGxpbmsgbWVkaWE9InNjcmVlbiIgaHJlZj0iLi4vbW9kdWxlcy9HcmlkZGVyL0NTUy9NYXN0ZXJDU1MuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0Ij48ZGl2IGNsYXNzPSJTaW1XcmFwIj48YiBjbGFzcz0icmJvdHRvbSI+PGIgY2xhc3M9InIxIj48L2I+IDxiIGNsYXNzPSJyMiI+PC9iPjxiIGNsYXNzPSJyMyI+PC9iPiA8YiBjbGFzcz0icjQiPjwvYj48L2I+DQoNCjxkaXYgY2xhc3M9IlNpbWNvbiI+PGgzIGNsYXNzPSJCYWNrTGluayI+PGEgb25jbGljaz0iamF2YXNjcmlwdDp3aW5kb3cuaGlzdG9yeS5nbygtMSkiIHJlbD0ibm9mb2xsb3ciPiZsdDsmbHQ7IEJhY2s8L2E+PC9oMz4NCjxoMz5XaGF0IERvZXMgVGhpcyBEbz8tLS0gdGhpcyBuZWVkcyB1cGRhdGluZzwvaDM+DQo8cD5hZGQgYSBvdmVybGF5PC9wPg0KDQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCg0KDQo8YnIvPjxici8+DQpHcmlkZGVyIGlzIG1hZGUgaGVyZSBodHRwOi8vZ3JpZGRlci5hbmRyZWVoYW5zc29uLnNlLy4NCjxoMz5TdXBwb3J0PC9oMz4NCjxoND5TY3JlZW5jYXN0cyBmb3IgZXh0cmEgaGVscCB3aWxsIGZhbGxvdy0tLSBvbiB0aGUgVE9ETzwvaDQ+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBvciB0byBmaWxlIGEgYnVnIHJlcG9ydCB2aXNpdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3BwYm0iPnRoZSBDTVMgRm9yZ2U8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8L3VsPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwOSwgamVyZW15QmFzcyAmbHQ7PGEgaHJlZj0iaHR0cDovL2NvcmJlbnNwcm9kdWN0cy5jb20iPmNvcmJlbnNwcm9kdWN0cy5jb208L2E+Jmd0OyBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8c3Ryb25nPlN1cHBvcnQgbW9yZSBtb2RzIGxpa2UgdGhpczo8L3N0cm9uZz48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbWQiIHZhbHVlPSJfcy14Y2xpY2siPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9Ijg4MTc2NzUiPg0KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fVVMvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISI+DQo8aW1nIGFsdD0iIiBib3JkZXI9IjAiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9lbl9VUy9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPg0KPC9mb3JtPjxici8+DQoNCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQo8L2RpdiA+DQoNCg0KPGIgY2xhc3M9InJib3R0b20iPjxiIGNsYXNzPSJyNCI+PC9iPjxiIGNsYXNzPSJyMyI+PC9iPiA8YiBjbGFzcz0icjIiPjwvYj4gPGIgY2xhc3M9InIxIj48L2I+PC9iPg0KDQo8L2Rpdj4NCjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+</help>
	<about>PGJyIC8+QXV0aG9yOiBqZXJlbXlCYXNzICZsdDtqZXJlbXliYXNzQGNhYmxlb25lLm5ldCZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAwLjE8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz4NCjx1bD4NCiAgPGxpPlZlcnNpb24gMC4xIEJldGEgcmVsZWFzZS48L2xpPg0KPC91bD48YnIgLz4=</about>
	<description>Gridder is an excellent tool for any web developer/ designer that wants to easily align, match and/or lay out websites.
If you need to be pixel perfect this can help... Simple, flexible!</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQogLy8kdGhpcy0+QWRkRXZlbnRGb3JtKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCi8vaWYoJHRoaXMtPkNoZWNrQk9PS0lFVXNlcigpKXsNCg0KZ2xvYmFsICRnQ21zOw0KJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7IA0KDQokSVBzPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdJUHMnLCRJUHMpOw0KJGdvT249dHJ1ZTsNCmlmKCEkZ29Pbil7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQokdXJsQmFzZT0kdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJsQmFzZScsJ2h0dHA6Ly9ncmlkZGVyLmFuZHJlZWhhbnNzb24uc2UvcmVsZWFzZXMvbGF0ZXN0LycpOw0KJGdDb2xvcj0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ0NvbG9yJywnI0VFRUVFRScpOw0KJGdDb2x1bW5zPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdnQ29sdW1ucycsJzEyJyk7DQokZ09wYWNpdHk9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2dPcGFjaXR5JywnMC4zNScpOw0KJGdXaWR0aD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ1dpZHRoJywnMTAnKTsNCiRwQ29sb3I9JHRoaXMtPkdldFByZWZlcmVuY2UoJ3BDb2xvcicsJyNDMEMwQzAnKTsNCiRwSGVpZ2h0PSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwSGVpZ2h0JywnMTUnKTsNCiRwT2Zmc2V0PSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwT2Zmc2V0JywnMCcpOw0KJHBPcGFjaXR5PSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwT3BhY2l0eScsJzAuNTUnKTsNCiRjZW50ZXI9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2NlbnRlcicsJ3RydWUnKTsNCiRnRW5hYmxlZD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ0VuYWJsZWQnLCd0cnVlJyk7DQokcEVuYWJsZWQ9JHRoaXMtPkdldFByZWZlcmVuY2UoJ3BFbmFibGVkJywndHJ1ZScpOw0KJHNldHVwRW5hYmxlZD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2V0dXBFbmFibGVkJywndHJ1ZScpOw0KJGZpeEZsYXNoPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXhGbGFzaCcsJ3RydWUnKTsNCiRzaXplPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaXplJywnOTYwJyk7DQoNCg0KJHRlbXBsYXRlPSRwYXJhbXNbJ3RlbXBsYXRlJ107DQokcGF0dGVybiA9ICcvPFwvaGVhZD4oLio/KTxib2R5Lyc7IA0KJHJlcGxhY2VtZW50PSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQp2YXIgZ092ZXJyaWRlID0gew0KICB1cmxCYXNlOiBcJycuJHVybEJhc2UuJ1wnLA0KICBnQ29sb3I6IFwnJy4kZ0NvbG9yLidcJywNCiAgZ0NvbHVtbnM6ICcuJGdDb2x1bW5zLicsDQogIGdPcGFjaXR5OiAnLiRnT3BhY2l0eS4nLA0KICBnV2lkdGg6ICcuJGdXaWR0aC4nLA0KICBwQ29sb3I6IFwnJy4kcENvbG9yLidcJywNCiAgcEhlaWdodDogJy4kcEhlaWdodC4nLA0KICBwT2Zmc2V0OiAnLiRwT2Zmc2V0LicsDQogIHBPcGFjaXR5OiAnLiRwT3BhY2l0eS4nLA0KICBjZW50ZXI6ICcuJGNlbnRlci4nLA0KICBnRW5hYmxlZDogJy4kZ0VuYWJsZWQuJywNCiAgcEVuYWJsZWQ6ICcuJHBFbmFibGVkLicsDQogIHNldHVwRW5hYmxlZDogJy4kc2V0dXBFbmFibGVkLicsDQogIGZpeEZsYXNoOiAnLiRmaXhGbGFzaC4nLA0KICBzaXplOiAnLiRzaXplLicNCn07DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9ubG9hZD0iY3JlYXRlR3JpZGRlcigpIic7DQoNCiR0ZW1wbGF0ZSA9IHByZWdfcmVwbGFjZSgkcGF0dGVybiwgJHJlcGxhY2VtZW50LCAkdGVtcGxhdGUpOyANCnJldHVybiAkcGFyYW1zWyd0ZW1wbGF0ZSddPSR0ZW1wbGF0ZTsNCg0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCiMNCiNUaGUgdGFiIGhlYWRlcnMNCiMNCmVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQpsb2FkID0gZnVuY3Rpb24oKSB7DQogICAgbG9hZC5nZXRTY3JpcHQoImh0dHA6Ly9hamF4Lm1pY3Jvc29mdC5jb20vYWpheC9qUXVlcnkvanF1ZXJ5LTEuMy4yLm1pbi5qcyIpOw0KICAgIC8vIGRvIHN0dWZmIHdoZW4galF1ZXJ5IGZpbmlzaGVzIGxvYWRpbmcuDQogICAgbG9hZC50cnlSZWFkeSgwKTsNCn0NCmxvYWQuZ2V0U2NyaXB0ID0gZnVuY3Rpb24oZmlsZW5hbWUpIHsNCiAgICB2YXIgZmlsZXJlZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpDQogICAgZmlsZXJlZi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKQ0KICAgIGZpbGVyZWYuc2V0QXR0cmlidXRlKCJzcmMiLCBmaWxlbmFtZSkNCiAgICBpZiAodHlwZW9mIGZpbGVyZWYhPSJ1bmRlZmluZWQiKQ0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGZpbGVyZWYpDQp9DQpsb2FkLnRyeVJlYWR5ID0gZnVuY3Rpb24odGltZV9lbGFwc2VkKSB7DQogICAgLyogQ29udGludWFsbHkgcG9sbHMgZm9yIGpRdWVyeSBsaWJyYXJ5LiAqLw0KICAgIGlmICh0eXBlb2YgJCA9PSAidW5kZWZpbmVkIikgew0KICAgICAgICBpZiAodGltZV9lbGFwc2VkIDw9IDUwMDApIHsNCiAgICAgICAgICAgIHNldFRpbWVvdXQoImxvYWQudHJ5UmVhZHkoIiArICh0aW1lX2VsYXBzZWQgKyAyMDApICsgIikiLCAyMDApOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgYWxlcnQoIlRpbWVkIG91dCB3aGlsZSBsb2FkaW5nIGpRdWVyeS4iKQ0KICAgICAgICB9DQogICAgfQ0KfQ0KaWYgKHR5cGVvZih3aW5kb3cualF1ZXJ5KT09InVuZGVmaW5lZCIpew0KCQlsb2FkKCk7ICAgDQp9DQovL11dPg0KPC9zY3JpcHQ+DQoNCjxsaW5rIG1lZGlhPSJzY3JlZW4iIGhyZWY9Ii4uL21vZHVsZXMvR3JpZGRlci9DU1MvTWFzdGVyQ1NTLmNzcyIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgLz4NCjxsaW5rIG1lZGlhPSJzY3JlZW4iIGhyZWY9Ii4uL21vZHVsZXMvR3JpZGRlci9DU1MvZmFyYnRhc3RpYy5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIC8+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vY2RuLmpxdWVyeXRvb2xzLm9yZy8xLjEuMi90aW55L2pxdWVyeS50b29scy5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Imh0dHA6Ly9hamF4Lm1pY3Jvc29mdC5jb20vYWpheC9qcXVlcnkudmFsaWRhdGUvMS42L2pxdWVyeS52YWxpZGF0ZS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9tb2R1bGVzL0dyaWRkZXIvaW5jbHVkZXMvZmFyYnRhc3RpYy5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9tb2R1bGVzL0dyaWRkZXIvaW5jbHVkZXMvTUVfMS4wMC4wMC5qcyI+PC9zY3JpcHQ+DQoNCg0KPGRpdiBpZD0iZGVtb3RpcCI+Jm5ic3A7PC9kaXY+DQoNCic7DQoNCiR1cmxleHQ9Q01TX1NFQ1VSRV9QQVJBTV9OQU1FLic9Jy4kX1NFU1NJT05bQ01TX1VTRVJfS0VZXTsNCiRpbWdIZWxwRj0nPGltZyBzcmM9Ii4uL2FkbWluL3RoZW1lcy9OQ2xlYW5HcmV5L2ltYWdlcy9pY29ucy9zeXN0ZW0vaW5mby1leHRlcm5hbC5naWYiIGFsdD0iJy4kdXJsZXh0LiciIGNsYXNzPSJzeXN0ZW1pY29uIiB0aXRsZT0iIiByZWw9Iic7DQokaW1nSGVscEI9JyIvPic7DQoNCg0KDQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2RfcHJlZnNfdGl0bGUnLCAkdGhpcy0+TGFuZygnbW9kX3ByZWZzX3RpdGxlJykpOw0KICAgIA0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybV9zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZV9vcHRpb25zJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybV9lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2Zvcm1fc3VibWl0JywgJHRoaXMtPkxhbmcoJ2Zvcm1fc3VibWl0JykpKTsNCg0KDQoNCg0KDQoNCiAgICAvLyB5b3UnbGwgb2Z0ZW4gd2FudCB0byBkbyB0aGluZ3MgbGlrZSB0aGlzIHRvIHByb3ZpZGUgZmVlZGJhY2s6DQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSk/JHBhcmFtc1snbWVzc2FnZSddOicnKSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ0lQc19sYWJlbCcsICR0aGlzLT5MYW5nKCdJUHNfbGFiZWwnKS4kaW1nSGVscEYuIklQcyIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ0lQc19pbnB1dCcsICR0aGlzLT5DcmVhdGVUZXh0QXJlYSAoMCwgJGlkLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnSVBzJyksICdJUHMnLCAnJywgJ0lQcG9vbCcpKTsNCg0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigndXJsQmFzZV9sYWJlbCcsICR0aGlzLT5MYW5nKCd1cmxCYXNlX2xhYmVsJykuJGltZ0hlbHBGLiJ1cmxCYXNlIi4kaW1nSGVscEIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigndXJsQmFzZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndXJsQmFzZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cmxCYXNlJyksIDQwKSk7DQoNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dDb2xvcl9sYWJlbCcsICR0aGlzLT5MYW5nKCdnQ29sb3JfbGFiZWwnKS4kaW1nSGVscEYuImdDb2xvciIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dDb2xvcl9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZ0NvbG9yJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2dDb2xvcicpLCA0MCkpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ0NvbHVtbnNfbGFiZWwnLCAkdGhpcy0+TGFuZygnZ0NvbHVtbnNfbGFiZWwnKS4kaW1nSGVscEYuImdDb2x1bW5zIi4kaW1nSGVscEIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignZ0NvbHVtbnNfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2dDb2x1bW5zJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2dDb2x1bW5zJyksIDQwKSk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnT3BhY2l0eV9sYWJlbCcsICR0aGlzLT5MYW5nKCdnT3BhY2l0eV9sYWJlbCcpLiRpbWdIZWxwRi4iZ09wYWNpdHkiLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdnT3BhY2l0eV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZ09wYWNpdHknLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ09wYWNpdHknKSwgNDApKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dXaWR0aF9sYWJlbCcsICR0aGlzLT5MYW5nKCdnV2lkdGhfbGFiZWwnKS4kaW1nSGVscEYuImdXaWR0aCIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dXaWR0aF9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZ1dpZHRoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2dXaWR0aCcpLCA0MCkpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigncENvbG9yX2xhYmVsJywgJHRoaXMtPkxhbmcoJ3BDb2xvcl9sYWJlbCcpLiRpbWdIZWxwRi4icENvbG9yIi4kaW1nSGVscEIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigncENvbG9yX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwQ29sb3InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncENvbG9yJyksIDQwKSk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwSGVpZ2h0X2xhYmVsJywgJHRoaXMtPkxhbmcoJ3BIZWlnaHRfbGFiZWwnKS4kaW1nSGVscEYuInBIZWlnaHQiLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwSGVpZ2h0X2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwSGVpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BIZWlnaHQnKSwgNDApKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BPZmZzZXRfbGFiZWwnLCAkdGhpcy0+TGFuZygncE9mZnNldF9sYWJlbCcpLiRpbWdIZWxwRi4icE9mZnNldCIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BPZmZzZXRfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3BPZmZzZXQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncE9mZnNldCcpLCA0MCkpOw0KDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwT3BhY2l0eV9sYWJlbCcsICR0aGlzLT5MYW5nKCdwT3BhY2l0eV9sYWJlbCcpLiRpbWdIZWxwRi4icE9wYWNpdHkiLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwT3BhY2l0eV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncE9wYWNpdHknLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncE9wYWNpdHknKSwgNDApKTsNCg0KDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjZW50ZXJfbGFiZWwnLCAkdGhpcy0+TGFuZygnY2VudGVyX2xhYmVsJykuJGltZ0hlbHBGLiJjZW50ZXIiLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjZW50ZXJfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NlbnRlcicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjZW50ZXInKSwgNDApKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dFbmFibGVkX2xhYmVsJywgJHRoaXMtPkxhbmcoJ2dFbmFibGVkX2xhYmVsJykuJGltZ0hlbHBGLiJnRW5hYmxlZCIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2dFbmFibGVkX2lucHV0JywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdnRW5hYmxlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdnRW5hYmxlZCcpLCA0MCkpOw0KCQ0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigncEVuYWJsZWRfbGFiZWwnLCAkdGhpcy0+TGFuZygncEVuYWJsZWRfbGFiZWwnKS4kaW1nSGVscEYuInBFbmFibGVkIi4kaW1nSGVscEIpOw0KCSR0aGlzLT5zbWFydHktPmFzc2lnbigncEVuYWJsZWRfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3BFbmFibGVkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BFbmFibGVkJyksIDQwKSk7DQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzZXR1cEVuYWJsZWRfbGFiZWwnLCAkdGhpcy0+TGFuZygnc2V0dXBFbmFibGVkX2xhYmVsJykuJGltZ0hlbHBGLiJzZXR1cEVuYWJsZWQiLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzZXR1cEVuYWJsZWRfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NldHVwRW5hYmxlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZXR1cEVuYWJsZWQnKSwgNDApKTsJDQoJDQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaXhGbGFzaF9sYWJlbCcsICR0aGlzLT5MYW5nKCdmaXhGbGFzaF9sYWJlbCcpLiRpbWdIZWxwRi4iZml4Rmxhc2giLiRpbWdIZWxwQik7DQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaXhGbGFzaF9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZml4Rmxhc2gnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZml4Rmxhc2gnKSwgNDApKTsNCgkNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NpemVfbGFiZWwnLCAkdGhpcy0+TGFuZygnc2l6ZV9sYWJlbCcpLiRpbWdIZWxwRi4ic2l6ZSIuJGltZ0hlbHBCKTsNCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NpemVfaW5wdXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NpemUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2l6ZScpLCA0MCkpOw0KDQoJDQoNCgkNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX0JOVG9wdGlvbnMudHBsJyk7DQoNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.description.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpnbG9iYWwgJGdDbXM7DQovLy8vLy8tLS0tLWJ1dHRvbiB2YXJzDQokZGlzPSR0aGlzLT5MYW5nKCRwYXJhbXNbJ0Rlc2NyaXB0aW9uJ10pOw0KZWNobyAgIjxzcGFuIGlkPVwiRElTQ1JQXCI+Ii4kZGlzLiI8L3NwYW4+IjsNCmV4aXQ7DQoNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.save_options.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsNCg0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnICkgKQ0Kew0KICByZXR1cm47DQp9DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdSZWRpcmVjdFVSTCcsICRwYXJhbXNbJ1JlZGlyZWN0VVJMJ10pOw0KDQokSVBzPSRwYXJhbXNbJ0lQcyddOw0KJHVybEJhc2U9JHBhcmFtc1sndXJsQmFzZSddOw0KJGdDb2xvcj0kcGFyYW1zWydnQ29sb3InXTsNCiRnQ29sdW1ucz0kcGFyYW1zWydnQ29sdW1ucyddOw0KJGdPcGFjaXR5PSRwYXJhbXNbJ2dPcGFjaXR5J107DQokZ1dpZHRoPSRwYXJhbXNbJ2dXaWR0aCddOw0KJHBDb2xvcj0kcGFyYW1zWydwQ29sb3InXTsNCiRwSGVpZ2h0PSRwYXJhbXNbJ3BIZWlnaHQnXTsNCiRwT2Zmc2V0PSRwYXJhbXNbJ3BPZmZzZXQnXTsNCiRwT3BhY2l0eT0kcGFyYW1zWydwT3BhY2l0eSddOw0KJGNlbnRlcj0kcGFyYW1zWydjZW50ZXInXTsNCiRnRW5hYmxlZD0kcGFyYW1zWydnRW5hYmxlZCddOw0KJHBFbmFibGVkPSRwYXJhbXNbJ3BFbmFibGVkJ107DQokc2V0dXBFbmFibGVkPSRwYXJhbXNbJ3NldHVwRW5hYmxlZCddOw0KJGZpeEZsYXNoPSRwYXJhbXNbJ2ZpeEZsYXNoJ107DQokc2l6ZT0kcGFyYW1zWydzaXplJ107DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdJUHMnLCRJUHMpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VybEJhc2UnLCR1cmxCYXNlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdnQ29sb3InLCRnQ29sb3IpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dDb2x1bW5zJywkZ0NvbHVtbnMpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dPcGFjaXR5JywkZ09wYWNpdHkpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dXaWR0aCcsJGdXaWR0aCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgncENvbG9yJywkcENvbG9yKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwSGVpZ2h0JywkcEhlaWdodCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgncE9mZnNldCcsJHBPZmZzZXQpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BPcGFjaXR5JywkcE9wYWNpdHkpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NlbnRlcicsJGNlbnRlcik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZ0VuYWJsZWQnLCRnRW5hYmxlZCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgncEVuYWJsZWQnLCRwRW5hYmxlZCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2V0dXBFbmFibGVkJywkc2V0dXBFbmFibGVkKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmaXhGbGFzaCcsJGZpeEZsYXNoKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaXplJywkc2l6ZSk7DQoNCg0KJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3ByZWZzdXBkYXRlZCcpOw0KDQokcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdvcHRpb25zdXBkYXRlZCcpOw0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/CSS/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/CSS/farbtastic.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqDQogKiBGYXJidGFzdGljIENvbG9yIFBpY2tlciAxLjINCiAqIMKpIDIwMDggU3RldmVuIFdpdHRlbnMNCiAqDQogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQogKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQogKg0KICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0ENCiAqLw0KI1BQQk0gLmZhcmJ0YXN0aWMgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQojUFBCTSAuZmFyYnRhc3RpYyAqIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBjdXJzb3I6IGNyb3NzaGFpcjsNCn0NCiNQUEJNIC5mYXJidGFzdGljLCNQUEJNICAuZmFyYnRhc3RpYyAud2hlZWwgew0KICB3aWR0aDogMTk1cHg7DQogIGhlaWdodDogMTk1cHg7DQp9DQojUFBCTSAuZmFyYnRhc3RpYyAuY29sb3IsICNQUEJNIC5mYXJidGFzdGljIC5vdmVybGF5IHsNCiAgdG9wOiA0N3B4Ow0KICBsZWZ0OiA0N3B4Ow0KICB3aWR0aDogMTAxcHg7DQogIGhlaWdodDogMTAxcHg7DQp9DQojUFBCTSAuZmFyYnRhc3RpYyAud2hlZWwgew0KICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3doZWVsLnBuZykgbm8tcmVwZWF0Ow0KICB3aWR0aDogMTk1cHg7DQogIGhlaWdodDogMTk1cHg7DQp9DQojUFBCTSAuZmFyYnRhc3RpYyAub3ZlcmxheSB7DQogIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvbWFzay5wbmcpIG5vLXJlcGVhdDsNCn0NCiNQUEJNIC5mYXJidGFzdGljIC5tYXJrZXIgew0KICB3aWR0aDogMTdweDsNCiAgaGVpZ2h0OiAxN3B4Ow0KICBtYXJnaW46IC04cHggMCAwIC04cHg7DQogIG92ZXJmbG93OiBoaWRkZW47IA0KICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL21hcmtlci5wbmcpIG5vLXJlcGVhdDsNCn0NCg0K]]></data>
	</file>
	<file>
	  <filename>/CSS/MasterCSS.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsNCi8qIENTUyBEb2N1bWVudCAqLw0KLkJhY2tMaW5re2N1cnNvcjpwb2ludGVyO2Zsb2F0OnJpZ2h0O30NCiBiLnJib3R0b20gew0KZGlzcGxheTpibG9jazsNCn0NCiBiLnJib3R0b20gKiB7DQpiYWNrZ3JvdW5kOiNBOEI3QzYgbm9uZSByZXBlYXQgc2Nyb2xsIDAgMDsNCmRpc3BsYXk6YmxvY2s7DQpoZWlnaHQ6MXB4Ow0Kb3ZlcmZsb3c6aGlkZGVuOw0KfQ0KIGIucjEgew0KYmFja2dyb3VuZDojMDAwMDAwIG5vbmUgcmVwZWF0IHNjcm9sbCAwIDA7DQptYXJnaW46MCA1cHg7DQp9DQogYi5yMiB7DQptYXJnaW46MCAzcHg7DQp9DQogYi5yMyB7DQptYXJnaW46MCAycHg7DQp9DQogYi5yNCB7DQpoZWlnaHQ6MnB4Ow0KbWFyZ2luOjAgMXB4Ow0KfQ0KLlNpbWNvbnsNCglwYWRkaW5nOiAxMHB4Ow0KCWJvcmRlci1yaWdodDogMnB4IHNvbGlkICMwMDA7DQoJYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDAwOw0KCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7DQoJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsNCgliYWNrZ3JvdW5kLWNvbG9yOiNBOEI3QzY7DQp9DQouU2ltV3JhcHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyB9DQouY29kZUhJR0hMSUdIVHtjb2xvcjojMzU0ZDU4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBsaW5lLWhlaWdodDoxNXB4O30NCmRpdi5wYWdlY29udGFpbmVyIC5wYWdlaGVhZGVyIHtjb2xvcjojMzU0ZDU4OyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6NjAwOyBsaW5lLWhlaWdodDoxNXB4O30NCg0KZGl2LnBhZ2Vjb250YWluZXIgLnBhZ2VoZWFkZXIgc3Bhbi5oZWxwdGV4dHsNCglmb250LXNpemU6MTJweDsgDQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0KCW1hcmdpbi10b3A6LTRweDsNCglwYWRkaW5nOjJweDsNCglwb3NpdGlvbjphYnNvbHV0ZTsNCglyaWdodDozNXB4Ow0KCXotaW5kZXg6MTA7DQp9DQpocnsNCglkaXNwbGF5OmJsb2NrOw0KCX0NCnRleHRhcmVhew0KCXdpZHRoOjI1MHB4Ow0KCWhlaWdodDo3NXB4Ow0KfQ0KLmV4dGVuZEhBTkRMRSAqIHsNCglkaXNwbGF5OmlubGluZTsNCgltYXJnaW46MWVtIDAgMC4yZW0gMjAlOw0KCWN1cnNvcjpwb2ludGVyOw0KfQ0KDQouTmV4dGVuZCB7DQoJbWFyZ2luOjFlbSAwIDAuMmVtIDIwJTsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQouTmV4dGVuZCB7DQoJZGlzcGxheTpub25lOw0KfQ0KDQouVHJhbnNsYXRlQ29uIHsNCgliYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7DQoJYm9yZGVyOjJweCBzb2xpZCAjMDAwMDAwOw0KCXBvc2l0aW9uOmFic29sdXRlOw0KCXdpZHRoOjE5NXB4Ow0KCXotaW5kZXg6NzAwOw0KfQ0KLmNvbnRyeUNvZGVzew0KCXdpZHRoOjM1MHB4Ow0KCWhlaWdodDoxNTBweDsNCglvdmVyZmxvdzpzY3JvbGw7DQoJYm9yZGVyOiBtZWRpdW0gaW5zZXQgIzMzMzsNCgliYWNrZ3JvdW5kLWNvbG9yOiNDQ0M7DQoJcGFkZGluZzoxMHB4Ow0KCWxpbmUtaGVpZ2h0OjIwcHg7DQp9DQoNCiNkZW1vdGlwIHsNCglkaXNwbGF5Om5vbmU7DQoJYmFja2dyb3VuZDp0cmFuc3BhcmVudCB1cmwoaHR0cDovL2Zsb3dwbGF5ZXIub3JnL3Rvb2xzL2ltZy90b29sdGlwL2JsYWNrX2Fycm93X2JpZy5wbmcpOw0KCWZvbnQtc2l6ZToxMnB4Ow0KCWhlaWdodDoxNjZweDsNCgl3aWR0aDozMjBweDsNCglwYWRkaW5nOjI1cHg7DQoJY29sb3I6I2ZmZjsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJei1pbmRleDo5OTk2Ow0KfQ0KIA0KLyogc3R5bGUgdGhlIHRyaWdnZXIgZWxlbWVudHMgKi8NCiNkZW1vIGltZyB7DQoJYm9yZGVyOjA7DQoJY3Vyc29yOnBvaW50ZXI7DQoJbWFyZ2luOjAgOHB4Ow0KfQ0KaW1nLnN5c3RlbWljb257IGN1cnNvcjpwb2ludGVyO30NCi5wcm9ncmVzcyB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjQ1JTtsZWZ0OjUwJTsgei1pbmRleDo5OTk3O30NCg0KI3BhZ2VfdGFicyBkaXZ7DQoJYmFja2dyb3VuZDp0cmFuc3BhcmVudCBub25lOw0KCWJvcmRlcjogbm9uZTsNCgltYXJnaW46MHB4Ow0KCXBhZGRpbmc6MHB4Ow0KCWZsb2F0Om5vbmU7DQoJY3Vyc29yOmRlZmF1bHQ7fQ0KZGl2LlRhYnBhbmVzIGRpdi5wYW5lIHsNCglkaXNwbGF5Om5vbmU7CQkNCglwYWRkaW5nOjE1cHggMTBweDsNCglib3JkZXI6MXB4IHNvbGlkICM5OTk7DQoJYm9yZGVyLXRvcDowOw0KCWZvbnQtc2l6ZToxMnB4Ow0KCWJhY2tncm91bmQtY29sb3I6I2ZmZjsNCn0NCg0KLyogcm9vdCBlbGVtZW50IGZvciB0YWJzICAqLw0KdWwudGFiZXJzIHsgDQoJbGlzdC1zdHlsZTpub25lOyANCgltYXJnaW46MCAhaW1wb3J0YW50OyANCglwYWRkaW5nOjA7DQoJaGVpZ2h0OjMwcHg7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzY2NjsJDQp9DQoNCi8qIHNpbmdsZSB0YWIgKi8NCnVsLnRhYmVycyBsaSB7IA0KCWZsb2F0OmxlZnQ7CSANCgl0ZXh0LWluZGVudDowOw0KCXBhZGRpbmc6MDsNCgltYXJnaW46MCAhaW1wb3J0YW50Ow0KCWxpc3Qtc3R5bGUtaW1hZ2U6bm9uZSAhaW1wb3J0YW50OyANCn0NCg0KLyogbGluayBpbnNpZGUgdGhlIHRhYi4gdXNlcyBhIGJhY2tncm91bmQgaW1hZ2UgKi8NCnVsLnRhYmVycyBhIHsgDQoJYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9ibHVlLnBuZykgbm8tcmVwZWF0IC00MjBweCAwOw0KCWZvbnQtc2l6ZToxMXB4Ow0KCWRpc3BsYXk6YmxvY2s7DQoJaGVpZ2h0OiAzMHB4OyAgDQoJbGluZS1oZWlnaHQ6MzBweDsNCgl3aWR0aDogMTM0cHg7DQoJdGV4dC1hbGlnbjpjZW50ZXI7CQ0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KCWNvbG9yOiMwMDA7DQoJcGFkZGluZzowcHg7DQoJbWFyZ2luOjBweDsJDQoJcG9zaXRpb246cmVsYXRpdmU7DQoJdG9wOjFweDsNCn0NCg0KdWwudGFiZXJzIGE6YWN0aXZlIHsNCglvdXRsaW5lOm5vbmU7CQkNCn0NCg0KLyogd2hlbiBtb3VzZSBlbnRlcnMgdGhlIHRhYiBtb3ZlIHRoZSBiYWNrZ3JvdW5kIGltYWdlICovDQp1bC50YWJlcnMgYTpob3ZlciB7DQoJYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9ibHVlLnBuZykgbm8tcmVwZWF0IC00MjBweCAgLTMxcHg7Ow0KCWNvbG9yOiNmZmY7CQ0KfQ0KDQovKiBhY3RpdmUgdGFiIHVzZXMgYSBjbGFzcyBuYW1lICJjdXJyZW50Ii4gaXQncyBoaWdobGlnaHQgaXMgYWxzbyBkb25lIGJ5IG1vdmluZyB0aGUgYmFja2dyb3VuZCBpbWFnZS4gKi8NCnVsLnRhYmVycyBhLmN1cnJlbnQsIHVsLnRhYmVycyBhLmN1cnJlbnQ6aG92ZXIsIHVsLnRhYmVycyBsaS5jdXJyZW50IGEgew0KCWJhY2tncm91bmQtcG9zaXRpb246IC00MjBweCAtNjJweDsJCQ0KCWN1cnNvcjpkZWZhdWx0ICFpbXBvcnRhbnQ7IA0KCWNvbG9yOiMwMDAgIWltcG9ydGFudDsNCn0NCg0KLyogRGlmZmVyZW50IHdpZHRocyBmb3IgdGFiczogdXNlIGEgY2xhc3MgbmFtZTogdzEsIHcyLCB3MyBvciB3MiAqLw0KDQoNCi8qIHdpZHRoIDEgKi8NCnVsLnRhYmVycyBhLncxIAkJCXsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUxOXB4IDA7IHdpZHRoOjEzNHB4OyB9DQp1bC50YWJlcnMgYS53MTpob3ZlciAJeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTE5cHggLTMxcHg7IH0NCnVsLnRhYmVycyBhLncxLmN1cnJlbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTE5cHggLTYycHg7IH0NCg0KLyogd2lkdGggMiAqLw0KdWwudGFiZXJzIGEudzIgCQkJeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzY2cHggLTBweDsgd2lkdGg6MTU0cHg7IH0NCnVsLnRhYmVycyBhLncyOmhvdmVyIAl7IGJhY2tncm91bmQtcG9zaXRpb246IC0zNjZweCAtMzFweDsgfQ0KdWwudGFiZXJzIGEudzIuY3VycmVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zNjZweCAtNjJweDsgfQ0KDQoNCi8qIHdpZHRoIDMgKi8NCnVsLnRhYmVycyBhLnczIAkJCXsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5M3B4IC0wcHg7IHdpZHRoOjE3NHB4OyB9DQp1bC50YWJlcnMgYS53Mzpob3ZlciAJeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkzcHggLTMxcHg7IH0NCnVsLnRhYmVycyBhLnczLmN1cnJlbnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkzcHggLTYycHg7IH0NCg0KLyogd2lkdGggNCAqLw0KdWwudGFiZXJzIGEudzQgCQkJeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMHB4IC0wcHg7IHdpZHRoOjE5NHB4OyB9DQp1bC50YWJlcnMgYS53NDpob3ZlciAJeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMHB4IC0zMXB4OyB9DQp1bC50YWJlcnMgYS53NC5jdXJyZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTBweCAtNjJweDsgfQ0KDQoNCi8qIGluaXRpYWxseSBhbGwgcGFuZXMgYXJlIGhpZGRlbiAqLyANCmRpdi5UYWJwYW5lcyBkaXYucGFuZSB7DQoJZGlzcGxheTpub25lOwkJDQp9DQojcGFnZV90YWJzICNQUEJNew0KCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICMzMzM7DQoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7DQoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMzMzOw0KCXdpZHRoOjEwMCU7DQp9DQojcGFnZV90YWJzIGRpdi5wYW5lew0KCXdpZHRoOjEwMCU7DQpwYWRkaW5nLXRvcDoxMHB4Ow0KdGV4dC1hbGlnbjpsZWZ0Ow0KCX0NCiNwYWdlX3RhYnN7IG1hcmdpbjowcHg7IHBhZGRpbmc6MHB4O30NCg0KZGl2LnBhZ2Vjb250YWluZXIgLnBhZ2V0ZXh0IHsgdGV4dC1hbGlnbjpsZWZ0O30NCg0KI3BhZ2VfdGFicyBkaXYuVHJhbnNsYXRlew0KCXRleHQtYWxpZ246bGVmdDsNCmNvbG9yOiMzODQ2NTQ7DQpmb250LXdlaWdodDpib2xkOw0KbWFyZ2luOjFlbSAwIDAuMmVtIDIwJTsNCnBhZGRpbmc6MDsNCndpZHRoOmF1dG87CQ0KfQ0KDQpkaXYuVHJhbnNsYXRlICp7DQoJbWFyZ2luOjBweDsgcGFkZGluZzowcHg7DQp9DQoNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentPostRender.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0KCk7DQovLw0KLy8vLyAwLiAgQ2hlY2sgY21zIHZlcnNpb24NCi8vZ2xvYmFsICRDTVNfVkVSU0lPTjsNCi8vaWYoIHZlcnNpb25fY29tcGFyZSgkQ01TX1ZFUlNJT04sJzIuMC1iZXRhMScpIDwgMCApDQovLyAgew0KLy8gICAgLy8gbm90IENNUyAyLjAsIGRvbid0IGdvIGFueSBmdXJ0aGVyLg0KLy8gICAgcmV0dXJuOw0KLy8gIH0NCi8vDQovLw0KLy8gLy8kdGhpcy0+QWRkRXZlbnRGb3JtKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsNCi8vLy9pZigkdGhpcy0+Q2hlY2tCT09LSUVVc2VyKCkpew0KLy8NCmdsb2JhbCAkZ0NtczsNCiRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOyANCg0KJElQcz0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnSVBzJywnJyk7DQoNCg0KaWYoc3Ryc3RyKCRJUHMsICRfU0VSVkVSWydSRU1PVEVfQUREUiddKT09ZmFsc2UgJiYgJElQcyE9Jycpew0KIHJldHVybiBmYWxzZTsNCn0NCg0KDQokdXJsQmFzZT0kdGhpcy0+R2V0UHJlZmVyZW5jZSgndXJsQmFzZScsJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvR3JpZGRlci9pbmNsdWRlcy8nKTsNCiRnQ29sb3I9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2dDb2xvcicsJyNFRUVFRUUnKTsNCiRnQ29sdW1ucz0kdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ0NvbHVtbnMnLCcxMicpOw0KJGdPcGFjaXR5PSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdnT3BhY2l0eScsJzAuMzUnKTsNCiRnV2lkdGg9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2dXaWR0aCcsJzEwJyk7DQokcENvbG9yPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwQ29sb3InLCcjQzBDMEMwJyk7DQokcEhlaWdodD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgncEhlaWdodCcsJzE1Jyk7DQokcE9mZnNldD0kdGhpcy0+R2V0UHJlZmVyZW5jZSgncE9mZnNldCcsJzAnKTsNCiRwT3BhY2l0eT0kdGhpcy0+R2V0UHJlZmVyZW5jZSgncE9wYWNpdHknLCcwLjU1Jyk7DQokY2VudGVyPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjZW50ZXInLCd0cnVlJyk7DQokZ0VuYWJsZWQ9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2dFbmFibGVkJywndHJ1ZScpOw0KJHBFbmFibGVkPSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwRW5hYmxlZCcsJ3RydWUnKTsNCiRzZXR1cEVuYWJsZWQ9JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NldHVwRW5hYmxlZCcsJ2ZhbHNlJyk7DQokZml4Rmxhc2g9JHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpeEZsYXNoJywndHJ1ZScpOw0KJHNpemU9JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NpemUnLCc5NjAnKTsNCg0KDQoNCiRwYXR0ZXJuID0gJy88XC9oZWFkPlxzKj88Ym9keS8nOyAgDQokcmVwbGFjZW1lbnQ9Jw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KdmFyIGdPdmVycmlkZSA9IHsNCiAgdXJsQmFzZTogXCcnLiR1cmxCYXNlLidcJywNCiAgZ0NvbG9yOiBcJycuJGdDb2xvci4nXCcsDQogIGdDb2x1bW5zOiAnLiRnQ29sdW1ucy4nLA0KICBnT3BhY2l0eTogJy4kZ09wYWNpdHkuJywNCiAgZ1dpZHRoOiAnLiRnV2lkdGguJywNCiAgcENvbG9yOiBcJycuJHBDb2xvci4nXCcsDQogIHBIZWlnaHQ6ICcuJHBIZWlnaHQuJywNCiAgcE9mZnNldDogJy4kcE9mZnNldC4nLA0KICBwT3BhY2l0eTogJy4kcE9wYWNpdHkuJywNCiAgY2VudGVyOiAnLiRjZW50ZXIuJywNCiAgZ0VuYWJsZWQ6ICcuJGdFbmFibGVkLicsDQogIHBFbmFibGVkOiAnLiRwRW5hYmxlZC4nLA0KICBzZXR1cEVuYWJsZWQ6ICcuJHNldHVwRW5hYmxlZC4nLA0KICBmaXhGbGFzaDogJy4kZml4Rmxhc2guJywNCiAgc2l6ZTogJy4kc2l6ZS4nDQp9Ow0KPC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keSc7DQoNCmlmKHN0cnN0cigkcGFyYW1zWydjb250ZW50J10sICdnT3ZlcnJpZGUnKT09ZmFsc2Upew0KICRwYXJhbXNbJ2NvbnRlbnQnXSA9IHByZWdfcmVwbGFjZSgkcGF0dGVybiwgJHJlcGxhY2VtZW50LCAkcGFyYW1zWydjb250ZW50J10pOyANCn0NCg0KDQoNCg0KDQoNCg0KJHBhdHRlcm4gPSAnLzxcL2JvZHkvJzsgIA0KJHJlcGxhY2VtZW50PScNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQpsb2FkID0gZnVuY3Rpb24oKSB7DQogICAgbG9hZC5nZXRTY3JpcHQoImh0dHA6Ly9hamF4Lm1pY3Jvc29mdC5jb20vYWpheC9qUXVlcnkvanF1ZXJ5LTEuMy4yLm1pbi5qcyIpOw0KICAgIC8vIGRvIHN0dWZmIHdoZW4galF1ZXJ5IGZpbmlzaGVzIGxvYWRpbmcuDQogICAgbG9hZC50cnlSZWFkeSgwKTsNCn0NCmxvYWQuZ2V0U2NyaXB0ID0gZnVuY3Rpb24oZmlsZW5hbWUpIHsNCiAgICB2YXIgZmlsZXJlZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpDQogICAgZmlsZXJlZi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKQ0KICAgIGZpbGVyZWYuc2V0QXR0cmlidXRlKCJzcmMiLCBmaWxlbmFtZSkNCiAgICBpZiAodHlwZW9mIGZpbGVyZWYhPSJ1bmRlZmluZWQiKQ0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGZpbGVyZWYpDQp9DQpsb2FkLnRyeVJlYWR5ID0gZnVuY3Rpb24odGltZV9lbGFwc2VkKSB7DQogICAgLyogQ29udGludWFsbHkgcG9sbHMgZm9yIGpRdWVyeSBsaWJyYXJ5LiAqLw0KICAgIGlmICh0eXBlb2YgJCA9PSAidW5kZWZpbmVkIikgew0KICAgICAgICBpZiAodGltZV9lbGFwc2VkIDw9IDUwMDApIHsNCiAgICAgICAgICAgIHNldFRpbWVvdXQoImxvYWQudHJ5UmVhZHkoIiArICh0aW1lX2VsYXBzZWQgKyAyMDApICsgIikiLCAyMDApOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgYWxlcnQoIlRpbWVkIG91dCB3aGlsZSBsb2FkaW5nIGpRdWVyeS4iKQ0KICAgICAgICB9DQogICAgfQ0KfQ0KaWYgKHR5cGVvZih3aW5kb3cualF1ZXJ5KT09InVuZGVmaW5lZCIpew0KCQlsb2FkKCk7ICAgDQp9DQoJDQovL11dPg0KDQo8L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvR3JpZGRlci9pbmNsdWRlcy85NjAuZ3JpZGRlci5qcyI+PC9zY3JpcHQ+DQo8L2hlYWQ+DQo8L2JvZHknOw0KDQppZihzdHJzdHIoJHBhcmFtc1snY29udGVudCddLCAnOTYwLmdyaWRkZXIuanMnKT09ZmFsc2Upew0KICRwYXJhbXNbJ2NvbnRlbnQnXSA9IHByZWdfcmVwbGFjZSgkcGF0dGVybiwgJHJlcGxhY2VtZW50LCAkcGFyYW1zWydjb250ZW50J10pOyANCn0NCg0KDQoNCg0KDQoNCg0KDQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/Gridder.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmNsYXNzIEdyaWRkZXIgZXh0ZW5kcyBDTVNNb2R1bGUNCnsNCglmdW5jdGlvbiBHZXROYW1lKCl7DQoJCXJldHVybiBnZXRfY2xhc3MoJHRoaXMpOw0KCX0NCgkNCglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsNCgl9DQoJDQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpew0KCQlyZXR1cm4gJzAuMSc7DQoJfQ0KCQ0KCWZ1bmN0aW9uIEdldEhlbHAoKXsNCgkJcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIEdldEF1dGhvcigpew0KCQlyZXR1cm4gJ2plcmVteUJhc3MnOw0KCX0NCgkNCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpew0KCQlyZXR1cm4gJ2plcmVteWJhc3NAY2FibGVvbmUubmV0JzsNCgl9DQoJDQoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCl7DQoJCXJldHVybiB0cnVlOw0KCX0NCgkNCglmdW5jdGlvbiBIYXNBZG1pbigpew0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJDQoJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCl7DQoJCXJldHVybiAnbGF5b3V0JzsNCgl9DQoJDQoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpew0KCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJyk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpew0KCQlyZXR1cm4gYXJyYXkoKTsNCgl9DQoJDQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKXsNCgkJcmV0dXJuICIxLjYuNSI7DQoJfQ0KCQ0KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpew0KCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7DQoJfQ0KCQ0KCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCl7DQoJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KCX0NCg0KCWZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKXsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCglmdW5jdGlvbiBEaXNwbGF5TWVzc2FnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQsICR0aXRsZSwgJG1lc3NhZ2Upew0KCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRpdGxlKTsNCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgJG1lc3NhZ2UpOw0KCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ21lc3NhZ2UudHBsJyk7DQoJfQ0KCWZ1bmN0aW9uIG15UmVkaXJlY3RUb1RhYiggJGlkLCAkdGFiLCAkcGFyYW1zID0gJycgKXsNCgkJJHBhcm1zID0gYXJyYXkoKTsNCgkJaWYoIGlzX2FycmF5KCRwYXJhbXMpKXsNCgkJCSRwYXJtcyA9ICRwYXJhbXM7DQoJCX0NCgkJJHBhcm1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICR0YWIgKTsNCgkJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRwYXJtcyApOw0KCX0NCglmdW5jdGlvbiBteVJlZGlyZWN0KCAkaWQsICRhY3Rpb24sICRwYXJhbXMgPSAnJyApew0KCQl1bnNldCgkcGFyYW1zWydhY3Rpb24nXSk7DQoJCSR0aGlzLT5SZWRpcmVjdCggJGlkLCAkYWN0aW9uLCAnJywgJHBhcmFtcyApOw0KCX0NCn0NCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/ajax-loader.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAALAPQAAOTs9QAAAMPK0rrByNLZ4QUFBQAAACkqLHR4fVZZXKassx4fIEJER3uAhVlcYKqwtyIjJAMDA0ZIS87V3cHI0Nvi6zI0NsXM1Nng6aOpr4+UmrW7wtXd5QAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA]]></data>
	</file>
	<file>
	  <filename>/images/blue.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAnoAAABcCAYAAAD5wBgOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACmBJREFUeNrs3V1o3eUdB/Dn5LWxajpdRhJpt9YXTNYlNsR2IGM4x4o3NpjCnIwK6oqtV5PBYBeB5HID2YU6sW6IgmiRwOhFQLxwlA3WZiawuGRUV3VLMutbW7Vp0pez5zn21CR9We2N/v//zwcezjn/3P36/f3ze55zTlpXLpdD1dDQ0H3xYVtcPXGtCkBWfBLXaFzPDwwM7Fr+Q72NzJIBx+LaF9dLMROPnycTD8eHrXH1xnWlcp3jcFyvxfVMXM9VL5bSoBeLd1t8vrOrq+veuEJbW1toampSMsiI+fn5MDMzEyYmJsLY2NgL8dIT8Ua5V28js2TFwsJCmJ6eDpOTk2F0dHRxJu5Imejt7b27o6MjtLe3h8bGRgVbZm5uLszOzobx8fHUV0/GS4/F9XrdmZ/v7OvrqzQVkD3pprd27drqumd4eDhd3qu3kVmyoqGh4Wwm1qxZU8lEHPL2lUqlV/r7+0NnZ6ciXUTaEK1bt66yVq9e/dDIyEi6vKM0ODj4QHd399NbtmwJJ0+dDm8enAnvfXg0nDx5UtUgI+pqa8LXr2kO169tD/V1tWHPnj3plGR77O2n9DYySxbU1taGa792Vbhx3XWLM/HIpk2bHt28eXNYOHEyvBEz8eFHRyv5YFlP1dWFb1zbHG66/rrK6927d4epqamtNfH5/Rs2bKhcfOOt6TB76ENNBRmTbnr/fe+jyi/G5ExPP6i3kVmy4tSpU+HQ+4eXZ2J7T09P5fWBN/9T+bkh7wI9FXtl5t0PwptvL+2pNOj1pve7k0PvHVEpyLBDH3zWw62trenhFr2NzJLlTNTW1t7c0tIS0vcJ0uku/9+7hw5XHtPnW6OeNOg1pOO+5PRpUzJkWbWHz/S03kZmyWQm0uleyoI8XH5P1dfXp4crapQEACCf6pa8MvZBPultZBaZKGSdlgx6pXJJgSCH9DYyi0wUs05O9MBOGGQWmchpnZzogZ0wyCwykdM6LR30SooIuWx8vY3MIhOFrJO3bqEI9DYyi0wUsk7euoUi7PD0NjKLTBSyTt66hSI0vt5GZslWAs55LROXWrqaCw96jkUhp/Q2MotMFLJOTvSgCBs8vY3MIhOFrJPP6EERGl9vI7PIRCHr5EQP7IRBZvlKKZ/ntUxcXu8Y9MAvTZBZZKIIg15QRMhr56sBMotMFLBOTvTAThhkFpnIS5186xbcIEFmkYli1KnuYlMgkM8dHsgsMpHXOpUvMuj56jLks/H1NjKLTBSyTt66hSI0vt5GZpEJg55vtEBu75BqgMwiE4Wo03n+r9tyuawwkBOL+1lvI7NkclYJ5bNZSI+lIBdftKeq9SsNDg6qHgBAHodmuycAgHxa8hm9oaGhXfGhP65VaQhUHsiMtGM7EteegYGBbct/qLeRWTLicFwvx0z8+DyZeDE+/CiuZpm4YE+l+u2O66HqxcqJXixeuvDLrq6ub8UV2traQlNTk5JBRszPz4eZmZkwMTERxsbG3omXfh1vlI/rbWSWrFhYWAjT09NhcnIyjI6OLs7EL+Lzn/f29rZ3dHSE9vb20NjYqGDLzM3NhdnZ2TA+Pp766h/x0q/i+mN10DvY19dXaSog29IvzuHh4XfiDfKbehuZJcuZiE+/UyqVjvT394fOzk6FuUT79+8PIyMjadj7dl1sqme6u7srTTV3/ET4/Yuvhr/87UD4+NM5lYKMWHlFY/juhhvDz37y/bB+/fpw8ODBNbG3n9XbyCxZsaKxIWzqvj7s2PaDs5kYGxt7duPGjZUh78jHx8Ku518NoxP/Cp8em1ewZa5a2RS+t/GmsOOnPwy33nprql/n1NTUb2pvv/32Z++8887G5ubm8LvnXgkv7/17WDhxUsUgQ06cOBUO/vtQ+OjIXPzleUNYuXJlejvshtjbDXobmSULTp46Fd6efn95Jtbdddddten5b/8wEvbu/2clO5wr9cqBt96Nm6SF0LP+W6GhoSGdjN6U/qreVen97uRPf51SKciwvfs+6+HW1tbKoYneRmbJciZqa2sbWlpawqk4BP559IDiXIJq76TPt0bXVP58cl1d3dlpEMj2jm5xT+ttZJYsZuLY3EIlC9U8zC84xfuiPVVfX58elv0/GQAA5IZBDwAgp+qMfWBLBzKLTOSzTksGvVLZH5qGPNLbyCwyUcw6mY8BAHLKW7dQBHobmUUmClmnpYOeY1HIJ72NzCITxSjTsjot/Yye+kAu6W1kFpkohuUHn0tP9ErKCPm8Q+ptZBaZKIJyyZcxAAAKYelbt6ZlyOlGWG8js2QpAOVzXsvE5fWOEz0AgJxacqJX9lFHyCW9jcwiE0UpVM2FB70aNYRc0tvILDJRDKVQvvCgZ1oGO2GQWWQiy5OeEz2wEwaZRSbyOec50QM7YZBZZCKvk97SEz3fugUAyCl/Rw+KsMHT28gsMlHIOi39L9Ac8EFO6W1kFpkohPJFBr3S8r9EDeRkh6e3kVlkohB1WjYPVwa9crlsWoa8bObK5fM819vILNnKRDULnz+XicupX2lwcNCIDACQQ6XFOykAAPJjyWf0hoaG7osP2+LqiWuV8kBmfBLXaFzPDwwM7Fr+Q72NzJIBx+LaF9dLMROPnycTD8eHrXH1xnWlcp3jcFyvxfVMXM9VL1ZO9GLxbovPd3Z1dd0bV2hrawtNTU1KBhkxPz8fZmZmwsTERBgbG3shXnoi3ij36m1klqxYWFgI09PTYXJyMoyOji7OxB0pE729vXd3dHSE9vb20NjYqGDLzM3NhdnZ2TA+Pp766sl46bG4Xq+e6O3s6+urNBWQPemmt3bt2uq6Z3h4OF3eq7eRWbKioaHhbCbWrFlTyUQc8vaVSqVX+vv7Q2dnpyJdRNoQrVu3rrJWr1790MjISLq8I30Z44Hu7u6nt2zZUvmGxpEjR8Lx48fD6dOnVQ0yoqamJqxYsSJcffXVled79uxJpyTbY28/pbeRWbIg/aHflInm5ubFmXhk06ZNj27evLmSg5SJdBosE+fvqTTspfolu3fvDlNTU1vTid79GzZsqFw8evRo5eivWnAgG9IvxWrvrlq1KqSejjfIB/U2MkuWpME+/XsvysT2np6eys+qg79MXLinjh07VqlN2kCl+sVB78E06PWm97sXFxjIprTTTVpbW9PDLXobmSXLmaitrb25paXl7HWZuLRhOQ166fOtUU8a9Brq6j7/8q0iQvad6Wm9jcySSel0KmWhmof0Wh6+mPr6+vRwhT8zDQCQ103U4hemZcgnvY3MIhPFrNOSQS99YwPIH72NzCITBj3TMtgJg8wiEwY9wA0SZBaZMOgBbpAgs8jElz/oef8b8klvI7PIhEHPtAx2wiCzyIRBD3CDBJlFJgx6gBskyCwy8eUPet7/hnzS28gsMmHQMy2DnTDILF+5f//0WiYMeoBfmsgsMqFOBj1wgwSZRSbyz6AHbpAgs8iEQQ9wgwSZRSYMeoAbJMgsMmHQA9wgQWaRCYMe4AaJzCITGPQAvY3MIhMY9MANEmQWmcgp/58IAIBBDwCALPmfAAMAG4Npnhqhk74AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/marker.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAK3RFWHRDcmVhdGlvbiBUaW1lAHZyIDE0IGp1bCAyMDA2IDEzOjMxOjIzICswMTAwHvJDZwAAAAd0SU1FB9YHDgsgJYiZ4bUAAAAJcEhZcwAALiIAAC4iAari3ZIAAAAEZ0FNQQAAsY8L/GEFAAAB5ElEQVR42q2Tz0sqURTH72Qq4mASSAoSIfSDdCEI8qJFLXSjLYSQNoGLINrI8/0ZD9q0KnDlKkIMebmP9xZRCEEiLQLBiMiNJDYq/Zg573vpCkM6CdGBD3Pn3OvXe77nDGPfENKwJBHx/CxYAtNAAVfgXJKk7khVCCyCP6ALVKAJXkEdbINxw5tgM4HHPphSFEUql8usXq8zWZZZKBRiPp+PH3sBx2Br4FbiBg+aplGxWKRgMPiMH1+YTKZDq9V64na7G+l0mprNJo7RG/g94IEoQSsUCuRyue6QToIJYAJWMA/Bo2QySZ1Ohws9gZBeZI570Gq1yO/395BKGJg+ZbFYznK5HAmf9vQiKW5iqVQim832Fyn5E+83Y7EYieAdY2Nig7dRqtVqrNfr3YiWGsVltVrtr2f0IrwEZrfbGeqWhQ9GMeFwOPprRS9SAWo4HGZOp/MH1l4DAS6+HolE+u9Xek9kcK+qKqVSKUL/s0hPDhFY83g8j5VKhcQg7nxs80/w0mg0KB6Pa2az+RTpDbDA3sd/lwvk8/l+Z7iS/FHEAor8H9rtNmWzWYpGo+T1eikQCFAmkyFxAy7AJ255aMHYcIID8d1oNBi8hGuwwkYFDq0CPlG3YsTb4B/4BRwjBb4S/wGzT16tu5THiAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/mask.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/ppbmDonate.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/support.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwBQTFRFLi0oBgUB9fX1ra2s1NTUW1lVqainZWRhPj04vr29mZmYJCIdeXh2oKCeOzk0rKyr6+rqp6akEA8JTk1IoqKhX11ZNTQuQD45REI99vb2dHRxQ0E8DQwFt7e2HRwYIB4ZKCYgHhwWycnIGRgUFhUOLiwmMC8pBAQB8PDwT05MIiEen56cERAMMTAqioqILCokp6emYF5aGBcQsbGuIiAaNDMtODYyQkA7FBINHBoUSEdCiYmHDg0HYWBc1NTTEhAJGhgSx8bGnZya0dDPYmFdMjEub29sxMTDCgkEvLy7MTAuCwoFamllFhQQlZSSHBsXODc0cHBtMC8tPDs3q6uoCwkCKigihoWCCAcDgYB+JiQeKSglfHx6Xl1byMjHJCQggH98V1ZTJyYjjYyKY2JeR0VARUM+NzYzQUA8jo6NwsLANTQxgYB9KyoneXd0pKOgNDMwBAMBOTcyFBQQYWBeKSciBwYBMjIvfHp3VVVSUlFONjUvMDAs4uLiCAgBJiUhKykjCQgBJiYhCQcBCAYBCggBCAcBWVdTVlVQXFpWU1JNfXt4TUxHtra1mZiXbWxq09PTFBILPDo1+/v7+fn5+vr6mJiXxcXEmZiWfHt57Ozs+Pj4/Pz8R0ZBDAoDbGxqZGNf/f39e3t5SklEUE9KMzIs7+/v7e3tTEtGUVBNNjUyPjw3XVtX8vLyVVRPT09MWFZSe3p5FBMQiomIS0pFUlFMV1VRMzMwNzYwxcTESUhD8/PzuLi3UVBLVFNO7u7uFxYRcXFvenp4urm5urq5FxYSqamoU1JPh4eFdnZ0RENAfXx5nJuaY2Ngg4J/RkZDf316VFNQlpaUb25qW1tYgoGAsK+tc3JwXV1bYF9b1NPTfn15u7u6nZ2cxsbFqqmnkZGPkI+OxsXFiIeD3d3cx8fGMjErmZmWbWxobm1rdHNvf358hIOBpqWiJyUibGtoKCckubm4vLu6RERAtLOxgoF+k5KR6enpq6uq2NfWWVhVWVhWt7a0SUhFSUlG////pufWsQAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAwTSURBVHja7Jl5XFTXFcfnoSIRQuyggmEEcZDnAkgICEOHQBJIcaaTSSQ2RKRGDEtCSIGGMQme4mQegxoHEFCqsoOAuGCIEZcYidEkxuyLjU33VrqkbdKm6WLXc+5982YB0qyfT//o78PnzV3Oeff7zj333jeD6t//k1L9H+tzYN1wx02vvPLRR/fff/d7r7327rsXLlx47MvQQw8FBDzwwLW/eebNX339zlsXfDzWQd83p0+f3tnZmZGaet3s2bMPHNjyZWjatGlXamsPbz60tXdbT1uIX2BVcWz/5Fj3vd85nWFlpF5CqgN0gytX8A5fvA4fPrr56a29QUdSCpOyKxJVm2J8J8HqmpXR2UlQ92RgqA5sYU90+OjRo5u/BB069PTWJ5HqREESBitq2fyEiIDWCbFuvZRxT6cCdaUWcdCXKSh0cHCwOHQwO2XrF6AnUadO9QZtG+hpY1RjC5EqfnvqRFhTZl+XmpGB0zd79pZptRTiU729QUzFfi8BQNyDcFXRwMDAts+hnuAeuTRwpOdEW0FI0n6iqvRHKvWqO8dj/W3agdnXXbpEgcJkpACTZ8+JEykpIdkLgOuqDYUfFrS1pXxWfXjbvdkFKSltpIKCwtAkv8aKOTFOqpqalnFYj9VuOUBZPq2WFkjQQE9KW0FhYUhIaGhoWR1c9WJp6V2IpWrM9gtOCv2sKlsPRcHBwcVJqOBgv+zGiqq9LK/it+trUMHeWAsOHa6lRYeBOhWEq5YeJdhv//7s7MbG3AXw96iylaXPwIrc0vz8fNVtUXiNCmTXsoX5+aWZgY0bP8DPRNa0vJG0nMqqqsbGRPKJUmElagRgJF8VGBjY2IiXimMItXDTaqLSEJXV9icvrJ9vPbSZcnwrWx2FScH7GwMrKo4dq0JV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]]></data>
	</file>
	<file>
	  <filename>/images/Thumbs.db</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/////v////7///8EAAAABQAAAAYAAAAHAAAACAAAAAkAAAD+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA//////////8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECQrlolEsoBAwAAAEAMAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAgH/////AgAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkQsAAAAAAABDAGEAdABhAGwAbwBnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAP7///8wAAAA/v////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8MAAAAAQAAAIULAAD/2P/gABBKRklGAAEBAQBgAGAAAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/bAEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAGAAYAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP0f8c+PLfQ99jDqNrp04wJ9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]]></data>
	</file>
	<file>
	  <filename>/images/wheel.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/includes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/includes/960.gridder.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIFJlbGVhc2U6IDEuMy4xIDIwMDktMDQtMjYNCiAqLw0KLyoNCiAqIENvcHlyaWdodCAoYykgQW5kcj9lIEhhbnNzb24gKHBlb2xhbmhhIEFUIGdtYWlsIERPVCBjb20pDQogKiBNSVQgTGljZW5zZSAtIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKiBJZGVhIGxvb3NlbHkgYmFzZWQgb24gSkFTSCwgaHR0cDovL2JpbGx5cmVpc2luZ2VyLmNvbS9qYXNoLw0KICoNCiAqIFdlYnNpdGU6IGh0dHA6Ly9ncmlkZGVyLmFuZHJlZWhhbnNzb24uc2UvDQogKg0KICogQ2hhbmdlbG9nOg0KICogLSBOZXcgR1VJISBUaGUgbmV3IEdVSSBzaG91bGQgYmUgbGVzcyBvYnRydXNpdmUgYW5kIGhhcyBiZWVuIHJlcG9zaXRpb25lZC4NCiAqICAgSXQgaXMgYWxzbyBmZWF0dXJpbmcgYSBzbGlnaHQgZGVsYXkgb24gaW5wdXRzIHNvIHRoYXQgeW91J2xsIGhhdmUgYSBjaGFuY2UNCiAqICAgdG8gY2hhbmdlIHRoZSBzZXR0aW5ncyBiZWZvcmUgaXQgaXMgcmUtcmVuZGVyaW5nIHRoZSBncmlkDQogKiAtIER1ZSB0byBhIGxvdCBvZiBpbnF1cmllcyByZWdhcmRpbmcgYWZmaWxpYXRpb24gd2l0aCBqUXVlcnkgdGhlIGZpbGVuYW1lcyBoYXMNCiAqICAgYmVlbiBjaGFuZ2VkLCBJJ20gdmVyeSBzb3JyeSBmb3IgdGhlIGluY29udmVuaWVuY2UhDQogKiAtIENTUyBpc3N1ZXMgd2l0aCB0aGUgR1VJIHNob3VsZCBhbHNvIGJlIGZpeGVkIGluIG1vcmUgd2Vic2l0ZXMsIHBsZWFzZSByZXBvcnQNCiAqICAgaW4gYW55IGlzc3VlIHlvdSBzdHVtYmxlIHVwb24NCiAqIC0gQSBzbWFsbCBidWcgaW4gSUUgdGhhdCBtYWRlIHRoZSBwYXJhZ3JhcGggbGluZXMgbm90IHBvc2l0aW9uIGNvcnJlY3RseSBoYXMgYmVlbg0KICogICBmaXhlZA0KICogLSBBIGRyb3Bkb3duIGJveCBoYXMgcmVwbGFjZWQgdGhlIGNvbHVtbnMgaW5wdXQgYm94LCA5NjAgR3JpZGRlciBjYWxjdWxhdGVzIHRoZQ0KICogICBwcm9wZXIgbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZ3JpZCB3aWR0aA0KICogLSBUaGUgOTYwIEdyaWRkZXIgaXMgbm93IGRpc3BsYXlpbmcgcGVyZmVjdGx5IChpbnRvIHRoZSB2ZXJ5IHBpeGVscykgaW4gYWxsDQogKiAgIEEtZ3JhZGUgYnJvd3NlcnMgKGFjY29yZGluZyB0byBicm93c2Vyc2hvdHMub3JnKQ0KICogLSBBbiBvcHRpb24gdG8gaW52ZXJ0IHRoZSBndXR0ZXJzIGhhcyBiZWVuIGFkZGVkLCBzZXQgdGhpcyB0byAndHJ1ZScgaWYNCiAqICAgeW91IHdhbnQgdG8gdXNlIGl0LCBPUiB1c2UgdGhlIHNob3J0Y3V0IENUUkwrQUxUK0ENCiAqIC0gU29tZSBvdGhlciBtaW5vciBjaGFuZ2VzLi4uDQogKi8NCmZ1bmN0aW9uIEdyaWQoKXt2YXIgYz10aGlzO2Muc2V0dGluZ3NEZWY9e3VybEJhc2U6Imh0dHA6Ly9ncmlkZGVyLmFuZHJlZWhhbnNzb24uc2UvcmVsZWFzZXMvMS4zLjEvIixnQ29sb3I6IiNFRUVFRUUiLGdDb2x1bW5zOjEyLGdPcGFjaXR5OjAuNDUsZ1dpZHRoOjEwLHBDb2xvcjoiI0MwQzBDMCIscEhlaWdodDoxNSxwT2Zmc2V0OjAscE9wYWNpdHk6MC41NSxjZW50ZXI6dHJ1ZSxpbnZlcnQ6ZmFsc2UsZ0VuYWJsZWQ6dHJ1ZSxwRW5hYmxlZDp0cnVlLHNpemU6OTYwLGZpeEZsYXNoOnRydWUsc2V0dXBFbmFibGVkOnRydWUscHJlc3NlZEtleXM6W10sZGVsYXlUaW1lcjoiIn07Yy5zZXR0aW5ncz0odHlwZW9mKHdpbmRvdy5nT3ZlcnJpZGUpPT09InVuZGVmaW5lZCIpP3t9OndpbmRvdy5nT3ZlcnJpZGU7Zm9yKHZhciBhIGluIGMuc2V0dGluZ3NEZWYpe2lmKHR5cGVvZihjLnNldHRpbmdzW2FdKT09PSJ1bmRlZmluZWQiKXtjLnNldHRpbmdzW2FdPWMuc2V0dGluZ3NEZWZbYV07fX1pZih0eXBlb2Yod2luZG93LmpRdWVyeSk9PT0idW5kZWZpbmVkInx8alF1ZXJ5KCkuanF1ZXJ5Lm1hdGNoKC9eMVwuMy8pPT09bnVsbCl7d2luZG93LmpRdWVyeT11bmRlZmluZWQ7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yi50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2Iuc3JjPWMuc2V0dGluZ3MudXJsQmFzZSsianF1ZXJ5LmpzIjtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpO31jLl9jcmVhdGVFbnRpdHk9ZnVuY3Rpb24oZSxkKXtqUXVlcnkoJzxkaXYgY2xhc3M9ImctJytlKyciPiZuYnNwOzwvZGl2PicpLmFwcGVuZFRvKCIjZy1ncmlkIikuY3NzKGQpO307Yy5fc2V0VmFyaWFibGU9ZnVuY3Rpb24oZCxlKXtkPWQucmVwbGFjZSgvZy1zZXR1cC0vLCIiKTtpZihpc05hTihwYXJzZUludChlLDEwKSl8fHBhcnNlSW50KGUsMTApPT09MCl7Yy5zZXR0aW5nc1tkXT1lO31lbHNle2Muc2V0dGluZ3NbZF09cGFyc2VJbnQoZSwxMCk7fWlmKGU9PT10cnVlKXtqUXVlcnkoIiNnLXNldHVwLSIrZCkuYXR0cigiY2hlY2tlZCIsImNoZWNrZWQiKTt9ZWxzZXtpZihlPT09ZmFsc2Upe2pRdWVyeSgiI2ctc2V0dXAtIitkKS5yZW1vdmVBdHRyKCJjaGVja2VkIik7fWVsc2V7alF1ZXJ5KCIjZy1zZXR1cC0iK2QpLnZhbChlKTt9fX07Yy5zZXR1cFdpbmRvdz1mdW5jdGlvbigpe2pRdWVyeSgnPHN0eWxlIHR5cGUidGV4dC9jc3MiPiNnLXNldHVwe3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNTBweDtsZWZ0Oi0zMTBweDtwYWRkaW5nOjZweDttYXJnaW46MDtsaXN0LXN0eWxlOm5vbmU7d2lkdGg6MzIwcHghaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6I2QxY2ZlNjtib3JkZXI6MnB4IHNvbGlkICNhMTliZDE7ei1pbmRleDoyMTAwO30jZy1zZXR1cCAqe2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtjb2xvcjojNTg1MTdjIWltcG9ydGFudDtmb250LWZhbWlseTpWZXJkYW5hLEdlbmV2YSxzYW5zLXNlcmlmIWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEhaW1wb3J0YW50O2xpc3Qtc3R5bGUtdHlwZTpub25lIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7dGV4dC1pbmRlbnQ6MCFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnQ7d29yZC1zcGFjaW5nOjAhaW1wb3J0YW50O3otaW5kZXg6MjEwMCFpbXBvcnRhbnQ7fSNnLXNldHVwIC5oZWFke2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM3Y2IyNjchaW1wb3J0YW50O30jZy1zZXR1cCB1bHt3aWR0aDoxNTBweDtmbG9hdDpsZWZ0IWltcG9ydGFudDt9I2ctc2V0dXAgbGl7Y2xlYXI6bGVmdDtwYWRkaW5nOjVweCFpbXBvcnRhbnQ7fSogaHRtbCAjZy1zZXR1cCBsaXtjbGVhcjpub25lIWltcG9ydGFudDtwYWRkaW5nOjRweCFpbXBvcnRhbnQ7fSNnLXNldHVwIHNwYW57ZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7d2lkdGg6NTBweDtwYWRkaW5nOjFweCA0cHggMCAwIWltcG9ydGFudDt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjUhaW1wb3J0YW50O30jZy1zZXR1cCBpbnB1dCwjZy1zZXR1cCBzZWxlY3R7ZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7d2lkdGg6NzBweDtib3JkZXI6MXB4IHNvbGlkICNhMTliZDEhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6I2U3ZTZlZSFpbXBvcnRhbnQ7cGFkZGluZzoycHghaW1wb3J0YW50O30jZy1zZXR1cCBzZWxlY3R7d2lkdGg6NzdweDtwYWRkaW5nOjAhaW1wb3J0YW50O30jZy1zZXR1cC1taXNje21hcmdpbi10b3A6NXB4IWltcG9ydGFudDtjbGVhcjpsZWZ0O2Zsb2F0Om5vbmUhaW1wb3J0YW50O3dpZHRoOjMwMHB4IWltcG9ydGFudDtib3JkZXItdG9wOjFweCBzb2xpZCAjN2NiMjY3IWltcG9ydGFudDt9I2ctc2V0dXAtbWlzYyBzcGFue2xpbmUtaGVpZ2h0OjEuMSFpbXBvcnRhbnQ7d2lkdGg6MjAwcHg7fSNnLXNldHVwLW1pc2MgaW5wdXR7d2lkdGg6MTVweDtwYWRkaW5nOjAhaW1wb3J0YW50O2hlaWdodDoxNXB4O30jZy1zZXR1cC10YWJ7d2lkdGg6MjZweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDoxMDAlO21hcmdpbi1sZWZ0Oi0yNnB4IWltcG9ydGFudDt6LWluZGV4OjIxMDAhaW1wb3J0YW50O30jZy1zZXR1cC10YWIgaW1ne2xlZnQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt9I2ctZ3JpZHtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo1MDA7dG9wOjA7fSNnLWdyaWQgLmctdmVydGljYWwsI2ctZ3JpZCAuZy1ob3Jpem9udGFse3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDt9KjpmaXJzdC1jaGlsZCtodG1sICNnLWdyaWQgLmctaG9yaXpvbnRhbCwqOmZpcnN0LWNoaWxkK2h0bWwgI2ctZ3JpZCAuZy12ZXJ0aWNhbHttYXJnaW4tbGVmdDotMXB4O30jZy1ncmlkIC5nLWhvcml6b250YWx7bWluLWhlaWdodDoxcHg7aGVpZ2h0OjFweDtmb250LXNpemU6MDtsaW5lLWhlaWdodDowO308L3N0eWxlPicpLmFwcGVuZFRvKCJoZWFkIik7Yy5zZXR0aW5ncy5oZWlnaHQ9alF1ZXJ5KGRvY3VtZW50KS5oZWlnaHQoKTtpZihjLnNldHRpbmdzLnNldHVwRW5hYmxlZCl7alF1ZXJ5KCc8ZGl2IGlkPSJnLXNldHVwIj48dWw+PGxpIGNsYXNzPSJoZWFkIj5WZXJ0aWNhbDwvbGk+PGxpPjxzcGFuPkNvbG9yPC9zcGFuPjxpbnB1dCBpZD0iZy1zZXR1cC1nQ29sb3IiIC8+PC9saT48bGk+PHNwYW4+T3BhY2l0eTwvc3Bhbj48aW5wdXQgaWQ9Imctc2V0dXAtZ09wYWNpdHkiIC8+PC9saT48bGk+PHNwYW4+V2lkdGg8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLWdXaWR0aCIgLz48L2xpPjxsaT48c3Bhbj5Db2x1bW5zPC9zcGFuPjxzZWxlY3QgaWQ9Imctc2V0dXAtZ0NvbHVtbnMiPjwvc2VsZWN0PjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJoZWFkIj5Ib3Jpem9udGFsPC9saT48bGk+PHNwYW4+Q29sb3I8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLXBDb2xvciIgLz48L2xpPjxsaT48c3Bhbj5PcGFjaXR5PC9zcGFuPjxpbnB1dCBpZD0iZy1zZXR1cC1wT3BhY2l0eSIgLz48L2xpPjxsaT48c3Bhbj5IZWlnaHQ8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLXBIZWlnaHQiIC8+PC9saT48bGk+PHNwYW4+T2Zmc2V0PC9zcGFuPjxpbnB1dCBpZD0iZy1zZXR1cC1wT2Zmc2V0IiAvPjwvbGk+PC91bD48dWwgaWQ9Imctc2V0dXAtbWlzYyI+PGxpPjxzcGFuPkVuYWJsZSB2ZXJ0aWNhbCAoZ3V0dGVycyk8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLWdFbmFibGVkIiB0eXBlPSJjaGVja2JveCIgLz48L2xpPjxsaT48c3Bhbj5FbmFibGUgaG9yaXpvbnRhbCAocGFyYWdyYXBocyk8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLXBFbmFibGVkIiB0eXBlPSJjaGVja2JveCIgLz48L2xpPjxsaT48c3Bhbj5JbnZlcnQgdmVydGljYWw8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLWludmVydCIgdHlwZT0iY2hlY2tib3giIC8+PC9saT48bGk+PHNwYW4+Q2VudGVyIGdyaWQ8L3NwYW4+PGlucHV0IGlkPSJnLXNldHVwLWNlbnRlciIgdHlwZT0iY2hlY2tib3giIC8+PC9saT48L3VsPjxkaXYgc3R5bGU9ImNsZWFyOiBsZWZ0OyI+PC9kaXY+PGRpdiBpZD0iZy1zZXR1cC10YWIiPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyI+PGltZyBzcmM9Imh0dHA6Ly9ncmlkZGVyLmFuZHJlZWhhbnNzb24uc2UvcmVsZWFzZXMvMS4zLjEvbG9nby1zcHJpdGUucG5nIiBhbHQ9IiIgLz48L2E+PC9kaXY+PC9kaXY+JykuYXBwZW5kVG8oImJvZHkiKTtmb3IodmFyIGQ9MjtkPDQ4O2QrKyl7aWYoTWF0aC5yb3VuZCgoYy5zZXR0aW5ncy5zaXplL2QpKT09PShjLnNldHRpbmdzLnNpemUvZCkpe2pRdWVyeSgnPG9wdGlvbiB2YWx1ZT0iJytkKyciPicrZCsiPC9vcHRpb24+IikuYXBwZW5kVG8oIiNnLXNldHVwLWdDb2x1bW5zIik7fX1mb3IodmFyIGQgaW4gYy5zZXR0aW5ncyl7aWYoalF1ZXJ5KCIjZy1zZXR1cC0iK2QpLmxlbmd0aCE9PTApe2lmKGpRdWVyeSgiI2ctc2V0dXAtIitkKS5wYXJlbnQoKS5wYXJlbnQoKS5pcygiI2ctc2V0dXAtbWlzYyIpJiZjLnNldHRpbmdzW2RdKXtqUXVlcnkoIiNnLXNldHVwLSIrZCkuYXR0cigiY2hlY2tlZCIsImNoZWNrZWQiKTt9ZWxzZXtqUXVlcnkoIiNnLXNldHVwLSIrZCkudmFsKGMuc2V0dGluZ3NbZF0pO319fWpRdWVyeSgiI2ctc2V0dXAiKS5jc3MoInRvcCIsalF1ZXJ5KHdpbmRvdykuc2Nyb2xsVG9wKCkrMTUwKTtqUXVlcnkoIiNnLXNldHVwLXRhYiBhIikuY2xpY2soZnVuY3Rpb24oKXtjLnRvZ2dsZVNldHVwV2luZG93KCk7fSk7alF1ZXJ5KCIjZy1zZXR1cCBpbnB1dCIpLmtleXVwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztjbGVhclRpbWVvdXQoYy5zZXR0aW5ncy5kZWxheVRpbWVyKTtjLnNldHRpbmdzLmRlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2Muc2V0VmFyaWFibGUoalF1ZXJ5KGUpLmF0dHIoImlkIiksalF1ZXJ5KGUpLnZhbCgpKTt9LDcwMCk7fSk7alF1ZXJ5KCIjZy1zZXR1cC1nQ29sdW1ucyIpLmNoYW5nZShmdW5jdGlvbigpe2Muc2V0VmFyaWFibGUoImdDb2x1bW5zIiwkKHRoaXMpLnZhbCgpKTt9KTtqUXVlcnkoIiNnLXNldHVwLW1pc2MgaW5wdXQiKS5jbGljayhmdW5jdGlvbigpe2Muc2V0VmFyaWFibGUoalF1ZXJ5KHRoaXMpLmF0dHIoImlkIiksalF1ZXJ5KHRoaXMpLmF0dHIoImNoZWNrZWQiKSk7fSk7alF1ZXJ5KCkua2V5ZG93bihmdW5jdGlvbihmKXtpZihqUXVlcnkuaW5BcnJheShmLndoaWNoLGMuc2V0dGluZ3MucHJlc3NlZEtleXMpPT09LTEpe2Muc2V0dGluZ3MucHJlc3NlZEtleXMucHVzaChmLndoaWNoKTt9fSk7alF1ZXJ5KHdpbmRvdykuc2Nyb2xsKGZ1bmN0aW9uKCl7alF1ZXJ5KCIjZy1zZXR1cCIpLmNzcygidG9wIixqUXVlcnkoKS5zY3JvbGxUb3AoKSsxNTApO30pO31qUXVlcnkoKS5rZXl1cChmdW5jdGlvbihnKXtpZihqUXVlcnkuaW5BcnJheSgxNyxjLnNldHRpbmdzLnByZXNzZWRLZXlzKSE9PS0xJiZqUXVlcnkuaW5BcnJheSgxOCxjLnNldHRpbmdzLnByZXNzZWRLZXlzKSE9PS0xKXtpZihqUXVlcnkuaW5BcnJheSg5MCxjLnNldHRpbmdzLnByZXNzZWRLZXlzKSE9PS0xKXtjLnNldFZhcmlhYmxlKCJnRW5hYmxlZCIsIWMuc2V0dGluZ3MuZ0VuYWJsZWQpO31lbHNle2lmKGpRdWVyeS5pbkFycmF5KDg4LGMuc2V0dGluZ3MucHJlc3NlZEtleXMpIT09LTEpe2Muc2V0VmFyaWFibGUoInBFbmFibGVkIiwhYy5zZXR0aW5ncy5wRW5hYmxlZCk7fWVsc2V7aWYoalF1ZXJ5LmluQXJyYXkoNjUsYy5zZXR0aW5ncy5wcmVzc2VkS2V5cykhPT0tMSl7Yy5zZXRWYXJpYWJsZSgiaW52ZXJ0IiwhYy5zZXR0aW5ncy5pbnZlcnQpO31lbHNle2lmKGpRdWVyeS5pbkFycmF5KDY3LGMuc2V0dGluZ3MucHJlc3NlZEtleXMpIT09LTEpe2Muc2V0VmFyaWFibGUoe2dFbmFibGVkOiFjLnNldHRpbmdzLmdFbmFibGVkLHBFbmFibGVkOiFjLnNldHRpbmdzLnBFbmFibGVkfSk7fX19fX12YXIgZj1qUXVlcnkuaW5BcnJheShnLndoaWNoLGMuc2V0dGluZ3MucHJlc3NlZEtleXMpO2Muc2V0dGluZ3MucHJlc3NlZEtleXMuc3BsaWNlKGYsZik7fSk7fTtjLnNldFZhcmlhYmxlPWZ1bmN0aW9uKCl7aWYodHlwZW9mKGFyZ3VtZW50c1swXSk9PT0ib2JqZWN0Iil7Zm9yKHZhciBkIGluIGFyZ3VtZW50c1swXSl7Yy5fc2V0VmFyaWFibGUoZCxhcmd1bWVudHNbMF1bZF0pO319ZWxzZXtjLl9zZXRWYXJpYWJsZShhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTt9Yy5jcmVhdGVHcmlkKCk7fTtjLnRvZ2dsZVNldHVwV2luZG93PWZ1bmN0aW9uKCl7dmFyIGQ9alF1ZXJ5KCIjZy1zZXR1cC10YWIgaW1nIik7ZC5jc3MoImxlZnQiLGQucG9zaXRpb24oKS5sZWZ0PT09MD8tMjY6MCk7aWYocGFyc2VJbnQoalF1ZXJ5KCIjZy1zZXR1cCIpLmNzcygibGVmdCIpLDEwKT09PTApe2pRdWVyeSgiI2ctc2V0dXAiKS5hbmltYXRlKHtsZWZ0Oi0zMTB9LDIwMCk7fWVsc2V7alF1ZXJ5KCIjZy1zZXR1cCIpLmFuaW1hdGUoe2xlZnQ6MH0sMjAwKTt9fTtjLmNyZWF0ZUdyaWQ9ZnVuY3Rpb24oKXtqUXVlcnkoImVtYmVkIikuZWFjaChmdW5jdGlvbigpe2lmKGMuc2V0dGluZ3MuZml4Rmxhc2gpe2pRdWVyeSh0aGlzKS5hdHRyKCJ3bW9kZSIsInRyYW5zcGFyZW50Iik7fWVsc2V7alF1ZXJ5KHRoaXMpLnJlbW92ZUF0dHIoIndtb2RlIik7fXZhciBpPWpRdWVyeSh0aGlzKS53cmFwKCI8ZGl2PjwvZGl2PiIpLnBhcmVudCgpLmh0bWwoKTtqUXVlcnkodGhpcykucGFyZW50KCkucmVwbGFjZVdpdGgoaSk7alF1ZXJ5KHRoaXMpLnJlbW92ZSgpO30pO2pRdWVyeSgiI2ctZ3JpZCIpLnJlbW92ZSgpO2pRdWVyeSgnPGRpdiBpZD0iZy1ncmlkIj48L2Rpdj4nKS5hcHBlbmRUbygiYm9keSIpLmNzcygid2lkdGgiLGMuc2V0dGluZ3Muc2l6ZSk7aWYoYy5zZXR0aW5ncy5jZW50ZXIpe2pRdWVyeSgiI2ctZ3JpZCIpLmNzcyh7bGVmdDoiNTAlIixtYXJnaW5MZWZ0Oi0oKGMuc2V0dGluZ3Muc2l6ZS8yKStjLnNldHRpbmdzLmdXaWR0aCl9KTt9aWYoYy5zZXR0aW5ncy5nRW5hYmxlZCYmYy5zZXR0aW5ncy5nQ29sdW1ucz4wKXtpZihjLnNldHRpbmdzLmludmVydCl7alF1ZXJ5KCkuY3NzKCJvdmVyZmxvdy14IiwiaGlkZGVuIik7dmFyIGU9KGpRdWVyeSh3aW5kb3cpLndpZHRoKCktYy5zZXR0aW5ncy5zaXplKS8yO2MuX2NyZWF0ZUVudGl0eSgidmVydGljYWwiLHtsZWZ0Oi1lLHdpZHRoOmUsaGVpZ2h0OmMuc2V0dGluZ3MuaGVpZ2h0LGJhY2tncm91bmRDb2xvcjpjLnNldHRpbmdzLmdDb2xvcixvcGFjaXR5OmMuc2V0dGluZ3MuZ09wYWNpdHl9KTtmb3IodmFyIGc9MDtnPGMuc2V0dGluZ3MuZ0NvbHVtbnM7ZysrKXt2YXIgZj0oYy5zZXR0aW5ncy5zaXplL2Muc2V0dGluZ3MuZ0NvbHVtbnMpLShjLnNldHRpbmdzLmdXaWR0aCoyKTt2YXIgaD0oYy5zZXR0aW5ncy5nV2lkdGgqMik7Yy5fY3JlYXRlRW50aXR5KCJ2ZXJ0aWNhbCIse2xlZnQ6KChmK2gpKmcpK2gsd2lkdGg6ZisicHgiLGhlaWdodDpjLnNldHRpbmdzLmhlaWdodCxiYWNrZ3JvdW5kQ29sb3I6Yy5zZXR0aW5ncy5nQ29sb3Isb3BhY2l0eTpjLnNldHRpbmdzLmdPcGFjaXR5fSk7fWlmKChjLnNldHRpbmdzLmhlaWdodCsxMCk+alF1ZXJ5KHdpbmRvdykuaGVpZ2h0KCkpe2UtPTEwO31jLl9jcmVhdGVFbnRpdHkoInZlcnRpY2FsIix7bGVmdDoiMTAwJSIsbWFyZ2luTGVmdDoyMCx3aWR0aDplLGhlaWdodDpjLnNldHRpbmdzLmhlaWdodCxiYWNrZ3JvdW5kQ29sb3I6Yy5zZXR0aW5ncy5nQ29sb3Isb3BhY2l0eTpjLnNldHRpbmdzLmdPcGFjaXR5fSk7fWVsc2V7Zm9yKHZhciBnPTA7Zzw9Yy5zZXR0aW5ncy5nQ29sdW1ucztnKyspe2MuX2NyZWF0ZUVudGl0eSgidmVydGljYWwiLHtsZWZ0OigoYy5zZXR0aW5ncy5zaXplL2Muc2V0dGluZ3MuZ0NvbHVtbnMpKmcpLHdpZHRoOihjLnNldHRpbmdzLmdXaWR0aCoyKSxoZWlnaHQ6Yy5zZXR0aW5ncy5oZWlnaHQsYmFja2dyb3VuZENvbG9yOmMuc2V0dGluZ3MuZ0NvbG9yLG9wYWNpdHk6Yy5zZXR0aW5ncy5nT3BhY2l0eX0pO319fWlmKGMuc2V0dGluZ3MucEVuYWJsZWQmJmMuc2V0dGluZ3MucEhlaWdodD4xKXt2YXIgZD0oKGMuc2V0dGluZ3MuaGVpZ2h0LWMuc2V0dGluZ3MucE9mZnNldCkvYy5zZXR0aW5ncy5wSGVpZ2h0KTtmb3IoZz0wO2c8PWQ7ZysrKXtjLl9jcmVhdGVFbnRpdHkoImhvcml6b250YWwiLHt0b3A6KChjLnNldHRpbmdzLmhlaWdodC9kKSpnKStjLnNldHRpbmdzLnBPZmZzZXQsbGVmdDoiNTAlIixtYXJnaW5MZWZ0Oi0oYy5zZXR0aW5ncy5zaXplLzIpLHdpZHRoOihjLnNldHRpbmdzLnNpemUrKGMuc2V0dGluZ3MuZ1dpZHRoKjIpKSxiYWNrZ3JvdW5kQ29sb3I6Yy5zZXR0aW5ncy5wQ29sb3Isb3BhY2l0eTpjLnNldHRpbmdzLnBPcGFjaXR5fSk7fX19O312YXIgY2hlY2tKUXVlcnk9ZnVuY3Rpb24oKXtpZih0eXBlb2Yod2luZG93LmpRdWVyeSk9PT0idW5kZWZpbmVkIil7c2V0VGltZW91dChmdW5jdGlvbigpe2NoZWNrSlF1ZXJ5KCk7fSwxMCk7fWVsc2V7d2luZG93LmdyaWQuc2V0dXBXaW5kb3coKTt3aW5kb3cuZ3JpZC5jcmVhdGVHcmlkKCk7fX07aWYodHlwZW9mKHdpbmRvdy5ncmlkKT09PSJ1bmRlZmluZWQiKXt3aW5kb3cuZ3JpZD1uZXcgR3JpZCgpO2NoZWNrSlF1ZXJ5KCk7fWVsc2V7d2luZG93LmdyaWQudG9nZ2xlU2V0dXBXaW5kb3coKTt9]]></data>
	</file>
	<file>
	  <filename>/includes/farbtastic.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIEZhcmJ0YXN0aWMgQ29sb3IgUGlja2VyIDEuMgogKiDCqSAyMDA4IFN0ZXZlbiBXaXR0ZW5zCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogKi8KCmpRdWVyeS5mbi5mYXJidGFzdGljID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CiAgJC5mYXJidGFzdGljKHRoaXMsIGNhbGxiYWNrKTsKICByZXR1cm4gdGhpczsKfTsKCmpRdWVyeS5mYXJidGFzdGljID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgY2FsbGJhY2spIHsKICB2YXIgY29udGFpbmVyID0gJChjb250YWluZXIpLmdldCgwKTsKICByZXR1cm4gY29udGFpbmVyLmZhcmJ0YXN0aWMgfHwgKGNvbnRhaW5lci5mYXJidGFzdGljID0gbmV3IGpRdWVyeS5fZmFyYnRhc3RpYyhjb250YWluZXIsIGNhbGxiYWNrKSk7Cn0KCmpRdWVyeS5fZmFyYnRhc3RpYyA9IGZ1bmN0aW9uIChjb250YWluZXIsIGNhbGxiYWNrKSB7CiAgLy8gU3RvcmUgZmFyYnRhc3RpYyBvYmplY3QKICB2YXIgZmIgPSB0aGlzOwoKICAvLyBJbnNlcnQgbWFya3VwCiAgJChjb250YWluZXIpLmh0bWwoJzxkaXYgY2xhc3M9ImZhcmJ0YXN0aWMiPjxkaXYgY2xhc3M9ImNvbG9yIj48L2Rpdj48ZGl2IGNsYXNzPSJ3aGVlbCI+PC9kaXY+PGRpdiBjbGFzcz0ib3ZlcmxheSI+PC9kaXY+PGRpdiBjbGFzcz0iaC1tYXJrZXIgbWFya2VyIj48L2Rpdj48ZGl2IGNsYXNzPSJzbC1tYXJrZXIgbWFya2VyIj48L2Rpdj48L2Rpdj4nKTsKICB2YXIgZSA9ICQoJy5mYXJidGFzdGljJywgY29udGFpbmVyKTsKICBmYi53aGVlbCA9ICQoJy53aGVlbCcsIGNvbnRhaW5lcikuZ2V0KDApOwogIC8vIERpbWVuc2lvbnMKICBmYi5yYWRpdXMgPSA4NDsKICBmYi5zcXVhcmUgPSAxMDA7CiAgZmIud2lkdGggPSAxOTQ7CgogIC8vIEZpeCBiYWNrZ3JvdW5kIFBOR3MgaW4gSUU2CiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLm1hdGNoKC9NU0lFIFswLTZdXC4vKSkgewogICAgJCgnKicsIGUpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICBpZiAodGhpcy5jdXJyZW50U3R5bGUuYmFja2dyb3VuZEltYWdlICE9ICdub25lJykgewogICAgICAgIHZhciBpbWFnZSA9IHRoaXMuY3VycmVudFN0eWxlLmJhY2tncm91bmRJbWFnZTsKICAgICAgICBpbWFnZSA9IHRoaXMuY3VycmVudFN0eWxlLmJhY2tncm91bmRJbWFnZS5zdWJzdHJpbmcoNSwgaW1hZ2UubGVuZ3RoIC0gMik7CiAgICAgICAgJCh0aGlzKS5jc3MoewogICAgICAgICAgJ2JhY2tncm91bmRJbWFnZSc6ICdub25lJywKICAgICAgICAgICdmaWx0ZXInOiAicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoZW5hYmxlZD10cnVlLCBzaXppbmdNZXRob2Q9Y3JvcCwgc3JjPSciICsgaW1hZ2UgKyAiJykiCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgLyoqCiAgICogTGluayB0byB0aGUgZ2l2ZW4gZWxlbWVudChzKSBvciBjYWxsYmFjay4KICAgKi8KICBmYi5saW5rVG8gPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIC8vIFVuYmluZCBwcmV2aW91cyBub2RlcwogICAgaWYgKHR5cGVvZiBmYi5jYWxsYmFjayA9PSAnb2JqZWN0JykgewogICAgICAkKGZiLmNhbGxiYWNrKS51bmJpbmQoJ2tleXVwJywgZmIudXBkYXRlVmFsdWUpOwogICAgfQoKICAgIC8vIFJlc2V0IGNvbG9yCiAgICBmYi5jb2xvciA9IG51bGw7CgogICAgLy8gQmluZCBjYWxsYmFjayBvciBlbGVtZW50cwogICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSB7CiAgICAgIGZiLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB9CiAgICBlbHNlIGlmICh0eXBlb2YgY2FsbGJhY2sgPT0gJ29iamVjdCcgfHwgdHlwZW9mIGNhbGxiYWNrID09ICdzdHJpbmcnKSB7CiAgICAgIGZiLmNhbGxiYWNrID0gJChjYWxsYmFjayk7CiAgICAgIGZiLmNhbGxiYWNrLmJpbmQoJ2tleXVwJywgZmIudXBkYXRlVmFsdWUpOwogICAgICBpZiAoZmIuY2FsbGJhY2suZ2V0KDApLnZhbHVlKSB7CiAgICAgICAgZmIuc2V0Q29sb3IoZmIuY2FsbGJhY2suZ2V0KDApLnZhbHVlKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHRoaXM7CiAgfQogIGZiLnVwZGF0ZVZhbHVlID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9IGZiLmNvbG9yKSB7CiAgICAgIGZiLnNldENvbG9yKHRoaXMudmFsdWUpOwogICAgfQogIH0KCiAgLyoqCiAgICogQ2hhbmdlIGNvbG9yIHdpdGggSFRNTCBzeW50YXggIzEyMzQ1NgogICAqLwogIGZiLnNldENvbG9yID0gZnVuY3Rpb24gKGNvbG9yKSB7CiAgICB2YXIgdW5wYWNrID0gZmIudW5wYWNrKGNvbG9yKTsKICAgIGlmIChmYi5jb2xvciAhPSBjb2xvciAmJiB1bnBhY2spIHsKICAgICAgZmIuY29sb3IgPSBjb2xvcjsKICAgICAgZmIucmdiID0gdW5wYWNrOwogICAgICBmYi5oc2wgPSBmYi5SR0JUb0hTTChmYi5yZ2IpOwogICAgICBmYi51cGRhdGVEaXNwbGF5KCk7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIENoYW5nZSBjb2xvciB3aXRoIEhTTCB0cmlwbGV0IFswLi4xLCAwLi4xLCAwLi4xXQogICAqLwogIGZiLnNldEhTTCA9IGZ1bmN0aW9uIChoc2wpIHsKICAgIGZiLmhzbCA9IGhzbDsKICAgIGZiLnJnYiA9IGZiLkhTTFRvUkdCKGhzbCk7CiAgICBmYi5jb2xvciA9IGZiLnBhY2soZmIucmdiKTsKICAgIGZiLnVwZGF0ZURpc3BsYXkoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgLyoqCiAgICogUmV0cmlldmUgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBnaXZlbiBldmVudCByZWxhdGl2ZSB0byB0aGUgY2VudGVyCiAgICogb2YgdGhlIHdpZGdldC4KICAgKi8KICBmYi53aWRnZXRDb29yZHMgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIHZhciB4LCB5OwogICAgdmFyIGVsID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7CiAgICB2YXIgcmVmZXJlbmNlID0gZmIud2hlZWw7CgogICAgaWYgKHR5cGVvZiBldmVudC5vZmZzZXRYICE9ICd1bmRlZmluZWQnKSB7CiAgICAgIC8vIFVzZSBvZmZzZXQgY29vcmRpbmF0ZXMgYW5kIGZpbmQgY29tbW9uIG9mZnNldFBhcmVudAogICAgICB2YXIgcG9zID0geyB4OiBldmVudC5vZmZzZXRYLCB5OiBldmVudC5vZmZzZXRZIH07CgogICAgICAvLyBTZW5kIHRoZSBjb29yZGluYXRlcyB1cHdhcmRzIHRocm91Z2ggdGhlIG9mZnNldFBhcmVudCBjaGFpbi4KICAgICAgdmFyIGUgPSBlbDsKICAgICAgd2hpbGUgKGUpIHsKICAgICAgICBlLm1vdXNlWCA9IHBvcy54OwogICAgICAgIGUubW91c2VZID0gcG9zLnk7CiAgICAgICAgcG9zLnggKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIHBvcy55ICs9IGUub2Zmc2V0VG9wOwogICAgICAgIGUgPSBlLm9mZnNldFBhcmVudDsKICAgICAgfQoKICAgICAgLy8gTG9vayBmb3IgdGhlIGNvb3JkaW5hdGVzIHN0YXJ0aW5nIGZyb20gdGhlIHdoZWVsIHdpZGdldC4KICAgICAgdmFyIGUgPSByZWZlcmVuY2U7CiAgICAgIHZhciBvZmZzZXQgPSB7IHg6IDAsIHk6IDAgfQogICAgICB3aGlsZSAoZSkgewogICAgICAgIGlmICh0eXBlb2YgZS5tb3VzZVggIT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIHggPSBlLm1vdXNlWCAtIG9mZnNldC54OwogICAgICAgICAgeSA9IGUubW91c2VZIC0gb2Zmc2V0Lnk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgb2Zmc2V0LnggKz0gZS5vZmZzZXRMZWZ0OwogICAgICAgIG9mZnNldC55ICs9IGUub2Zmc2V0VG9wOwogICAgICAgIGUgPSBlLm9mZnNldFBhcmVudDsKICAgICAgfQoKICAgICAgLy8gUmVzZXQgc3RvcmVkIGNvb3JkaW5hdGVzCiAgICAgIGUgPSBlbDsKICAgICAgd2hpbGUgKGUpIHsKICAgICAgICBlLm1vdXNlWCA9IHVuZGVmaW5lZDsKICAgICAgICBlLm1vdXNlWSA9IHVuZGVmaW5lZDsKICAgICAgICBlID0gZS5vZmZzZXRQYXJlbnQ7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAvLyBVc2UgYWJzb2x1dGUgY29vcmRpbmF0ZXMKICAgICAgdmFyIHBvcyA9IGZiLmFic29sdXRlUG9zaXRpb24ocmVmZXJlbmNlKTsKICAgICAgeCA9IChldmVudC5wYWdlWCB8fCAwKihldmVudC5jbGllbnRYICsgJCgnaHRtbCcpLmdldCgwKS5zY3JvbGxMZWZ0KSkgLSBwb3MueDsKICAgICAgeSA9IChldmVudC5wYWdlWSB8fCAwKihldmVudC5jbGllbnRZICsgJCgnaHRtbCcpLmdldCgwKS5zY3JvbGxUb3ApKSAtIHBvcy55OwogICAgfQogICAgLy8gU3VidHJhY3QgZGlzdGFuY2UgdG8gbWlkZGxlCiAgICByZXR1cm4geyB4OiB4IC0gZmIud2lkdGggLyAyLCB5OiB5IC0gZmIud2lkdGggLyAyIH07CiAgfQoKICAvKioKICAgKiBNb3VzZWRvd24gaGFuZGxlcgogICAqLwogIGZiLm1vdXNlZG93biA9IGZ1bmN0aW9uIChldmVudCkgewogICAgLy8gQ2FwdHVyZSBtb3VzZQogICAgaWYgKCFkb2N1bWVudC5kcmFnZ2luZykgewogICAgICAkKGRvY3VtZW50KS5iaW5kKCdtb3VzZW1vdmUnLCBmYi5tb3VzZW1vdmUpLmJpbmQoJ21vdXNldXAnLCBmYi5tb3VzZXVwKTsKICAgICAgZG9jdW1lbnQuZHJhZ2dpbmcgPSB0cnVlOwogICAgfQoKICAgIC8vIENoZWNrIHdoaWNoIGFyZWEgaXMgYmVpbmcgZHJhZ2dlZAogICAgdmFyIHBvcyA9IGZiLndpZGdldENvb3JkcyhldmVudCk7CiAgICBmYi5jaXJjbGVEcmFnID0gTWF0aC5tYXgoTWF0aC5hYnMocG9zLngpLCBNYXRoLmFicyhwb3MueSkpICogMiA+IGZiLnNxdWFyZTsKCiAgICAvLyBQcm9jZXNzCiAgICBmYi5tb3VzZW1vdmUoZXZlbnQpOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLyoqCiAgICogTW91c2Vtb3ZlIGhhbmRsZXIKICAgKi8KICBmYi5tb3VzZW1vdmUgPSBmdW5jdGlvbiAoZXZlbnQpIHsKICAgIC8vIEdldCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byBjb2xvciBwaWNrZXIgY2VudGVyCiAgICB2YXIgcG9zID0gZmIud2lkZ2V0Q29vcmRzKGV2ZW50KTsKCiAgICAvLyBTZXQgbmV3IEhTTCBwYXJhbWV0ZXJzCiAgICBpZiAoZmIuY2lyY2xlRHJhZykgewogICAgICB2YXIgaHVlID0gTWF0aC5hdGFuMihwb3MueCwgLXBvcy55KSAvIDYuMjg7CiAgICAgIGlmIChodWUgPCAwKSBodWUgKz0gMTsKICAgICAgZmIuc2V0SFNMKFtodWUsIGZiLmhzbFsxXSwgZmIuaHNsWzJdXSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgdmFyIHNhdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIC0ocG9zLnggLyBmYi5zcXVhcmUpICsgLjUpKTsKICAgICAgdmFyIGx1bSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIC0ocG9zLnkgLyBmYi5zcXVhcmUpICsgLjUpKTsKICAgICAgZmIuc2V0SFNMKFtmYi5oc2xbMF0sIHNhdCwgbHVtXSk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvKioKICAgKiBNb3VzZXVwIGhhbmRsZXIKICAgKi8KICBmYi5tb3VzZXVwID0gZnVuY3Rpb24gKCkgewogICAgLy8gVW5jYXB0dXJlIG1vdXNlCiAgICAkKGRvY3VtZW50KS51bmJpbmQoJ21vdXNlbW92ZScsIGZiLm1vdXNlbW92ZSk7CiAgICAkKGRvY3VtZW50KS51bmJpbmQoJ21vdXNldXAnLCBmYi5tb3VzZXVwKTsKICAgIGRvY3VtZW50LmRyYWdnaW5nID0gZmFsc2U7CiAgfQoKICAvKioKICAgKiBVcGRhdGUgdGhlIG1hcmtlcnMgYW5kIHN0eWxlcwogICAqLwogIGZiLnVwZGF0ZURpc3BsYXkgPSBmdW5jdGlvbiAoKSB7CiAgICAvLyBNYXJrZXJzCiAgICB2YXIgYW5nbGUgPSBmYi5oc2xbMF0gKiA2LjI4OwogICAgJCgnLmgtbWFya2VyJywgZSkuY3NzKHsKICAgICAgbGVmdDogTWF0aC5yb3VuZChNYXRoLnNpbihhbmdsZSkgKiBmYi5yYWRpdXMgKyBmYi53aWR0aCAvIDIpICsgJ3B4JywKICAgICAgdG9wOiBNYXRoLnJvdW5kKC1NYXRoLmNvcyhhbmdsZSkgKiBmYi5yYWRpdXMgKyBmYi53aWR0aCAvIDIpICsgJ3B4JwogICAgfSk7CgogICAgJCgnLnNsLW1hcmtlcicsIGUpLmNzcyh7CiAgICAgIGxlZnQ6IE1hdGgucm91bmQoZmIuc3F1YXJlICogKC41IC0gZmIuaHNsWzFdKSArIGZiLndpZHRoIC8gMikgKyAncHgnLAogICAgICB0b3A6IE1hdGgucm91bmQoZmIuc3F1YXJlICogKC41IC0gZmIuaHNsWzJdKSArIGZiLndpZHRoIC8gMikgKyAncHgnCiAgICB9KTsKCiAgICAvLyBTYXR1cmF0aW9uL0x1bWluYW5jZSBncmFkaWVudAogICAgJCgnLmNvbG9yJywgZSkuY3NzKCdiYWNrZ3JvdW5kQ29sb3InLCBmYi5wYWNrKGZiLkhTTFRvUkdCKFtmYi5oc2xbMF0sIDEsIDAuNV0pKSk7CgogICAgLy8gTGlua2VkIGVsZW1lbnRzIG9yIGNhbGxiYWNrCiAgICBpZiAodHlwZW9mIGZiLmNhbGxiYWNrID09ICdvYmplY3QnKSB7CiAgICAgIC8vIFNldCBiYWNrZ3JvdW5kL2ZvcmVncm91bmQgY29sb3IKICAgICAgJChmYi5jYWxsYmFjaykuY3NzKHsKICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZiLmNvbG9yLAogICAgICAgIGNvbG9yOiBmYi5oc2xbMl0gPiAwLjUgPyAnIzAwMCcgOiAnI2ZmZicKICAgICAgfSk7CgogICAgICAvLyBDaGFuZ2UgbGlua2VkIHZhbHVlCiAgICAgICQoZmIuY2FsbGJhY2spLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPSBmYi5jb2xvcikgewogICAgICAgICAgdGhpcy52YWx1ZSA9IGZiLmNvbG9yOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgICBlbHNlIGlmICh0eXBlb2YgZmIuY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJykgewogICAgICBmYi5jYWxsYmFjay5jYWxsKGZiLCBmYi5jb2xvcik7CiAgICB9CiAgfQoKICAvKioKICAgKiBHZXQgYWJzb2x1dGUgcG9zaXRpb24gb2YgZWxlbWVudAogICAqLwogIGZiLmFic29sdXRlUG9zaXRpb24gPSBmdW5jdGlvbiAoZWwpIHsKICAgIHZhciByID0geyB4OiBlbC5vZmZzZXRMZWZ0LCB5OiBlbC5vZmZzZXRUb3AgfTsKICAgIC8vIFJlc29sdmUgcmVsYXRpdmUgdG8gb2Zmc2V0UGFyZW50CiAgICBpZiAoZWwub2Zmc2V0UGFyZW50KSB7CiAgICAgIHZhciB0bXAgPSBmYi5hYnNvbHV0ZVBvc2l0aW9uKGVsLm9mZnNldFBhcmVudCk7CiAgICAgIHIueCArPSB0bXAueDsKICAgICAgci55ICs9IHRtcC55OwogICAgfQogICAgcmV0dXJuIHI7CiAgfTsKCiAgLyogVmFyaW91cyBjb2xvciB1dGlsaXR5IGZ1bmN0aW9ucyAqLwogIGZiLnBhY2sgPSBmdW5jdGlvbiAocmdiKSB7CiAgICB2YXIgciA9IE1hdGgucm91bmQocmdiWzBdICogMjU1KTsKICAgIHZhciBnID0gTWF0aC5yb3VuZChyZ2JbMV0gKiAyNTUpOwogICAgdmFyIGIgPSBNYXRoLnJvdW5kKHJnYlsyXSAqIDI1NSk7CiAgICByZXR1cm4gJyMnICsgKHIgPCAxNiA/ICcwJyA6ICcnKSArIHIudG9TdHJpbmcoMTYpICsKICAgICAgICAgICAoZyA8IDE2ID8gJzAnIDogJycpICsgZy50b1N0cmluZygxNikgKwogICAgICAgICAgIChiIDwgMTYgPyAnMCcgOiAnJykgKyBiLnRvU3RyaW5nKDE2KTsKICB9CgogIGZiLnVucGFjayA9IGZ1bmN0aW9uIChjb2xvcikgewogICAgaWYgKGNvbG9yLmxlbmd0aCA9PSA3KSB7CiAgICAgIHJldHVybiBbcGFyc2VJbnQoJzB4JyArIGNvbG9yLnN1YnN0cmluZygxLCAzKSkgLyAyNTUsCiAgICAgICAgcGFyc2VJbnQoJzB4JyArIGNvbG9yLnN1YnN0cmluZygzLCA1KSkgLyAyNTUsCiAgICAgICAgcGFyc2VJbnQoJzB4JyArIGNvbG9yLnN1YnN0cmluZyg1LCA3KSkgLyAyNTVdOwogICAgfQogICAgZWxzZSBpZiAoY29sb3IubGVuZ3RoID09IDQpIHsKICAgICAgcmV0dXJuIFtwYXJzZUludCgnMHgnICsgY29sb3Iuc3Vic3RyaW5nKDEsIDIpKSAvIDE1LAogICAgICAgIHBhcnNlSW50KCcweCcgKyBjb2xvci5zdWJzdHJpbmcoMiwgMykpIC8gMTUsCiAgICAgICAgcGFyc2VJbnQoJzB4JyArIGNvbG9yLnN1YnN0cmluZygzLCA0KSkgLyAxNV07CiAgICB9CiAgfQoKICBmYi5IU0xUb1JHQiA9IGZ1bmN0aW9uIChoc2wpIHsKICAgIHZhciBtMSwgbTIsIHIsIGcsIGI7CiAgICB2YXIgaCA9IGhzbFswXSwgcyA9IGhzbFsxXSwgbCA9IGhzbFsyXTsKICAgIG0yID0gKGwgPD0gMC41KSA/IGwgKiAocyArIDEpIDogbCArIHMgLSBsKnM7CiAgICBtMSA9IGwgKiAyIC0gbTI7CiAgICByZXR1cm4gW3RoaXMuaHVlVG9SR0IobTEsIG0yLCBoKzAuMzMzMzMpLAogICAgICAgIHRoaXMuaHVlVG9SR0IobTEsIG0yLCBoKSwKICAgICAgICB0aGlzLmh1ZVRvUkdCKG0xLCBtMiwgaC0wLjMzMzMzKV07CiAgfQoKICBmYi5odWVUb1JHQiA9IGZ1bmN0aW9uIChtMSwgbTIsIGgpIHsKICAgIGggPSAoaCA8IDApID8gaCArIDEgOiAoKGggPiAxKSA/IGggLSAxIDogaCk7CiAgICBpZiAoaCAqIDYgPCAxKSByZXR1cm4gbTEgKyAobTIgLSBtMSkgKiBoICogNjsKICAgIGlmIChoICogMiA8IDEpIHJldHVybiBtMjsKICAgIGlmIChoICogMyA8IDIpIHJldHVybiBtMSArIChtMiAtIG0xKSAqICgwLjY2NjY2IC0gaCkgKiA2OwogICAgcmV0dXJuIG0xOwogIH0KCiAgZmIuUkdCVG9IU0wgPSBmdW5jdGlvbiAocmdiKSB7CiAgICB2YXIgbWluLCBtYXgsIGRlbHRhLCBoLCBzLCBsOwogICAgdmFyIHIgPSByZ2JbMF0sIGcgPSByZ2JbMV0sIGIgPSByZ2JbMl07CiAgICBtaW4gPSBNYXRoLm1pbihyLCBNYXRoLm1pbihnLCBiKSk7CiAgICBtYXggPSBNYXRoLm1heChyLCBNYXRoLm1heChnLCBiKSk7CiAgICBkZWx0YSA9IG1heCAtIG1pbjsKICAgIGwgPSAobWluICsgbWF4KSAvIDI7CiAgICBzID0gMDsKICAgIGlmIChsID4gMCAmJiBsIDwgMSkgewogICAgICBzID0gZGVsdGEgLyAobCA8IDAuNSA/ICgyICogbCkgOiAoMiAtIDIgKiBsKSk7CiAgICB9CiAgICBoID0gMDsKICAgIGlmIChkZWx0YSA+IDApIHsKICAgICAgaWYgKG1heCA9PSByICYmIG1heCAhPSBnKSBoICs9IChnIC0gYikgLyBkZWx0YTsKICAgICAgaWYgKG1heCA9PSBnICYmIG1heCAhPSBiKSBoICs9ICgyICsgKGIgLSByKSAvIGRlbHRhKTsKICAgICAgaWYgKG1heCA9PSBiICYmIG1heCAhPSByKSBoICs9ICg0ICsgKHIgLSBnKSAvIGRlbHRhKTsKICAgICAgaCAvPSA2OwogICAgfQogICAgcmV0dXJuIFtoLCBzLCBsXTsKICB9CgogIC8vIEluc3RhbGwgbW91c2Vkb3duIGhhbmRsZXIgKHRoZSBvdGhlcnMgYXJlIHNldCBvbiB0aGUgZG9jdW1lbnQgb24tZGVtYW5kKQogICQoJyonLCBlKS5tb3VzZWRvd24oZmIubW91c2Vkb3duKTsKCiAgICAvLyBJbml0IGNvbG9yCiAgZmIuc2V0Q29sb3IoJyMwMDAwMDAnKTsKCiAgLy8gU2V0IGxpbmtlZCBlbGVtZW50cy9jYWxsYmFjawogIGlmIChjYWxsYmFjaykgewogICAgZmIubGlua1RvKGNhbGxiYWNrKTsKICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/includes/logo-sprite.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/includes/ME_1.00.00.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8gSmF2YVNjcmlwdCBEb2N1bWVudA0KDQoNCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsNCglpZiAoJCgiI2NvbG9ycGlja2VyIikubGVuZ3RoID4gMCl7JCgnI2NvbG9ycGlja2VyJykuZmFyYnRhc3RpYygiaW5wdXRbbmFtZSo9J2NwcF9oZWFkZXJiYWNrX2NvbG9yJ10iKTt9DQoJaWYgKCQoIiNjcHBfcGF5Zmxvd2NvbG9ycGlja2VyIikubGVuZ3RoID4gMCl7JCgnI2NwcF9wYXlmbG93Y29sb3JwaWNrZXInKS5mYXJidGFzdGljKCJpbnB1dFtuYW1lKj0nY3BwX3BheWZsb3dfY29sb3InXSIpO30NCglpZiAoJCgiI2NwcF9oZWFkZXJib3JkZXJjb2xvcnBpY2tlciIpLmxlbmd0aCA+IDApeyQoJyNjcHBfaGVhZGVyYm9yZGVyY29sb3JwaWNrZXInKS5mYXJidGFzdGljKCJpbnB1dFtuYW1lKj0nY3BwX2hlYWRlcmJvcmRlcl9jb2xvciddIik7fQ0KCSQoIi5leHRlbmRIQU5ETEUiKS5jbGljayhmdW5jdGlvbigpew0KCQlpZigkKHRoaXMpLm5leHQoKS5oYXNDbGFzcygiTmV4dGVuZCIpKXsNCgkJCSQodGhpcykuZmluZCgic3BhbiIpLnRleHQoIlstXSIpOw0KCQkJJCh0aGlzKS5uZXh0KCkucmVtb3ZlQ2xhc3MoIk5leHRlbmQiKTsNCgkJCSQoJy5jb2xvcnBpY2tlcicpLnNsaWRlRG93bigiZmFzdCIpOw0KCQkJJCh0aGlzKS5uZXh0KCkuYWRkQ2xhc3MoImV4dGVuZCIpOw0KCQkJJCgiLlRyYW5zbGFldENvbiIpLnNob3coKTsNCgkJfWVsc2V7DQoJCQkkKHRoaXMpLmZpbmQoInNwYW4iKS50ZXh0KCJbK10iKTsJDQoJCQkkKCcuY29sb3JwaWNrZXInKS5zbGlkZVVwKCJmYXN0Iik7DQoJCQkkKHRoaXMpLm5leHQoKS5hZGRDbGFzcygiTmV4dGVuZCIpOw0KCQkJJCh0aGlzKS5uZXh0KCkucmVtb3ZlQ2xhc3MoImV4dGVuZCIpOw0KCQkJJCgiLlRyYW5zbGFldENvbiIpLmhpZGUoKTsNCgkJfQ0KCX0pOw0KDQoJaWYgKCQoImltZy5zeXN0ZW1pY29uIikubGVuZ3RoID4gMCl7JCgiaW1nLnN5c3RlbWljb24iKS50b29sdGlwKHt0aXA6IiNkZW1vdGlwIixsYXp5OnRydWUscHJlZGVsYXk6NTAsDQoJCQkvLyBjaGFuZ2UgdHJpZ2dlciBvcGFjaXR5IHNsb3dseSB0byAwLjggDQoJCQlvbkJlZm9yZVNob3c6IGZ1bmN0aW9uKCkgeyANCgkJCQkvL3RoaXMuZ2V0VHJpZ2dlcigpLmZhZGVUbygic2xvdyIsIDAuOCk7IA0KCQkJCWlmKCQoIi5wcm9ncmVzcyIpLmxlbmd0aCA9PSAwKXsNCgkJCQkJJCgiI2RlbW90aXAiKS5hcHBlbmQoJzxpbWcgY2xhc3M9InByb2dyZXNzIiBzcmM9Ii4uL21vZHVsZXMvR3JpZGRlci9pbWFnZXMvYWpheC1sb2FkZXIuZ2lmIiBhbHQ9IiIvPicpOw0KCQkJCX0NCgkJCQlwSVM9dGhpcy5nZXRUcmlnZ2VyKCkuYXR0cigicmVsIik7DQoJCQkJVVNFUj10aGlzLmdldFRyaWdnZXIoKS5hdHRyKCJhbHQiKTsNCgkJCQkkKCIjZGVtb3RpcCIpLmxvYWQoIi4uL2FkbWluL21vZHVsZWludGVyZmFjZS5waHA/bWFjdD1HcmlkZGVyLG0xXyxkZXNjcmlwdGlvbiwwJiIrVVNFUisiJnNob3d0ZW1wbGF0ZT1mYWxzZSZtMV9EZXNjcmlwdGlvbj0iK3BJUysiICNESVNDUlAiDQoJCQkJCQkJCSxmdW5jdGlvbigpew0KCQkJCQkJCQkJJCgiLnByb2dyZXNzIikuZmFkZU91dCgic2xvdyIsZnVuY3Rpb24oKXskKCIucHJvZ3Jlc3MiKS5yZW1vdmUoKTt9KTsNCgkJCQkJCQkJfSk7DQoJCQl9LCANCgkJCW9uSGlkZTogZnVuY3Rpb24oKSB7DQoJCQkJJCgiI2RlbW90aXAiKS5lbXB0eSgpLmFwcGVuZCgnPGltZyBjbGFzcz0icHJvZ3Jlc3MiIHNyYz0iLi4vbW9kdWxlcy9HcmlkZGVyL2ltYWdlcy9hamF4LWxvYWRlci5naWYiIGFsdD0iIi8+Jyk7DQoJCQl9DQoJCX0pOw0KCX0NCg0KCSQoInNlbGVjdFtuYW1lJD0nQnRuVHlwZSddIikuY2hhbmdlKGZ1bmN0aW9uKCkgew0KCQl2YXIgVT0kKHRoaXMpLnZhbCgpOyANCgkJaWYoVT09J194Y2xpY2snKXsNCgkJCSQoJy5nMSwuZzIsLmczLC5nNCcpLmZhZGVPdXQoJ3Nsb3cnLCBmdW5jdGlvbigpIHt9KTsNCgkJCSQoJy5nMiBpbnB1dCwuZzMgaW5wdXQsLmc0IGlucHV0LC5nMiBzZWxlY3QsLmczIHNlbGVjdCwuZzQgc2VsZWN0LC5nMiBvcHRpb24sLmczIG9wdGlvbiwuZzQgb3B0aW9uJykubm90KCcuZzEgaW5wdXQsLmcxIHNlbGVjdCwuZzEgb3B0aW9uJykudmFsKCcnKTsNCgkJCSQoJy5nMScpLmZhZGVJbignc2xvdycsIGZ1bmN0aW9uKCkge30pOw0KCQl9DQoJCWlmKFU9PSdfZG9uYXRpb25zJyl7DQoJCQkkKCcuZzEsLmcyLC5nMywuZzQnKS5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJCQkkKCcuZzEgaW5wdXQsLmczIGlucHV0LC5nNCBpbnB1dCwuZzEgc2VsZWN0LC5nMyBzZWxlY3QsLmc0IHNlbGVjdCwuZzEgb3B0aW9uLC5nMyBvcHRpb24sLmc0IG9wdGlvbicpLm5vdCgnLmcyIGlucHV0LC5nMiBzZWxlY3QsLmcyIG9wdGlvbicpLnZhbCgnJyk7DQoJCQkkKCcuZzInKS5mYWRlSW4oJ3Nsb3cnLCBmdW5jdGlvbigpIHt9KTsNCgkJfQ0KCQlpZihVPT0nX3hjbGljay1zdWJzY3JpcHRpb25zJyl7DQoJCQkkKCcuZzEsLmcyLC5nMywuZzQnKS5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJCQkkKCcuZzEgaW5wdXQsLmcyIGlucHV0LC5nNCBpbnB1dCwuZzEgc2VsZWN0LC5nMiBzZWxlY3QsLmc0IHNlbGVjdCwuZzEgb3B0aW9uLC5nMiBvcHRpb24sLmc0IG9wdGlvbicpLm5vdCgnLmczIGlucHV0LC5nMyBzZWxlY3QsLmczIG9wdGlvbicpLnZhbCgnJyk7DQoJCQkkKCcuZzMnKS5mYWRlSW4oJ3Nsb3cnLCBmdW5jdGlvbigpIHt9KTsNCgkJfQ0KCQlpZihVPT0nX29lLWdpZnQtY2VydGlmaWNhdGUnKXsNCgkJCSQoJy5nMSwuZzIsLmczLC5nNCcpLmZhZGVPdXQoJ3Nsb3cnLCBmdW5jdGlvbigpIHt9KTsNCgkJCSQoJy5nMSBpbnB1dCwuZzIgaW5wdXQsLmczIGlucHV0LC5nMSBzZWxlY3QsLmcyIHNlbGVjdCwuZzMgc2VsZWN0LC5nMSBvcHRpb24sLmcyIG9wdGlvbiwuZzMgb3B0aW9uJykubm90KCcuZzQgaW5wdXQsLmc0IHNlbGVjdCwuZzQgb3B0aW9uJykudmFsKCcnKTsNCgkJCSQoJy5nNCcpLmZhZGVJbignc2xvdycsIGZ1bmN0aW9uKCkge30pOw0KCQl9DQoJfSk7DQoNCgl2YXIgVT0kKCJzZWxlY3RbbmFtZSQ9J0J0blR5cGUnXSIpLnZhbCgpOyANCglpZihVPT0nX3hjbGljaycpew0KCQkkKCcuZzEsLmcyLC5nMywuZzQnKS5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJCSQoJy5nMScpLmZhZGVJbignc2xvdycsIGZ1bmN0aW9uKCkge30pOw0KCX0NCglpZihVPT0nX2RvbmF0aW9ucycpew0KCQkkKCcuZzEsLmcyLC5nMywuZzQnKS5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJCSQoJy5nMicpLmZhZGVJbignc2xvdycsIGZ1bmN0aW9uKCkge30pOw0KCX0NCglpZihVPT0nX3hjbGljay1zdWJzY3JpcHRpb25zJyl7DQoJCSQoJy5nMSwuZzIsLmczLC5nNCcpLmZhZGVPdXQoJ3Nsb3cnLCBmdW5jdGlvbigpIHt9KTsNCgkJJCgnLmczJykuZmFkZUluKCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJfQ0KCWlmKFU9PSdfb2UtZ2lmdC1jZXJ0aWZpY2F0ZScpew0KCQkkKCcuZzEsLmcyLC5nMywuZzQnKS5mYWRlT3V0KCdzbG93JywgZnVuY3Rpb24oKSB7fSk7DQoJCSQoJy5nNCcpLmZhZGVJbignc2xvdycsIGZ1bmN0aW9uKCkge30pOw0KCX0NCg0KfSk7CQ0KDQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/includes/MS_1.00.00.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoNCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuMy4yDQogKiBodHRwOi8vanF1ZXJ5LmNvbS8NCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMDkgSm9obiBSZXNpZw0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuDQogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UNCiAqDQogKiBEYXRlOiAyMDA5LTAyLTE5IDE3OjM0OjIxIC0wNTAwIChUaHUsIDE5IEZlYiAyMDA5KQ0KICogUmV2aXNpb246IDYyNDYNCiAqLw0KKGZ1bmN0aW9uKCl7dmFyIGw9dGhpcyxnLHk9bC5qUXVlcnkscD1sLiQsbz1sLmpRdWVyeT1sLiQ9ZnVuY3Rpb24oRSxGKXtyZXR1cm4gbmV3IG8uZm4uaW5pdChFLEYpfSxEPS9eW148XSooPCgufFxzKSs+KVtePl0qJHxeIyhbXHctXSspJC8sZj0vXi5bXjojXFtcLixdKiQvO28uZm49by5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oRSxIKXtFPUV8fGRvY3VtZW50O2lmKEUubm9kZVR5cGUpe3RoaXNbMF09RTt0aGlzLmxlbmd0aD0xO3RoaXMuY29udGV4dD1FO3JldHVybiB0aGlzfWlmKHR5cGVvZiBFPT09InN0cmluZyIpe3ZhciBHPUQuZXhlYyhFKTtpZihHJiYoR1sxXXx8IUgpKXtpZihHWzFdKXtFPW8uY2xlYW4oW0dbMV1dLEgpfWVsc2V7dmFyIEk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoR1szXSk7aWYoSSYmSS5pZCE9R1szXSl7cmV0dXJuIG8oKS5maW5kKEUpfXZhciBGPW8oSXx8W10pO0YuY29udGV4dD1kb2N1bWVudDtGLnNlbGVjdG9yPUU7cmV0dXJuIEZ9fWVsc2V7cmV0dXJuIG8oSCkuZmluZChFKX19ZWxzZXtpZihvLmlzRnVuY3Rpb24oRSkpe3JldHVybiBvKGRvY3VtZW50KS5yZWFkeShFKX19aWYoRS5zZWxlY3RvciYmRS5jb250ZXh0KXt0aGlzLnNlbGVjdG9yPUUuc2VsZWN0b3I7dGhpcy5jb250ZXh0PUUuY29udGV4dH1yZXR1cm4gdGhpcy5zZXRBcnJheShvLmlzQXJyYXkoRSk/RTpvLm1ha2VBcnJheShFKSl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS4zLjIiLHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LGdldDpmdW5jdGlvbihFKXtyZXR1cm4gRT09PWc/QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcyk6dGhpc1tFXX0scHVzaFN0YWNrOmZ1bmN0aW9uKEYsSCxFKXt2YXIgRz1vKEYpO0cucHJldk9iamVjdD10aGlzO0cuY29udGV4dD10aGlzLmNvbnRleHQ7aWYoSD09PSJmaW5kIil7Ry5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrRX1lbHNle2lmKEgpe0cuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrSCsiKCIrRSsiKSJ9fXJldHVybiBHfSxzZXRBcnJheTpmdW5jdGlvbihFKXt0aGlzLmxlbmd0aD0wO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMsRSk7cmV0dXJuIHRoaXN9LGVhY2g6ZnVuY3Rpb24oRixFKXtyZXR1cm4gby5lYWNoKHRoaXMsRixFKX0saW5kZXg6ZnVuY3Rpb24oRSl7cmV0dXJuIG8uaW5BcnJheShFJiZFLmpxdWVyeT9FWzBdOkUsdGhpcyl9LGF0dHI6ZnVuY3Rpb24oRixILEcpe3ZhciBFPUY7aWYodHlwZW9mIEY9PT0ic3RyaW5nIil7aWYoSD09PWcpe3JldHVybiB0aGlzWzBdJiZvW0d8fCJhdHRyIl0odGhpc1swXSxGKX1lbHNle0U9e307RVtGXT1IfX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKEkpe2ZvcihGIGluIEUpe28uYXR0cihHP3RoaXMuc3R5bGU6dGhpcyxGLG8ucHJvcCh0aGlzLEVbRl0sRyxJLEYpKX19KX0sY3NzOmZ1bmN0aW9uKEUsRil7aWYoKEU9PSJ3aWR0aCJ8fEU9PSJoZWlnaHQiKSYmcGFyc2VGbG9hdChGKTwwKXtGPWd9cmV0dXJuIHRoaXMuYXR0cihFLEYsImN1ckNTUyIpfSx0ZXh0OmZ1bmN0aW9uKEYpe2lmKHR5cGVvZiBGIT09Im9iamVjdCImJkYhPW51bGwpe3JldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZShGKSl9dmFyIEU9IiI7by5lYWNoKEZ8fHRoaXMsZnVuY3Rpb24oKXtvLmVhY2godGhpcy5jaGlsZE5vZGVzLGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlVHlwZSE9OCl7RSs9dGhpcy5ub2RlVHlwZSE9MT90aGlzLm5vZGVWYWx1ZTpvLmZuLnRleHQoW3RoaXNdKX19KX0pO3JldHVybiBFfSx3cmFwQWxsOmZ1bmN0aW9uKEUpe2lmKHRoaXNbMF0pe3ZhciBGPW8oRSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmNsb25lKCk7aWYodGhpc1swXS5wYXJlbnROb2RlKXtGLmluc2VydEJlZm9yZSh0aGlzWzBdKX1GLm1hcChmdW5jdGlvbigpe3ZhciBHPXRoaXM7d2hpbGUoRy5maXJzdENoaWxkKXtHPUcuZmlyc3RDaGlsZH1yZXR1cm4gR30pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvKHRoaXMpLmNvbnRlbnRzKCkud3JhcEFsbChFKX0pfSx3cmFwOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvKHRoaXMpLndyYXBBbGwoRSl9KX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRydWUsZnVuY3Rpb24oRSl7aWYodGhpcy5ub2RlVHlwZT09MSl7dGhpcy5hcHBlbmRDaGlsZChFKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuaW5zZXJ0QmVmb3JlKEUsdGhpcy5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKEUpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoRSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcy5uZXh0U2libGluZyl9KX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8byhbXSl9LHB1c2g6W10ucHVzaCxzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZSxmaW5kOmZ1bmN0aW9uKEUpe2lmKHRoaXMubGVuZ3RoPT09MSl7dmFyIEY9dGhpcy5wdXNoU3RhY2soW10sImZpbmQiLEUpO0YubGVuZ3RoPTA7by5maW5kKEUsdGhpc1swXSxGKTtyZXR1cm4gRn1lbHNle3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1hcCh0aGlzLGZ1bmN0aW9uKEcpe3JldHVybiBvLmZpbmQoRSxHKX0pKSwiZmluZCIsRSl9fSxjbG9uZTpmdW5jdGlvbihHKXt2YXIgRT10aGlzLm1hcChmdW5jdGlvbigpe2lmKCFvLnN1cHBvcnQubm9DbG9uZUV2ZW50JiYhby5pc1hNTERvYyh0aGlzKSl7dmFyIEk9dGhpcy5vdXRlckhUTUw7aWYoIUkpe3ZhciBKPXRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtKLmFwcGVuZENoaWxkKHRoaXMuY2xvbmVOb2RlKHRydWUpKTtJPUouaW5uZXJIVE1MfXJldHVybiBvLmNsZWFuKFtJLnJlcGxhY2UoLyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywiIikucmVwbGFjZSgvXlxzKi8sIiIpXSlbMF19ZWxzZXtyZXR1cm4gdGhpcy5jbG9uZU5vZGUodHJ1ZSl9fSk7aWYoRz09PXRydWUpe3ZhciBIPXRoaXMuZmluZCgiKiIpLmFuZFNlbGYoKSxGPTA7RS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVOYW1lIT09SFtGXS5ub2RlTmFtZSl7cmV0dXJufXZhciBJPW8uZGF0YShIW0ZdLCJldmVudHMiKTtmb3IodmFyIEsgaW4gSSl7Zm9yKHZhciBKIGluIElbS10pe28uZXZlbnQuYWRkKHRoaXMsSyxJW0tdW0pdLElbS11bSl0uZGF0YSl9fUYrK30pfXJldHVybiBFfSxmaWx0ZXI6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8uaXNGdW5jdGlvbihFKSYmby5ncmVwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1cm4gRS5jYWxsKEcsRil9KXx8by5tdWx0aUZpbHRlcihFLG8uZ3JlcCh0aGlzLGZ1bmN0aW9uKEYpe3JldHVybiBGLm5vZGVUeXBlPT09MX0pKSwiZmlsdGVyIixFKX0sY2xvc2VzdDpmdW5jdGlvbihFKXt2YXIgRz1vLmV4cHIubWF0Y2guUE9TLnRlc3QoRSk/byhFKTpudWxsLEY9MDtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgSD10aGlzO3doaWxlKEgmJkgub3duZXJEb2N1bWVudCl7aWYoRz9HLmluZGV4KEgpPi0xOm8oSCkuaXMoRSkpe28uZGF0YShILCJjbG9zZXN0IixGKTtyZXR1cm4gSH1IPUgucGFyZW50Tm9kZTtGKyt9fSl9LG5vdDpmdW5jdGlvbihFKXtpZih0eXBlb2YgRT09PSJzdHJpbmciKXtpZihmLnRlc3QoRSkpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLm11bHRpRmlsdGVyKEUsdGhpcyx0cnVlKSwibm90IixFKX1lbHNle0U9by5tdWx0aUZpbHRlcihFLHRoaXMpfX12YXIgRj1FLmxlbmd0aCYmRVtFLmxlbmd0aC0xXSE9PWcmJiFFLm5vZGVUeXBlO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBGP28uaW5BcnJheSh0aGlzLEUpPDA6dGhpcyE9RX0pfSxhZGQ6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8udW5pcXVlKG8ubWVyZ2UodGhpcy5nZXQoKSx0eXBlb2YgRT09PSJzdHJpbmciP28oRSk6by5tYWtlQXJyYXkoRSkpKSl9LGlzOmZ1bmN0aW9uKEUpe3JldHVybiAhIUUmJm8ubXVsdGlGaWx0ZXIoRSx0aGlzKS5sZW5ndGg+MH0saGFzQ2xhc3M6ZnVuY3Rpb24oRSl7cmV0dXJuICEhRSYmdGhpcy5pcygiLiIrRSl9LHZhbDpmdW5jdGlvbihLKXtpZihLPT09Zyl7dmFyIEU9dGhpc1swXTtpZihFKXtpZihvLm5vZGVOYW1lKEUsIm9wdGlvbiIpKXtyZXR1cm4oRS5hdHRyaWJ1dGVzLnZhbHVlfHx7fSkuc3BlY2lmaWVkP0UudmFsdWU6RS50ZXh0fWlmKG8ubm9kZU5hbWUoRSwic2VsZWN0Iikpe3ZhciBJPUUuc2VsZWN0ZWRJbmRleCxMPVtdLE09RS5vcHRpb25zLEg9RS50eXBlPT0ic2VsZWN0LW9uZSI7aWYoSTwwKXtyZXR1cm4gbnVsbH1mb3IodmFyIEY9SD9JOjAsSj1IP0krMTpNLmxlbmd0aDtGPEo7RisrKXt2YXIgRz1NW0ZdO2lmKEcuc2VsZWN0ZWQpe0s9byhHKS52YWwoKTtpZihIKXtyZXR1cm4gS31MLnB1c2goSyl9fXJldHVybiBMfXJldHVybihFLnZhbHVlfHwiIikucmVwbGFjZSgvXHIvZywiIil9cmV0dXJuIGd9aWYodHlwZW9mIEs9PT0ibnVtYmVyIil7Sys9IiJ9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTEpe3JldHVybn1pZihvLmlzQXJyYXkoSykmJi9yYWRpb3xjaGVja2JveC8udGVzdCh0aGlzLnR5cGUpKXt0aGlzLmNoZWNrZWQ9KG8uaW5BcnJheSh0aGlzLnZhbHVlLEspPj0wfHxvLmluQXJyYXkodGhpcy5uYW1lLEspPj0wKX1lbHNle2lmKG8ubm9kZU5hbWUodGhpcywic2VsZWN0Iikpe3ZhciBOPW8ubWFrZUFycmF5KEspO28oIm9wdGlvbiIsdGhpcykuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9KG8uaW5BcnJheSh0aGlzLnZhbHVlLE4pPj0wfHxvLmluQXJyYXkodGhpcy50ZXh0LE4pPj0wKX0pO2lmKCFOLmxlbmd0aCl7dGhpcy5zZWxlY3RlZEluZGV4PS0xfX1lbHNle3RoaXMudmFsdWU9S319fSl9LGh0bWw6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nPyh0aGlzWzBdP3RoaXNbMF0uaW5uZXJIVE1MLnJlcGxhY2UoLyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZywiIik6bnVsbCk6dGhpcy5lbXB0eSgpLmFwcGVuZChFKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMuYWZ0ZXIoRSkucmVtb3ZlKCl9LGVxOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnNsaWNlKEUsK0UrMSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tYXAodGhpcyxmdW5jdGlvbihHLEYpe3JldHVybiBFLmNhbGwoRyxGLEcpfSkpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVjdCl9LGRvbU1hbmlwOmZ1bmN0aW9uKEosTSxMKXtpZih0aGlzWzBdKXt2YXIgST0odGhpc1swXS5vd25lckRvY3VtZW50fHx0aGlzWzBdKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksRj1vLmNsZWFuKEosKHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhpc1swXSksSSksSD1JLmZpcnN0Q2hpbGQ7aWYoSCl7Zm9yKHZhciBHPTAsRT10aGlzLmxlbmd0aDtHPEU7RysrKXtMLmNhbGwoSyh0aGlzW0ddLEgpLHRoaXMubGVuZ3RoPjF8fEc+MD9JLmNsb25lTm9kZSh0cnVlKTpJKX19aWYoRil7by5lYWNoKEYseil9fXJldHVybiB0aGlzO2Z1bmN0aW9uIEsoTixPKXtyZXR1cm4gTSYmby5ub2RlTmFtZShOLCJ0YWJsZSIpJiZvLm5vZGVOYW1lKE8sInRyIik/KE4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fE4uYXBwZW5kQ2hpbGQoTi5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpKTpOfX19O28uZm4uaW5pdC5wcm90b3R5cGU9by5mbjtmdW5jdGlvbiB6KEUsRil7aWYoRi5zcmMpe28uYWpheCh7dXJsOkYuc3JjLGFzeW5jOmZhbHNlLGRhdGFUeXBlOiJzY3JpcHQifSl9ZWxzZXtvLmdsb2JhbEV2YWwoRi50ZXh0fHxGLnRleHRDb250ZW50fHxGLmlubmVySFRNTHx8IiIpfWlmKEYucGFyZW50Tm9kZSl7Ri5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKEYpfX1mdW5jdGlvbiBlKCl7cmV0dXJuICtuZXcgRGF0ZX1vLmV4dGVuZD1vLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBKPWFyZ3VtZW50c1swXXx8e30sSD0xLEk9YXJndW1lbnRzLmxlbmd0aCxFPWZhbHNlLEc7aWYodHlwZW9mIEo9PT0iYm9vbGVhbiIpe0U9SjtKPWFyZ3VtZW50c1sxXXx8e307SD0yfWlmKHR5cGVvZiBKIT09Im9iamVjdCImJiFvLmlzRnVuY3Rpb24oSikpe0o9e319aWYoST09SCl7Sj10aGlzOy0tSH1mb3IoO0g8STtIKyspe2lmKChHPWFyZ3VtZW50c1tIXSkhPW51bGwpe2Zvcih2YXIgRiBpbiBHKXt2YXIgSz1KW0ZdLEw9R1tGXTtpZihKPT09TCl7Y29udGludWV9aWYoRSYmTCYmdHlwZW9mIEw9PT0ib2JqZWN0IiYmIUwubm9kZVR5cGUpe0pbRl09by5leHRlbmQoRSxLfHwoTC5sZW5ndGghPW51bGw/W106e30pLEwpfWVsc2V7aWYoTCE9PWcpe0pbRl09TH19fX19cmV0dXJuIEp9O3ZhciBiPS96LT9pbmRleHxmb250LT93ZWlnaHR8b3BhY2l0eXx6b29tfGxpbmUtP2hlaWdodC9pLHE9ZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHt9LHM9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztvLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihFKXtsLiQ9cDtpZihFKXtsLmpRdWVyeT15fXJldHVybiBvfSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKEUpe3JldHVybiBzLmNhbGwoRSk9PT0iW29iamVjdCBGdW5jdGlvbl0ifSxpc0FycmF5OmZ1bmN0aW9uKEUpe3JldHVybiBzLmNhbGwoRSk9PT0iW29iamVjdCBBcnJheV0ifSxpc1hNTERvYzpmdW5jdGlvbihFKXtyZXR1cm4gRS5ub2RlVHlwZT09PTkmJkUuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIUUub3duZXJEb2N1bWVudCYmby5pc1hNTERvYyhFLm93bmVyRG9jdW1lbnQpfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKEcpe2lmKEcmJi9cUy8udGVzdChHKSl7dmFyIEY9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LEU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7RS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2lmKG8uc3VwcG9ydC5zY3JpcHRFdmFsKXtFLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKEcpKX1lbHNle0UudGV4dD1HfUYuaW5zZXJ0QmVmb3JlKEUsRi5maXJzdENoaWxkKTtGLnJlbW92ZUNoaWxkKEUpfX0sbm9kZU5hbWU6ZnVuY3Rpb24oRixFKXtyZXR1cm4gRi5ub2RlTmFtZSYmRi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT1FLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oRyxLLEYpe3ZhciBFLEg9MCxJPUcubGVuZ3RoO2lmKEYpe2lmKEk9PT1nKXtmb3IoRSBpbiBHKXtpZihLLmFwcGx5KEdbRV0sRik9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcig7SDxJOyl7aWYoSy5hcHBseShHW0grK10sRik9PT1mYWxzZSl7YnJlYWt9fX19ZWxzZXtpZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5jYWxsKEdbRV0sRSxHW0VdKT09PWZhbHNlKXticmVha319fWVsc2V7Zm9yKHZhciBKPUdbMF07SDxJJiZLLmNhbGwoSixILEopIT09ZmFsc2U7Sj1HWysrSF0pe319fXJldHVybiBHfSxwcm9wOmZ1bmN0aW9uKEgsSSxHLEYsRSl7aWYoby5pc0Z1bmN0aW9uKEkpKXtJPUkuY2FsbChILEYpfXJldHVybiB0eXBlb2YgST09PSJudW1iZXIiJiZHPT0iY3VyQ1NTIiYmIWIudGVzdChFKT9JKyJweCI6SX0sY2xhc3NOYW1lOnthZGQ6ZnVuY3Rpb24oRSxGKXtvLmVhY2goKEZ8fCIiKS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oRyxIKXtpZihFLm5vZGVUeXBlPT0xJiYhby5jbGFzc05hbWUuaGFzKEUuY2xhc3NOYW1lLEgpKXtFLmNsYXNzTmFtZSs9KEUuY2xhc3NOYW1lPyIgIjoiIikrSH19KX0scmVtb3ZlOmZ1bmN0aW9uKEUsRil7aWYoRS5ub2RlVHlwZT09MSl7RS5jbGFzc05hbWU9RiE9PWc/by5ncmVwKEUuY2xhc3NOYW1lLnNwbGl0KC9ccysvKSxmdW5jdGlvbihHKXtyZXR1cm4gIW8uY2xhc3NOYW1lLmhhcyhGLEcpfSkuam9pbigiICIpOiIifX0saGFzOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYmJm8uaW5BcnJheShFLChGLmNsYXNzTmFtZXx8RikudG9TdHJpbmcoKS5zcGxpdCgvXHMrLykpPi0xfX0sc3dhcDpmdW5jdGlvbihILEcsSSl7dmFyIEU9e307Zm9yKHZhciBGIGluIEcpe0VbRl09SC5zdHlsZVtGXTtILnN0eWxlW0ZdPUdbRl19SS5jYWxsKEgpO2Zvcih2YXIgRiBpbiBHKXtILnN0eWxlW0ZdPUVbRl19fSxjc3M6ZnVuY3Rpb24oSCxGLEosRSl7aWYoRj09IndpZHRoInx8Rj09ImhlaWdodCIpe3ZhciBMLEc9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LEs9Rj09IndpZHRoIj9bIkxlZnQiLCJSaWdodCJdOlsiVG9wIiwiQm90dG9tIl07ZnVuY3Rpb24gSSgpe0w9Rj09IndpZHRoIj9ILm9mZnNldFdpZHRoOkgub2Zmc2V0SGVpZ2h0O2lmKEU9PT0iYm9yZGVyIil7cmV0dXJufW8uZWFjaChLLGZ1bmN0aW9uKCl7aWYoIUUpe0wtPXBhcnNlRmxvYXQoby5jdXJDU1MoSCwicGFkZGluZyIrdGhpcyx0cnVlKSl8fDB9aWYoRT09PSJtYXJnaW4iKXtMKz1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsIm1hcmdpbiIrdGhpcyx0cnVlKSl8fDB9ZWxzZXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsImJvcmRlciIrdGhpcysiV2lkdGgiLHRydWUpKXx8MH19KX1pZihILm9mZnNldFdpZHRoIT09MCl7SSgpfWVsc2V7by5zd2FwKEgsRyxJKX1yZXR1cm4gTWF0aC5tYXgoMCxNYXRoLnJvdW5kKEwpKX1yZXR1cm4gby5jdXJDU1MoSCxGLEopfSxjdXJDU1M6ZnVuY3Rpb24oSSxGLEcpe3ZhciBMLEU9SS5zdHlsZTtpZihGPT0ib3BhY2l0eSImJiFvLnN1cHBvcnQub3BhY2l0eSl7TD1vLmF0dHIoRSwib3BhY2l0eSIpO3JldHVybiBMPT0iIj8iMSI6TH1pZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj13fWlmKCFHJiZFJiZFW0ZdKXtMPUVbRl19ZWxzZXtpZihxLmdldENvbXB1dGVkU3R5bGUpe2lmKEYubWF0Y2goL2Zsb2F0L2kpKXtGPSJmbG9hdCJ9Rj1GLnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKTt2YXIgTT1xLmdldENvbXB1dGVkU3R5bGUoSSxudWxsKTtpZihNKXtMPU0uZ2V0UHJvcGVydHlWYWx1ZShGKX1pZihGPT0ib3BhY2l0eSImJkw9PSIiKXtMPSIxIn19ZWxzZXtpZihJLmN1cnJlbnRTdHlsZSl7dmFyIEo9Ri5yZXBsYWNlKC9cLShcdykvZyxmdW5jdGlvbihOLE8pe3JldHVybiBPLnRvVXBwZXJDYXNlKCl9KTtMPUkuY3VycmVudFN0eWxlW0ZdfHxJLmN1cnJlbnRTdHlsZVtKXTtpZighL15cZCsocHgpPyQvaS50ZXN0KEwpJiYvXlxkLy50ZXN0KEwpKXt2YXIgSD1FLmxlZnQsSz1JLnJ1bnRpbWVTdHlsZS5sZWZ0O0kucnVudGltZVN0eWxlLmxlZnQ9SS5jdXJyZW50U3R5bGUubGVmdDtFLmxlZnQ9THx8MDtMPUUucGl4ZWxMZWZ0KyJweCI7RS5sZWZ0PUg7SS5ydW50aW1lU3R5bGUubGVmdD1LfX19fXJldHVybiBMfSxjbGVhbjpmdW5jdGlvbihGLEssSSl7Sz1LfHxkb2N1bWVudDtpZih0eXBlb2YgSy5jcmVhdGVFbGVtZW50PT09InVuZGVmaW5lZCIpe0s9Sy5vd25lckRvY3VtZW50fHxLWzBdJiZLWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWlmKCFJJiZGLmxlbmd0aD09PTEmJnR5cGVvZiBGWzBdPT09InN0cmluZyIpe3ZhciBIPS9ePChcdyspXHMqXC8/PiQvLmV4ZWMoRlswXSk7aWYoSCl7cmV0dXJuW0suY3JlYXRlRWxlbWVudChIWzFdKV19fXZhciBHPVtdLEU9W10sTD1LLmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uZWFjaChGLGZ1bmN0aW9uKFAsUyl7aWYodHlwZW9mIFM9PT0ibnVtYmVyIil7Uys9IiJ9aWYoIVMpe3JldHVybn1pZih0eXBlb2YgUz09PSJzdHJpbmciKXtTPVMucmVwbGFjZSgvKDwoXHcrKVtePl0qPylcLz4vZyxmdW5jdGlvbihVLFYsVCl7cmV0dXJuIFQubWF0Y2goL14oYWJicnxicnxjb2x8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbXxocnxhcmVhfGVtYmVkKSQvaSk/VTpWKyI+PC8iK1QrIj4ifSk7dmFyIE89Uy5yZXBsYWNlKC9eXHMrLywiIikuc3Vic3RyaW5nKDAsMTApLnRvTG93ZXJDYXNlKCk7dmFyIFE9IU8uaW5kZXhPZigiPG9wdCIpJiZbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdfHwhTy5pbmRleE9mKCI8bGVnIikmJlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXXx8Ty5tYXRjaCgvXjwodGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3xjYXApLykmJlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXXx8IU8uaW5kZXhPZigiPHRyIikmJlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXXx8KCFPLmluZGV4T2YoIjx0ZCIpfHwhTy5pbmRleE9mKCI8dGgiKSkmJlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXXx8IU8uaW5kZXhPZigiPGNvbCIpJiZbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il18fCFvLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSYmWzEsImRpdjxkaXY+IiwiPC9kaXY+Il18fFswLCIiLCIiXTtMLmlubmVySFRNTD1RWzFdK1MrUVsyXTt3aGlsZShRWzBdLS0pe0w9TC5sYXN0Q2hpbGR9aWYoIW8uc3VwcG9ydC50Ym9keSl7dmFyIFI9Lzx0Ym9keS9pLnRlc3QoUyksTj0hTy5pbmRleE9mKCI8dGFibGUiKSYmIVI/TC5maXJzdENoaWxkJiZMLmZpcnN0Q2hpbGQuY2hpbGROb2RlczpRWzFdPT0iPHRhYmxlPiImJiFSP0wuY2hpbGROb2RlczpbXTtmb3IodmFyIE09Ti5sZW5ndGgtMTtNPj0wOy0tTSl7aWYoby5ub2RlTmFtZShOW01dLCJ0Ym9keSIpJiYhTltNXS5jaGlsZE5vZGVzLmxlbmd0aCl7TltNXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKE5bTV0pfX19aWYoIW8uc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmL15ccy8udGVzdChTKSl7TC5pbnNlcnRCZWZvcmUoSy5jcmVhdGVUZXh0Tm9kZShTLm1hdGNoKC9eXHMqLylbMF0pLEwuZmlyc3RDaGlsZCl9Uz1vLm1ha2VBcnJheShMLmNoaWxkTm9kZXMpfWlmKFMubm9kZVR5cGUpe0cucHVzaChTKX1lbHNle0c9by5tZXJnZShHLFMpfX0pO2lmKEkpe2Zvcih2YXIgSj0wO0dbSl07SisrKXtpZihvLm5vZGVOYW1lKEdbSl0sInNjcmlwdCIpJiYoIUdbSl0udHlwZXx8R1tKXS50eXBlLnRvTG93ZXJDYXNlKCk9PT0idGV4dC9qYXZhc2NyaXB0Iikpe0UucHVzaChHW0pdLnBhcmVudE5vZGU/R1tKXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKEdbSl0pOkdbSl0pfWVsc2V7aWYoR1tKXS5ub2RlVHlwZT09PTEpe0cuc3BsaWNlLmFwcGx5KEcsW0orMSwwXS5jb25jYXQoby5tYWtlQXJyYXkoR1tKXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSl9SS5hcHBlbmRDaGlsZChHW0pdKX19cmV0dXJuIEV9cmV0dXJuIEd9LGF0dHI6ZnVuY3Rpb24oSixHLEspe2lmKCFKfHxKLm5vZGVUeXBlPT0zfHxKLm5vZGVUeXBlPT04KXtyZXR1cm4gZ312YXIgSD0hby5pc1hNTERvYyhKKSxMPUshPT1nO0c9SCYmby5wcm9wc1tHXXx8RztpZihKLnRhZ05hbWUpe3ZhciBGPS9ocmVmfHNyY3xzdHlsZS8udGVzdChHKTtpZihHPT0ic2VsZWN0ZWQiJiZKLnBhcmVudE5vZGUpe0oucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4fWlmKEcgaW4gSiYmSCYmIUYpe2lmKEwpe2lmKEc9PSJ0eXBlIiYmby5ub2RlTmFtZShKLCJpbnB1dCIpJiZKLnBhcmVudE5vZGUpe3Rocm93InR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCJ9SltHXT1LfWlmKG8ubm9kZU5hbWUoSiwiZm9ybSIpJiZKLmdldEF0dHJpYnV0ZU5vZGUoRykpe3JldHVybiBKLmdldEF0dHJpYnV0ZU5vZGUoRykubm9kZVZhbHVlfWlmKEc9PSJ0YWJJbmRleCIpe3ZhciBJPUouZ2V0QXR0cmlidXRlTm9kZSgidGFiSW5kZXgiKTtyZXR1cm4gSSYmSS5zcGVjaWZpZWQ/SS52YWx1ZTpKLm5vZGVOYW1lLm1hdGNoKC8oYnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8dGV4dGFyZWEpL2kpPzA6Si5ub2RlTmFtZS5tYXRjaCgvXihhfGFyZWEpJC9pKSYmSi5ocmVmPzA6Z31yZXR1cm4gSltHXX1pZighby5zdXBwb3J0LnN0eWxlJiZIJiZHPT0ic3R5bGUiKXtyZXR1cm4gby5hdHRyKEouc3R5bGUsImNzc1RleHQiLEspfWlmKEwpe0ouc2V0QXR0cmlidXRlKEcsIiIrSyl9dmFyIEU9IW8uc3VwcG9ydC5ocmVmTm9ybWFsaXplZCYmSCYmRj9KLmdldEF0dHJpYnV0ZShHLDIpOkouZ2V0QXR0cmlidXRlKEcpO3JldHVybiBFPT09bnVsbD9nOkV9aWYoIW8uc3VwcG9ydC5vcGFjaXR5JiZHPT0ib3BhY2l0eSIpe2lmKEwpe0ouem9vbT0xO0ouZmlsdGVyPShKLmZpbHRlcnx8IiIpLnJlcGxhY2UoL2FscGhhXChbXildKlwpLywiIikrKHBhcnNlSW50KEspKyIiPT0iTmFOIj8iIjoiYWxwaGEob3BhY2l0eT0iK0sqMTAwKyIpIil9cmV0dXJuIEouZmlsdGVyJiZKLmZpbHRlci5pbmRleE9mKCJvcGFjaXR5PSIpPj0wPyhwYXJzZUZsb2F0KEouZmlsdGVyLm1hdGNoKC9vcGFjaXR5PShbXildKikvKVsxXSkvMTAwKSsiIjoiIn1HPUcucmVwbGFjZSgvLShbYS16XSkvaWcsZnVuY3Rpb24oTSxOKXtyZXR1cm4gTi50b1VwcGVyQ2FzZSgpfSk7aWYoTCl7SltHXT1LfXJldHVybiBKW0ddfSx0cmltOmZ1bmN0aW9uKEUpe3JldHVybihFfHwiIikucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oRyl7dmFyIEU9W107aWYoRyE9bnVsbCl7dmFyIEY9Ry5sZW5ndGg7aWYoRj09bnVsbHx8dHlwZW9mIEc9PT0ic3RyaW5nInx8by5pc0Z1bmN0aW9uKEcpfHxHLnNldEludGVydmFsKXtFWzBdPUd9ZWxzZXt3aGlsZShGKXtFWy0tRl09R1tGXX19fXJldHVybiBFfSxpbkFycmF5OmZ1bmN0aW9uKEcsSCl7Zm9yKHZhciBFPTAsRj1ILmxlbmd0aDtFPEY7RSsrKXtpZihIW0VdPT09Ryl7cmV0dXJuIEV9fXJldHVybiAtMX0sbWVyZ2U6ZnVuY3Rpb24oSCxFKXt2YXIgRj0wLEcsST1ILmxlbmd0aDtpZighby5zdXBwb3J0LmdldEFsbCl7d2hpbGUoKEc9RVtGKytdKSE9bnVsbCl7aWYoRy5ub2RlVHlwZSE9OCl7SFtJKytdPUd9fX1lbHNle3doaWxlKChHPUVbRisrXSkhPW51bGwpe0hbSSsrXT1HfX1yZXR1cm4gSH0sdW5pcXVlOmZ1bmN0aW9uKEspe3ZhciBGPVtdLEU9e307dHJ5e2Zvcih2YXIgRz0wLEg9Sy5sZW5ndGg7RzxIO0crKyl7dmFyIEo9by5kYXRhKEtbR10pO2lmKCFFW0pdKXtFW0pdPXRydWU7Ri5wdXNoKEtbR10pfX19Y2F0Y2goSSl7Rj1LfXJldHVybiBGfSxncmVwOmZ1bmN0aW9uKEYsSixFKXt2YXIgRz1bXTtmb3IodmFyIEg9MCxJPUYubGVuZ3RoO0g8STtIKyspe2lmKCFFIT0hSihGW0hdLEgpKXtHLnB1c2goRltIXSl9fXJldHVybiBHfSxtYXA6ZnVuY3Rpb24oRSxKKXt2YXIgRj1bXTtmb3IodmFyIEc9MCxIPUUubGVuZ3RoO0c8SDtHKyspe3ZhciBJPUooRVtHXSxHKTtpZihJIT1udWxsKXtGW0YubGVuZ3RoXT1JfX1yZXR1cm4gRi5jb25jYXQuYXBwbHkoW10sRil9fSk7dmFyIEM9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO28uYnJvd3Nlcj17dmVyc2lvbjooQy5tYXRjaCgvLisoPzpydnxpdHxyYXxpZSlbXC86IF0oW1xkLl0rKS8pfHxbMCwiMCJdKVsxXSxzYWZhcmk6L3dlYmtpdC8udGVzdChDKSxvcGVyYTovb3BlcmEvLnRlc3QoQyksbXNpZTovbXNpZS8udGVzdChDKSYmIS9vcGVyYS8udGVzdChDKSxtb3ppbGxhOi9tb3ppbGxhLy50ZXN0KEMpJiYhLyhjb21wYXRpYmxlfHdlYmtpdCkvLnRlc3QoQyl9O28uZWFjaCh7cGFyZW50OmZ1bmN0aW9uKEUpe3JldHVybiBFLnBhcmVudE5vZGV9LHBhcmVudHM6ZnVuY3Rpb24oRSl7cmV0dXJuIG8uZGlyKEUsInBhcmVudE5vZGUiKX0sbmV4dDpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKEUpe3JldHVybiBvLm50aChFLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwcmV2aW91c1NpYmxpbmciKX0sc2libGluZ3M6ZnVuY3Rpb24oRSl7cmV0dXJuIG8uc2libGluZyhFLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxFKX0sY2hpbGRyZW46ZnVuY3Rpb24oRSl7cmV0dXJuIG8uc2libGluZyhFLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihFKXtyZXR1cm4gby5ub2RlTmFtZShFLCJpZnJhbWUiKT9FLmNvbnRlbnREb2N1bWVudHx8RS5jb250ZW50V2luZG93LmRvY3VtZW50Om8ubWFrZUFycmF5KEUuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEg9by5tYXAodGhpcyxGKTtpZihHJiZ0eXBlb2YgRz09InN0cmluZyIpe0g9by5tdWx0aUZpbHRlcihHLEgpfXJldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShIKSxFLEcpfX0pO28uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKEUsRil7by5mbltFXT1mdW5jdGlvbihHKXt2YXIgSj1bXSxMPW8oRyk7Zm9yKHZhciBLPTAsSD1MLmxlbmd0aDtLPEg7SysrKXt2YXIgST0oSz4wP3RoaXMuY2xvbmUodHJ1ZSk6dGhpcykuZ2V0KCk7by5mbltGXS5hcHBseShvKExbS10pLEkpO0o9Si5jb25jYXQoSSl9cmV0dXJuIHRoaXMucHVzaFN0YWNrKEosRSxHKX19KTtvLmVhY2goe3JlbW92ZUF0dHI6ZnVuY3Rpb24oRSl7by5hdHRyKHRoaXMsRSwiIik7aWYodGhpcy5ub2RlVHlwZT09MSl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoRSl9fSxhZGRDbGFzczpmdW5jdGlvbihFKXtvLmNsYXNzTmFtZS5hZGQodGhpcyxFKX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oRSl7by5jbGFzc05hbWUucmVtb3ZlKHRoaXMsRSl9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKEYsRSl7aWYodHlwZW9mIEUhPT0iYm9vbGVhbiIpe0U9IW8uY2xhc3NOYW1lLmhhcyh0aGlzLEYpfW8uY2xhc3NOYW1lW0U/ImFkZCI6InJlbW92ZSJdKHRoaXMsRil9LHJlbW92ZTpmdW5jdGlvbihFKXtpZighRXx8by5maWx0ZXIoRSxbdGhpc10pLmxlbmd0aCl7bygiKiIsdGhpcykuYWRkKFt0aGlzXSkuZWFjaChmdW5jdGlvbigpe28uZXZlbnQucmVtb3ZlKHRoaXMpO28ucmVtb3ZlRGF0YSh0aGlzKX0pO2lmKHRoaXMucGFyZW50Tm9kZSl7dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpfX19LGVtcHR5OmZ1bmN0aW9uKCl7byh0aGlzKS5jaGlsZHJlbigpLnJlbW92ZSgpO3doaWxlKHRoaXMuZmlyc3RDaGlsZCl7dGhpcy5yZW1vdmVDaGlsZCh0aGlzLmZpcnN0Q2hpbGQpfX19LGZ1bmN0aW9uKEUsRil7by5mbltFXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goRixhcmd1bWVudHMpfX0pO2Z1bmN0aW9uIGooRSxGKXtyZXR1cm4gRVswXSYmcGFyc2VJbnQoby5jdXJDU1MoRVswXSxGLHRydWUpLDEwKXx8MH12YXIgaD0ialF1ZXJ5IitlKCksdj0wLEE9e307by5leHRlbmQoe2NhY2hlOnt9LGRhdGE6ZnVuY3Rpb24oRixFLEcpe0Y9Rj09bD9BOkY7dmFyIEg9RltoXTtpZighSCl7SD1GW2hdPSsrdn1pZihFJiYhby5jYWNoZVtIXSl7by5jYWNoZVtIXT17fX1pZihHIT09Zyl7by5jYWNoZVtIXVtFXT1HfXJldHVybiBFP28uY2FjaGVbSF1bRV06SH0scmVtb3ZlRGF0YTpmdW5jdGlvbihGLEUpe0Y9Rj09bD9BOkY7dmFyIEg9RltoXTtpZihFKXtpZihvLmNhY2hlW0hdKXtkZWxldGUgby5jYWNoZVtIXVtFXTtFPSIiO2ZvcihFIGluIG8uY2FjaGVbSF0pe2JyZWFrfWlmKCFFKXtvLnJlbW92ZURhdGEoRil9fX1lbHNle3RyeXtkZWxldGUgRltoXX1jYXRjaChHKXtpZihGLnJlbW92ZUF0dHJpYnV0ZSl7Ri5yZW1vdmVBdHRyaWJ1dGUoaCl9fWRlbGV0ZSBvLmNhY2hlW0hdfX0scXVldWU6ZnVuY3Rpb24oRixFLEgpe2lmKEYpe0U9KEV8fCJmeCIpKyJxdWV1ZSI7dmFyIEc9by5kYXRhKEYsRSk7aWYoIUd8fG8uaXNBcnJheShIKSl7Rz1vLmRhdGEoRixFLG8ubWFrZUFycmF5KEgpKX1lbHNle2lmKEgpe0cucHVzaChIKX19fXJldHVybiBHfSxkZXF1ZXVlOmZ1bmN0aW9uKEgsRyl7dmFyIEU9by5xdWV1ZShILEcpLEY9RS5zaGlmdCgpO2lmKCFHfHxHPT09ImZ4Iil7Rj1FWzBdfWlmKEYhPT1nKXtGLmNhbGwoSCl9fX0pO28uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKEUsRyl7dmFyIEg9RS5zcGxpdCgiLiIpO0hbMV09SFsxXT8iLiIrSFsxXToiIjtpZihHPT09Zyl7dmFyIEY9dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIrSFsxXSsiISIsW0hbMF1dKTtpZihGPT09ZyYmdGhpcy5sZW5ndGgpe0Y9by5kYXRhKHRoaXNbMF0sRSl9cmV0dXJuIEY9PT1nJiZIWzFdP3RoaXMuZGF0YShIWzBdKTpGfWVsc2V7cmV0dXJuIHRoaXMudHJpZ2dlcigic2V0RGF0YSIrSFsxXSsiISIsW0hbMF0sR10pLmVhY2goZnVuY3Rpb24oKXtvLmRhdGEodGhpcyxFLEcpfSl9fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLnJlbW92ZURhdGEodGhpcyxFKX0pfSxxdWV1ZTpmdW5jdGlvbihFLEYpe2lmKHR5cGVvZiBFIT09InN0cmluZyIpe0Y9RTtFPSJmeCJ9aWYoRj09PWcpe3JldHVybiBvLnF1ZXVlKHRoaXNbMF0sRSl9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBHPW8ucXVldWUodGhpcyxFLEYpO2lmKEU9PSJmeCImJkcubGVuZ3RoPT0xKXtHWzBdLmNhbGwodGhpcyl9fSl9LGRlcXVldWU6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe28uZGVxdWV1ZSh0aGlzLEUpfSl9fSk7DQovKg0KICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgLSB2MC45LjMNCiAqICBDb3B5cmlnaHQgMjAwOSwgVGhlIERvam8gRm91bmRhdGlvbg0KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4NCiAqICBNb3JlIGluZm9ybWF0aW9uOiBodHRwOi8vc2l6emxlanMuY29tLw0KICovDQooZnVuY3Rpb24oKXt2YXIgUj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVuY3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtpZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZighWil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIsYWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYoKFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixVLGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRjaCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJlbnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwrKyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3ZhciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5nIixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3IodmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcsVSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBWPTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJLmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtYWzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxWLFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxzZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2guYXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVzdChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2FibGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oVCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJwYXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3VibWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxULm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rpb24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXtyZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1XLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVxOmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFdLFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUucHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGlsZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYoVj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnROb2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIgWD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFyIGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3JldHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVybiBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhVLmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJIYW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdldEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVsbD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1mYWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9aPT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lmKFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxbXTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhbVl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1yZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJhbmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVjdE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xsYXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhWil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZXLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106ZzpbXX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9yKHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2goWFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJldHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVyO0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgpfWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24oKXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixXKXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVUeXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVOYW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhVLFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIpe2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0pLmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUpfTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVudCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxULm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdodD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3JldHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVsZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUpe1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1YW1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlvbihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlmdCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05dO2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05dLnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQuc3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8pPT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3RlbmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihLLEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlvbihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdFeHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtmb3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNwZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2JyZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNpYWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZlbnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhhbmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZlbnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdbT119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywiaGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJvYmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5leGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlzLmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4iKTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFyIEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYoSFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRoaXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltKXX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVudE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxhdGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50OkguZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gucGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVmdHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkkuc2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1pZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFyQ29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1pZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYoIUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlkKys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUsRil7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihHKXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwxKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5jdGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gdSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVsdCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5jdGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1vdXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRoaXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5ldmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUsRix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5sYXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFkeUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3ZhciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhkb2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixFKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtvLmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEksSil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3QoSi5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29ydChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtpZih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNlKXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3JldHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2csInwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24oKXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtmdW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxsZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVybn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1vLnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5lYWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3VibWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJpbmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVbRV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVtKX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxlZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5zdHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsdGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9hZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0ucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00ucmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2VhcmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJfX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykpe0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUsRil7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWpheFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGdsb2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8uZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygmfCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnByb2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBhcmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIpe2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5kYXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYiOiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNvbiJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2goRil8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00uZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtXXT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1ddfWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlwZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5jYWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUrKChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToiIil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFjdGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0ic2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtULm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihKJiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRhdGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixSKX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0osTV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZlbnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMwMCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYmRi5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNlVGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJyb3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcuZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJzY3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwiXSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkpe28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5pc0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYiKS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlvbiB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1hdGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5ndGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0ddKXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEspfX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rpb24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpmdW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixILEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlwZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtpZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNvbXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYmdGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5kKHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVycztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtpZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRlcXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4gdGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oRyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZIfHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3BlZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNvbXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXtyZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZsb2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0xMDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5sZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxlbmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lmKEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRydWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRoaXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5vcHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5nIjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChvLmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHlsZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnByb3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3RvcDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRvY3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRvcHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVybnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXplZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRNTD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGlsZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRvcD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlzLmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9mZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUpJiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJlbnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8obCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/IkxlZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgpO28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFsc2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2FzZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhpc1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNldCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhKLHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTsNCg0KLyoNCiAqIGpRdWVyeSB2YWxpZGF0aW9uIHBsdWctaW4gMS41LjENCiAqDQogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi12YWxpZGF0aW9uLw0KICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9QbHVnaW5zL1ZhbGlkYXRpb24NCiAqDQogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDA4IEr2cm4gWmFlZmZlcmVyDQogKg0KICogJElkOiBqcXVlcnkudmFsaWRhdGUuanMgNjA5NiAyMDA5LTAxLTEyIDE0OjEyOjA0WiBqb2Vybi56YWVmZmVyZXIgJA0KICoNCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOg0KICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocA0KICogICBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwNCiAqLw0KKGZ1bmN0aW9uKCQpeyQuZXh0ZW5kKCQuZm4se3ZhbGlkYXRlOmZ1bmN0aW9uKG9wdGlvbnMpe2lmKCF0aGlzLmxlbmd0aCl7b3B0aW9ucyYmb3B0aW9ucy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2Fybigibm90aGluZyBzZWxlY3RlZCwgY2FuJ3QgdmFsaWRhdGUsIHJldHVybmluZyBub3RoaW5nIik7cmV0dXJuO312YXIgdmFsaWRhdG9yPSQuZGF0YSh0aGlzWzBdLCd2YWxpZGF0b3InKTtpZih2YWxpZGF0b3Ipe3JldHVybiB2YWxpZGF0b3I7fXZhbGlkYXRvcj1uZXcgJC52YWxpZGF0b3Iob3B0aW9ucyx0aGlzWzBdKTskLmRhdGEodGhpc1swXSwndmFsaWRhdG9yJyx2YWxpZGF0b3IpO2lmKHZhbGlkYXRvci5zZXR0aW5ncy5vbnN1Ym1pdCl7dGhpcy5maW5kKCJpbnB1dCwgYnV0dG9uIikuZmlsdGVyKCIuY2FuY2VsIikuY2xpY2soZnVuY3Rpb24oKXt2YWxpZGF0b3IuY2FuY2VsU3VibWl0PXRydWU7fSk7dGhpcy5zdWJtaXQoZnVuY3Rpb24oZXZlbnQpe2lmKHZhbGlkYXRvci5zZXR0aW5ncy5kZWJ1ZylldmVudC5wcmV2ZW50RGVmYXVsdCgpO2Z1bmN0aW9uIGhhbmRsZSgpe2lmKHZhbGlkYXRvci5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyKXt2YWxpZGF0b3Iuc2V0dGluZ3Muc3VibWl0SGFuZGxlci5jYWxsKHZhbGlkYXRvcix2YWxpZGF0b3IuY3VycmVudEZvcm0pO3JldHVybiBmYWxzZTt9cmV0dXJuIHRydWU7fWlmKHZhbGlkYXRvci5jYW5jZWxTdWJtaXQpe3ZhbGlkYXRvci5jYW5jZWxTdWJtaXQ9ZmFsc2U7cmV0dXJuIGhhbmRsZSgpO31pZih2YWxpZGF0b3IuZm9ybSgpKXtpZih2YWxpZGF0b3IucGVuZGluZ1JlcXVlc3Qpe3ZhbGlkYXRvci5mb3JtU3VibWl0dGVkPXRydWU7cmV0dXJuIGZhbHNlO31yZXR1cm4gaGFuZGxlKCk7fWVsc2V7dmFsaWRhdG9yLmZvY3VzSW52YWxpZCgpO3JldHVybiBmYWxzZTt9fSk7fXJldHVybiB2YWxpZGF0b3I7fSx2YWxpZDpmdW5jdGlvbigpe2lmKCQodGhpc1swXSkuaXMoJ2Zvcm0nKSl7cmV0dXJuIHRoaXMudmFsaWRhdGUoKS5mb3JtKCk7fWVsc2V7dmFyIHZhbGlkPWZhbHNlO3ZhciB2YWxpZGF0b3I9JCh0aGlzWzBdLmZvcm0pLnZhbGlkYXRlKCk7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFsaWR8PXZhbGlkYXRvci5lbGVtZW50KHRoaXMpO30pO3JldHVybiB2YWxpZDt9fSxyZW1vdmVBdHRyczpmdW5jdGlvbihhdHRyaWJ1dGVzKXt2YXIgcmVzdWx0PXt9LCRlbGVtZW50PXRoaXM7JC5lYWNoKGF0dHJpYnV0ZXMuc3BsaXQoL1xzLyksZnVuY3Rpb24oaW5kZXgsdmFsdWUpe3Jlc3VsdFt2YWx1ZV09JGVsZW1lbnQuYXR0cih2YWx1ZSk7JGVsZW1lbnQucmVtb3ZlQXR0cih2YWx1ZSk7fSk7cmV0dXJuIHJlc3VsdDt9LHJ1bGVzOmZ1bmN0aW9uKGNvbW1hbmQsYXJndW1lbnQpe3ZhciBlbGVtZW50PXRoaXNbMF07aWYoY29tbWFuZCl7dmFyIHNldHRpbmdzPSQuZGF0YShlbGVtZW50LmZvcm0sJ3ZhbGlkYXRvcicpLnNldHRpbmdzO3ZhciBzdGF0aWNSdWxlcz1zZXR0aW5ncy5ydWxlczt2YXIgZXhpc3RpbmdSdWxlcz0kLnZhbGlkYXRvci5zdGF0aWNSdWxlcyhlbGVtZW50KTtzd2l0Y2goY29tbWFuZCl7Y2FzZSJhZGQiOiQuZXh0ZW5kKGV4aXN0aW5nUnVsZXMsJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShhcmd1bWVudCkpO3N0YXRpY1J1bGVzW2VsZW1lbnQubmFtZV09ZXhpc3RpbmdSdWxlcztpZihhcmd1bWVudC5tZXNzYWdlcylzZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdPSQuZXh0ZW5kKHNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV0sYXJndW1lbnQubWVzc2FnZXMpO2JyZWFrO2Nhc2UicmVtb3ZlIjppZighYXJndW1lbnQpe2RlbGV0ZSBzdGF0aWNSdWxlc1tlbGVtZW50Lm5hbWVdO3JldHVybiBleGlzdGluZ1J1bGVzO312YXIgZmlsdGVyZWQ9e307JC5lYWNoKGFyZ3VtZW50LnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGluZGV4LG1ldGhvZCl7ZmlsdGVyZWRbbWV0aG9kXT1leGlzdGluZ1J1bGVzW21ldGhvZF07ZGVsZXRlIGV4aXN0aW5nUnVsZXNbbWV0aG9kXTt9KTtyZXR1cm4gZmlsdGVyZWQ7fX12YXIgZGF0YT0kLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlcygkLmV4dGVuZCh7fSwkLnZhbGlkYXRvci5tZXRhZGF0YVJ1bGVzKGVsZW1lbnQpLCQudmFsaWRhdG9yLmNsYXNzUnVsZXMoZWxlbWVudCksJC52YWxpZGF0b3IuYXR0cmlidXRlUnVsZXMoZWxlbWVudCksJC52YWxpZGF0b3Iuc3RhdGljUnVsZXMoZWxlbWVudCkpLGVsZW1lbnQpO2lmKGRhdGEucmVxdWlyZWQpe3ZhciBwYXJhbT1kYXRhLnJlcXVpcmVkO2RlbGV0ZSBkYXRhLnJlcXVpcmVkO2RhdGE9JC5leHRlbmQoe3JlcXVpcmVkOnBhcmFtfSxkYXRhKTt9cmV0dXJuIGRhdGE7fX0pOyQuZXh0ZW5kKCQuZXhwclsiOiJdLHtibGFuazpmdW5jdGlvbihhKXtyZXR1cm4hJC50cmltKGEudmFsdWUpO30sZmlsbGVkOmZ1bmN0aW9uKGEpe3JldHVybiEhJC50cmltKGEudmFsdWUpO30sdW5jaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiFhLmNoZWNrZWQ7fX0pOyQuZm9ybWF0PWZ1bmN0aW9uKHNvdXJjZSxwYXJhbXMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PTEpcmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9JC5tYWtlQXJyYXkoYXJndW1lbnRzKTthcmdzLnVuc2hpZnQoc291cmNlKTtyZXR1cm4gJC5mb3JtYXQuYXBwbHkodGhpcyxhcmdzKTt9O2lmKGFyZ3VtZW50cy5sZW5ndGg+MiYmcGFyYW1zLmNvbnN0cnVjdG9yIT1BcnJheSl7cGFyYW1zPSQubWFrZUFycmF5KGFyZ3VtZW50cykuc2xpY2UoMSk7fWlmKHBhcmFtcy5jb25zdHJ1Y3RvciE9QXJyYXkpe3BhcmFtcz1bcGFyYW1zXTt9JC5lYWNoKHBhcmFtcyxmdW5jdGlvbihpLG4pe3NvdXJjZT1zb3VyY2UucmVwbGFjZShuZXcgUmVnRXhwKCJcXHsiK2krIlxcfSIsImciKSxuKTt9KTtyZXR1cm4gc291cmNlO307JC52YWxpZGF0b3I9ZnVuY3Rpb24ob3B0aW9ucyxmb3JtKXt0aGlzLnNldHRpbmdzPSQuZXh0ZW5kKHt9LCQudmFsaWRhdG9yLmRlZmF1bHRzLG9wdGlvbnMpO3RoaXMuY3VycmVudEZvcm09Zm9ybTt0aGlzLmluaXQoKTt9OyQuZXh0ZW5kKCQudmFsaWRhdG9yLHtkZWZhdWx0czp7bWVzc2FnZXM6e30sZ3JvdXBzOnt9LHJ1bGVzOnt9LGVycm9yQ2xhc3M6ImVycm9yIixlcnJvckVsZW1lbnQ6ImxhYmVsIixmb2N1c0ludmFsaWQ6dHJ1ZSxlcnJvckNvbnRhaW5lcjokKFtdKSxlcnJvckxhYmVsQ29udGFpbmVyOiQoW10pLG9uc3VibWl0OnRydWUsaWdub3JlOltdLGlnbm9yZVRpdGxlOmZhbHNlLG9uZm9jdXNpbjpmdW5jdGlvbihlbGVtZW50KXt0aGlzLmxhc3RBY3RpdmU9ZWxlbWVudDtpZih0aGlzLnNldHRpbmdzLmZvY3VzQ2xlYW51cCYmIXRoaXMuYmxvY2tGb2N1c0NsZWFudXApe3RoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQmJnRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLGVsZW1lbnQsdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzKTt0aGlzLmVycm9yc0ZvcihlbGVtZW50KS5oaWRlKCk7fX0sb25mb2N1c291dDpmdW5jdGlvbihlbGVtZW50KXtpZighdGhpcy5jaGVja2FibGUoZWxlbWVudCkmJihlbGVtZW50Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWR8fCF0aGlzLm9wdGlvbmFsKGVsZW1lbnQpKSl7dGhpcy5lbGVtZW50KGVsZW1lbnQpO319LG9ua2V5dXA6ZnVuY3Rpb24oZWxlbWVudCl7aWYoZWxlbWVudC5uYW1lIGluIHRoaXMuc3VibWl0dGVkfHxlbGVtZW50PT10aGlzLmxhc3RFbGVtZW50KXt0aGlzLmVsZW1lbnQoZWxlbWVudCk7fX0sb25jbGljazpmdW5jdGlvbihlbGVtZW50KXtpZihlbGVtZW50Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQpdGhpcy5lbGVtZW50KGVsZW1lbnQpO30saGlnaGxpZ2h0OmZ1bmN0aW9uKGVsZW1lbnQsZXJyb3JDbGFzcyl7JChlbGVtZW50KS5hZGRDbGFzcyhlcnJvckNsYXNzKTt9LHVuaGlnaGxpZ2h0OmZ1bmN0aW9uKGVsZW1lbnQsZXJyb3JDbGFzcyl7JChlbGVtZW50KS5yZW1vdmVDbGFzcyhlcnJvckNsYXNzKTt9fSxzZXREZWZhdWx0czpmdW5jdGlvbihzZXR0aW5ncyl7JC5leHRlbmQoJC52YWxpZGF0b3IuZGVmYXVsdHMsc2V0dGluZ3MpO30sbWVzc2FnZXM6e3JlcXVpcmVkOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIscmVtb3RlOiJQbGVhc2UgZml4IHRoaXMgZmllbGQuIixlbWFpbDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iLHVybDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLiIsZGF0ZToiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZS4iLGRhdGVJU086IlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuIixkYXRlREU6IkJpdHRlIGdlYmVuIFNpZSBlaW4gZ/xsdGlnZXMgRGF0dW0gZWluLiIsbnVtYmVyOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIuIixudW1iZXJERToiQml0dGUgZ2ViZW4gU2llIGVpbmUgTnVtbWVyIGVpbi4iLGRpZ2l0czoiUGxlYXNlIGVudGVyIG9ubHkgZGlnaXRzIixjcmVkaXRjYXJkOiJQbGVhc2UgZW50ZXIgYSB2YWxpZCBjcmVkaXQgY2FyZCBudW1iZXIuIixlcXVhbFRvOiJQbGVhc2UgZW50ZXIgdGhlIHNhbWUgdmFsdWUgYWdhaW4uIixhY2NlcHQ6IlBsZWFzZSBlbnRlciBhIHZhbHVlIHdpdGggYSB2YWxpZCBleHRlbnNpb24uIixtYXhsZW5ndGg6JC5mb3JtYXQoIlBsZWFzZSBlbnRlciBubyBtb3JlIHRoYW4gezB9IGNoYXJhY3RlcnMuIiksbWlubGVuZ3RoOiQuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYXQgbGVhc3QgezB9IGNoYXJhY3RlcnMuIikscmFuZ2VsZW5ndGg6JC5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0gY2hhcmFjdGVycyBsb25nLiIpLHJhbmdlOiQuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9LiIpLG1heDokLmZvcm1hdCgiUGxlYXNlIGVudGVyIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHswfS4iKSxtaW46JC5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB7MH0uIil9LGF1dG9DcmVhdGVSYW5nZXM6ZmFsc2UscHJvdG90eXBlOntpbml0OmZ1bmN0aW9uKCl7dGhpcy5sYWJlbENvbnRhaW5lcj0kKHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lcik7dGhpcy5lcnJvckNvbnRleHQ9dGhpcy5sYWJlbENvbnRhaW5lci5sZW5ndGgmJnRoaXMubGFiZWxDb250YWluZXJ8fCQodGhpcy5jdXJyZW50Rm9ybSk7dGhpcy5jb250YWluZXJzPSQodGhpcy5zZXR0aW5ncy5lcnJvckNvbnRhaW5lcikuYWRkKHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lcik7dGhpcy5zdWJtaXR0ZWQ9e307dGhpcy52YWx1ZUNhY2hlPXt9O3RoaXMucGVuZGluZ1JlcXVlc3Q9MDt0aGlzLnBlbmRpbmc9e307dGhpcy5pbnZhbGlkPXt9O3RoaXMucmVzZXQoKTt2YXIgZ3JvdXBzPSh0aGlzLmdyb3Vwcz17fSk7JC5lYWNoKHRoaXMuc2V0dGluZ3MuZ3JvdXBzLGZ1bmN0aW9uKGtleSx2YWx1ZSl7JC5lYWNoKHZhbHVlLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGluZGV4LG5hbWUpe2dyb3Vwc1tuYW1lXT1rZXk7fSk7fSk7dmFyIHJ1bGVzPXRoaXMuc2V0dGluZ3MucnVsZXM7JC5lYWNoKHJ1bGVzLGZ1bmN0aW9uKGtleSx2YWx1ZSl7cnVsZXNba2V5XT0kLnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKHZhbHVlKTt9KTtmdW5jdGlvbiBkZWxlZ2F0ZShldmVudCl7dmFyIHZhbGlkYXRvcj0kLmRhdGEodGhpc1swXS5mb3JtLCJ2YWxpZGF0b3IiKTt2YWxpZGF0b3Iuc2V0dGluZ3NbIm9uIitldmVudC50eXBlXSYmdmFsaWRhdG9yLnNldHRpbmdzWyJvbiIrZXZlbnQudHlwZV0uY2FsbCh2YWxpZGF0b3IsdGhpc1swXSk7fSQodGhpcy5jdXJyZW50Rm9ybSkuZGVsZWdhdGUoImZvY3VzaW4gZm9jdXNvdXQga2V5dXAiLCI6dGV4dCwgOnBhc3N3b3JkLCA6ZmlsZSwgc2VsZWN0LCB0ZXh0YXJlYSIsZGVsZWdhdGUpLmRlbGVnYXRlKCJjbGljayIsIjpyYWRpbywgOmNoZWNrYm94IixkZWxlZ2F0ZSk7aWYodGhpcy5zZXR0aW5ncy5pbnZhbGlkSGFuZGxlcikkKHRoaXMuY3VycmVudEZvcm0pLmJpbmQoImludmFsaWQtZm9ybS52YWxpZGF0ZSIsdGhpcy5zZXR0aW5ncy5pbnZhbGlkSGFuZGxlcik7fSxmb3JtOmZ1bmN0aW9uKCl7dGhpcy5jaGVja0Zvcm0oKTskLmV4dGVuZCh0aGlzLnN1Ym1pdHRlZCx0aGlzLmVycm9yTWFwKTt0aGlzLmludmFsaWQ9JC5leHRlbmQoe30sdGhpcy5lcnJvck1hcCk7aWYoIXRoaXMudmFsaWQoKSkkKHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKCJpbnZhbGlkLWZvcm0iLFt0aGlzXSk7dGhpcy5zaG93RXJyb3JzKCk7cmV0dXJuIHRoaXMudmFsaWQoKTt9LGNoZWNrRm9ybTpmdW5jdGlvbigpe3RoaXMucHJlcGFyZUZvcm0oKTtmb3IodmFyIGk9MCxlbGVtZW50cz0odGhpcy5jdXJyZW50RWxlbWVudHM9dGhpcy5lbGVtZW50cygpKTtlbGVtZW50c1tpXTtpKyspe3RoaXMuY2hlY2soZWxlbWVudHNbaV0pO31yZXR1cm4gdGhpcy52YWxpZCgpO30sZWxlbWVudDpmdW5jdGlvbihlbGVtZW50KXtlbGVtZW50PXRoaXMuY2xlYW4oZWxlbWVudCk7dGhpcy5sYXN0RWxlbWVudD1lbGVtZW50O3RoaXMucHJlcGFyZUVsZW1lbnQoZWxlbWVudCk7dGhpcy5jdXJyZW50RWxlbWVudHM9JChlbGVtZW50KTt2YXIgcmVzdWx0PXRoaXMuY2hlY2soZWxlbWVudCk7aWYocmVzdWx0KXtkZWxldGUgdGhpcy5pbnZhbGlkW2VsZW1lbnQubmFtZV07fWVsc2V7dGhpcy5pbnZhbGlkW2VsZW1lbnQubmFtZV09dHJ1ZTt9aWYoIXRoaXMubnVtYmVyT2ZJbnZhbGlkcygpKXt0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5hZGQodGhpcy5jb250YWluZXJzKTt9dGhpcy5zaG93RXJyb3JzKCk7cmV0dXJuIHJlc3VsdDt9LHNob3dFcnJvcnM6ZnVuY3Rpb24oZXJyb3JzKXtpZihlcnJvcnMpeyQuZXh0ZW5kKHRoaXMuZXJyb3JNYXAsZXJyb3JzKTt0aGlzLmVycm9yTGlzdD1bXTtmb3IodmFyIG5hbWUgaW4gZXJyb3JzKXt0aGlzLmVycm9yTGlzdC5wdXNoKHttZXNzYWdlOmVycm9yc1tuYW1lXSxlbGVtZW50OnRoaXMuZmluZEJ5TmFtZShuYW1lKVswXX0pO310aGlzLnN1Y2Nlc3NMaXN0PSQuZ3JlcCh0aGlzLnN1Y2Nlc3NMaXN0LGZ1bmN0aW9uKGVsZW1lbnQpe3JldHVybiEoZWxlbWVudC5uYW1lIGluIGVycm9ycyk7fSk7fXRoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycz90aGlzLnNldHRpbmdzLnNob3dFcnJvcnMuY2FsbCh0aGlzLHRoaXMuZXJyb3JNYXAsdGhpcy5lcnJvckxpc3QpOnRoaXMuZGVmYXVsdFNob3dFcnJvcnMoKTt9LHJlc2V0Rm9ybTpmdW5jdGlvbigpe2lmKCQuZm4ucmVzZXRGb3JtKSQodGhpcy5jdXJyZW50Rm9ybSkucmVzZXRGb3JtKCk7dGhpcy5zdWJtaXR0ZWQ9e307dGhpcy5wcmVwYXJlRm9ybSgpO3RoaXMuaGlkZUVycm9ycygpO3RoaXMuZWxlbWVudHMoKS5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpO30sbnVtYmVyT2ZJbnZhbGlkczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdExlbmd0aCh0aGlzLmludmFsaWQpO30sb2JqZWN0TGVuZ3RoOmZ1bmN0aW9uKG9iail7dmFyIGNvdW50PTA7Zm9yKHZhciBpIGluIG9iailjb3VudCsrO3JldHVybiBjb3VudDt9LGhpZGVFcnJvcnM6ZnVuY3Rpb24oKXt0aGlzLmFkZFdyYXBwZXIodGhpcy50b0hpZGUpLmhpZGUoKTt9LHZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZSgpPT0wO30sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVycm9yTGlzdC5sZW5ndGg7fSxmb2N1c0ludmFsaWQ6ZnVuY3Rpb24oKXtpZih0aGlzLnNldHRpbmdzLmZvY3VzSW52YWxpZCl7dHJ5eyQodGhpcy5maW5kTGFzdEFjdGl2ZSgpfHx0aGlzLmVycm9yTGlzdC5sZW5ndGgmJnRoaXMuZXJyb3JMaXN0WzBdLmVsZW1lbnR8fFtdKS5maWx0ZXIoIjp2aXNpYmxlIikuZm9jdXMoKTt9Y2F0Y2goZSl7fX19LGZpbmRMYXN0QWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGxhc3RBY3RpdmU9dGhpcy5sYXN0QWN0aXZlO3JldHVybiBsYXN0QWN0aXZlJiYkLmdyZXAodGhpcy5lcnJvckxpc3QsZnVuY3Rpb24obil7cmV0dXJuIG4uZWxlbWVudC5uYW1lPT1sYXN0QWN0aXZlLm5hbWU7fSkubGVuZ3RoPT0xJiZsYXN0QWN0aXZlO30sZWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdmFsaWRhdG9yPXRoaXMscnVsZXNDYWNoZT17fTtyZXR1cm4gJChbXSkuYWRkKHRoaXMuY3VycmVudEZvcm0uZWxlbWVudHMpLmZpbHRlcigiOmlucHV0Iikubm90KCI6c3VibWl0LCA6cmVzZXQsIDppbWFnZSwgW2Rpc2FibGVkXSIpLm5vdCh0aGlzLnNldHRpbmdzLmlnbm9yZSkuZmlsdGVyKGZ1bmN0aW9uKCl7IXRoaXMubmFtZSYmdmFsaWRhdG9yLnNldHRpbmdzLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvcigiJW8gaGFzIG5vIG5hbWUgYXNzaWduZWQiLHRoaXMpO2lmKHRoaXMubmFtZSBpbiBydWxlc0NhY2hlfHwhdmFsaWRhdG9yLm9iamVjdExlbmd0aCgkKHRoaXMpLnJ1bGVzKCkpKXJldHVybiBmYWxzZTtydWxlc0NhY2hlW3RoaXMubmFtZV09dHJ1ZTtyZXR1cm4gdHJ1ZTt9KTt9LGNsZWFuOmZ1bmN0aW9uKHNlbGVjdG9yKXtyZXR1cm4gJChzZWxlY3RvcilbMF07fSxlcnJvcnM6ZnVuY3Rpb24oKXtyZXR1cm4gJCh0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCsiLiIrdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuZXJyb3JDb250ZXh0KTt9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zdWNjZXNzTGlzdD1bXTt0aGlzLmVycm9yTGlzdD1bXTt0aGlzLmVycm9yTWFwPXt9O3RoaXMudG9TaG93PSQoW10pO3RoaXMudG9IaWRlPSQoW10pO3RoaXMuZm9ybVN1Ym1pdHRlZD1mYWxzZTt0aGlzLmN1cnJlbnRFbGVtZW50cz0kKFtdKTt9LHByZXBhcmVGb3JtOmZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpO3RoaXMudG9IaWRlPXRoaXMuZXJyb3JzKCkuYWRkKHRoaXMuY29udGFpbmVycyk7fSxwcmVwYXJlRWxlbWVudDpmdW5jdGlvbihlbGVtZW50KXt0aGlzLnJlc2V0KCk7dGhpcy50b0hpZGU9dGhpcy5lcnJvcnNGb3IoZWxlbWVudCk7fSxjaGVjazpmdW5jdGlvbihlbGVtZW50KXtlbGVtZW50PXRoaXMuY2xlYW4oZWxlbWVudCk7aWYodGhpcy5jaGVja2FibGUoZWxlbWVudCkpe2VsZW1lbnQ9dGhpcy5maW5kQnlOYW1lKGVsZW1lbnQubmFtZSlbMF07fXZhciBydWxlcz0kKGVsZW1lbnQpLnJ1bGVzKCk7dmFyIGRlcGVuZGVuY3lNaXNtYXRjaD1mYWxzZTtmb3IobWV0aG9kIGluIHJ1bGVzKXt2YXIgcnVsZT17bWV0aG9kOm1ldGhvZCxwYXJhbWV0ZXJzOnJ1bGVzW21ldGhvZF19O3RyeXt2YXIgcmVzdWx0PSQudmFsaWRhdG9yLm1ldGhvZHNbbWV0aG9kXS5jYWxsKHRoaXMsZWxlbWVudC52YWx1ZSxlbGVtZW50LHJ1bGUucGFyYW1ldGVycyk7aWYocmVzdWx0PT0iZGVwZW5kZW5jeS1taXNtYXRjaCIpe2RlcGVuZGVuY3lNaXNtYXRjaD10cnVlO2NvbnRpbnVlO31kZXBlbmRlbmN5TWlzbWF0Y2g9ZmFsc2U7aWYocmVzdWx0PT0icGVuZGluZyIpe3RoaXMudG9IaWRlPXRoaXMudG9IaWRlLm5vdCh0aGlzLmVycm9yc0ZvcihlbGVtZW50KSk7cmV0dXJuO31pZighcmVzdWx0KXt0aGlzLmZvcm1hdEFuZEFkZChlbGVtZW50LHJ1bGUpO3JldHVybiBmYWxzZTt9fWNhdGNoKGUpe3RoaXMuc2V0dGluZ3MuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZygiZXhjZXB0aW9uIG9jY3VyZWQgd2hlbiBjaGVja2luZyBlbGVtZW50ICIrZWxlbWVudC5pZA0KKyIsIGNoZWNrIHRoZSAnIitydWxlLm1ldGhvZCsiJyBtZXRob2QiKTt0aHJvdyBlO319aWYoZGVwZW5kZW5jeU1pc21hdGNoKXJldHVybjtpZih0aGlzLm9iamVjdExlbmd0aChydWxlcykpdGhpcy5zdWNjZXNzTGlzdC5wdXNoKGVsZW1lbnQpO3JldHVybiB0cnVlO30sY3VzdG9tTWV0YU1lc3NhZ2U6ZnVuY3Rpb24oZWxlbWVudCxtZXRob2Qpe2lmKCEkLm1ldGFkYXRhKXJldHVybjt2YXIgbWV0YT10aGlzLnNldHRpbmdzLm1ldGE/JChlbGVtZW50KS5tZXRhZGF0YSgpW3RoaXMuc2V0dGluZ3MubWV0YV06JChlbGVtZW50KS5tZXRhZGF0YSgpO3JldHVybiBtZXRhJiZtZXRhLm1lc3NhZ2VzJiZtZXRhLm1lc3NhZ2VzW21ldGhvZF07fSxjdXN0b21NZXNzYWdlOmZ1bmN0aW9uKG5hbWUsbWV0aG9kKXt2YXIgbT10aGlzLnNldHRpbmdzLm1lc3NhZ2VzW25hbWVdO3JldHVybiBtJiYobS5jb25zdHJ1Y3Rvcj09U3RyaW5nP206bVttZXRob2RdKTt9LGZpbmREZWZpbmVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7aWYoYXJndW1lbnRzW2ldIT09dW5kZWZpbmVkKXJldHVybiBhcmd1bWVudHNbaV07fXJldHVybiB1bmRlZmluZWQ7fSxkZWZhdWx0TWVzc2FnZTpmdW5jdGlvbihlbGVtZW50LG1ldGhvZCl7cmV0dXJuIHRoaXMuZmluZERlZmluZWQodGhpcy5jdXN0b21NZXNzYWdlKGVsZW1lbnQubmFtZSxtZXRob2QpLHRoaXMuY3VzdG9tTWV0YU1lc3NhZ2UoZWxlbWVudCxtZXRob2QpLCF0aGlzLnNldHRpbmdzLmlnbm9yZVRpdGxlJiZlbGVtZW50LnRpdGxlfHx1bmRlZmluZWQsJC52YWxpZGF0b3IubWVzc2FnZXNbbWV0aG9kXSwiPHN0cm9uZz5XYXJuaW5nOiBObyBtZXNzYWdlIGRlZmluZWQgZm9yICIrZWxlbWVudC5uYW1lKyI8L3N0cm9uZz4iKTt9LGZvcm1hdEFuZEFkZDpmdW5jdGlvbihlbGVtZW50LHJ1bGUpe3ZhciBtZXNzYWdlPXRoaXMuZGVmYXVsdE1lc3NhZ2UoZWxlbWVudCxydWxlLm1ldGhvZCk7aWYodHlwZW9mIG1lc3NhZ2U9PSJmdW5jdGlvbiIpbWVzc2FnZT1tZXNzYWdlLmNhbGwodGhpcyxydWxlLnBhcmFtZXRlcnMsZWxlbWVudCk7dGhpcy5lcnJvckxpc3QucHVzaCh7bWVzc2FnZTptZXNzYWdlLGVsZW1lbnQ6ZWxlbWVudH0pO3RoaXMuZXJyb3JNYXBbZWxlbWVudC5uYW1lXT1tZXNzYWdlO3RoaXMuc3VibWl0dGVkW2VsZW1lbnQubmFtZV09bWVzc2FnZTt9LGFkZFdyYXBwZXI6ZnVuY3Rpb24odG9Ub2dnbGUpe2lmKHRoaXMuc2V0dGluZ3Mud3JhcHBlcil0b1RvZ2dsZT10b1RvZ2dsZS5hZGQodG9Ub2dnbGUucGFyZW50cyh0aGlzLnNldHRpbmdzLndyYXBwZXIpKTtyZXR1cm4gdG9Ub2dnbGU7fSxkZWZhdWx0U2hvd0Vycm9yczpmdW5jdGlvbigpe2Zvcih2YXIgaT0wO3RoaXMuZXJyb3JMaXN0W2ldO2krKyl7dmFyIGVycm9yPXRoaXMuZXJyb3JMaXN0W2ldO3RoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0JiZ0aGlzLnNldHRpbmdzLmhpZ2hsaWdodC5jYWxsKHRoaXMsZXJyb3IuZWxlbWVudCx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpO3RoaXMuc2hvd0xhYmVsKGVycm9yLmVsZW1lbnQsZXJyb3IubWVzc2FnZSk7fWlmKHRoaXMuZXJyb3JMaXN0Lmxlbmd0aCl7dGhpcy50b1Nob3c9dGhpcy50b1Nob3cuYWRkKHRoaXMuY29udGFpbmVycyk7fWlmKHRoaXMuc2V0dGluZ3Muc3VjY2Vzcyl7Zm9yKHZhciBpPTA7dGhpcy5zdWNjZXNzTGlzdFtpXTtpKyspe3RoaXMuc2hvd0xhYmVsKHRoaXMuc3VjY2Vzc0xpc3RbaV0pO319aWYodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodCl7Zm9yKHZhciBpPTAsZWxlbWVudHM9dGhpcy52YWxpZEVsZW1lbnRzKCk7ZWxlbWVudHNbaV07aSsrKXt0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0LmNhbGwodGhpcyxlbGVtZW50c1tpXSx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpO319dGhpcy50b0hpZGU9dGhpcy50b0hpZGUubm90KHRoaXMudG9TaG93KTt0aGlzLmhpZGVFcnJvcnMoKTt0aGlzLmFkZFdyYXBwZXIodGhpcy50b1Nob3cpLnNob3coKTt9LHZhbGlkRWxlbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50RWxlbWVudHMubm90KHRoaXMuaW52YWxpZEVsZW1lbnRzKCkpO30saW52YWxpZEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuICQodGhpcy5lcnJvckxpc3QpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQ7fSk7fSxzaG93TGFiZWw6ZnVuY3Rpb24oZWxlbWVudCxtZXNzYWdlKXt2YXIgbGFiZWw9dGhpcy5lcnJvcnNGb3IoZWxlbWVudCk7aWYobGFiZWwubGVuZ3RoKXtsYWJlbC5yZW1vdmVDbGFzcygpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcyk7bGFiZWwuYXR0cigiZ2VuZXJhdGVkIikmJmxhYmVsLmh0bWwobWVzc2FnZSk7fWVsc2V7bGFiZWw9JCgiPCIrdGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQrIi8+IikuYXR0cih7ImZvciI6dGhpcy5pZE9yTmFtZShlbGVtZW50KSxnZW5lcmF0ZWQ6dHJ1ZX0pLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykuaHRtbChtZXNzYWdlfHwiIik7aWYodGhpcy5zZXR0aW5ncy53cmFwcGVyKXtsYWJlbD1sYWJlbC5oaWRlKCkuc2hvdygpLndyYXAoIjwiK3RoaXMuc2V0dGluZ3Mud3JhcHBlcisiLz4iKS5wYXJlbnQoKTt9aWYoIXRoaXMubGFiZWxDb250YWluZXIuYXBwZW5kKGxhYmVsKS5sZW5ndGgpdGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudD90aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50KGxhYmVsLCQoZWxlbWVudCkpOmxhYmVsLmluc2VydEFmdGVyKGVsZW1lbnQpO31pZighbWVzc2FnZSYmdGhpcy5zZXR0aW5ncy5zdWNjZXNzKXtsYWJlbC50ZXh0KCIiKTt0eXBlb2YgdGhpcy5zZXR0aW5ncy5zdWNjZXNzPT0ic3RyaW5nIj9sYWJlbC5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnN1Y2Nlc3MpOnRoaXMuc2V0dGluZ3Muc3VjY2VzcyhsYWJlbCk7fXRoaXMudG9TaG93PXRoaXMudG9TaG93LmFkZChsYWJlbCk7fSxlcnJvcnNGb3I6ZnVuY3Rpb24oZWxlbWVudCl7cmV0dXJuIHRoaXMuZXJyb3JzKCkuZmlsdGVyKCJbZm9yPSciK3RoaXMuaWRPck5hbWUoZWxlbWVudCkrIiddIik7fSxpZE9yTmFtZTpmdW5jdGlvbihlbGVtZW50KXtyZXR1cm4gdGhpcy5ncm91cHNbZWxlbWVudC5uYW1lXXx8KHRoaXMuY2hlY2thYmxlKGVsZW1lbnQpP2VsZW1lbnQubmFtZTplbGVtZW50LmlkfHxlbGVtZW50Lm5hbWUpO30sY2hlY2thYmxlOmZ1bmN0aW9uKGVsZW1lbnQpe3JldHVybi9yYWRpb3xjaGVja2JveC9pLnRlc3QoZWxlbWVudC50eXBlKTt9LGZpbmRCeU5hbWU6ZnVuY3Rpb24obmFtZSl7dmFyIGZvcm09dGhpcy5jdXJyZW50Rm9ybTtyZXR1cm4gJChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShuYW1lKSkubWFwKGZ1bmN0aW9uKGluZGV4LGVsZW1lbnQpe3JldHVybiBlbGVtZW50LmZvcm09PWZvcm0mJmVsZW1lbnQubmFtZT09bmFtZSYmZWxlbWVudHx8bnVsbDt9KTt9LGdldExlbmd0aDpmdW5jdGlvbih2YWx1ZSxlbGVtZW50KXtzd2l0Y2goZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlJ3NlbGVjdCc6cmV0dXJuICQoIm9wdGlvbjpzZWxlY3RlZCIsZWxlbWVudCkubGVuZ3RoO2Nhc2UnaW5wdXQnOmlmKHRoaXMuY2hlY2thYmxlKGVsZW1lbnQpKXJldHVybiB0aGlzLmZpbmRCeU5hbWUoZWxlbWVudC5uYW1lKS5maWx0ZXIoJzpjaGVja2VkJykubGVuZ3RoO31yZXR1cm4gdmFsdWUubGVuZ3RoO30sZGVwZW5kOmZ1bmN0aW9uKHBhcmFtLGVsZW1lbnQpe3JldHVybiB0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiBwYXJhbV0/dGhpcy5kZXBlbmRUeXBlc1t0eXBlb2YgcGFyYW1dKHBhcmFtLGVsZW1lbnQpOnRydWU7fSxkZXBlbmRUeXBlczp7ImJvb2xlYW4iOmZ1bmN0aW9uKHBhcmFtLGVsZW1lbnQpe3JldHVybiBwYXJhbTt9LCJzdHJpbmciOmZ1bmN0aW9uKHBhcmFtLGVsZW1lbnQpe3JldHVybiEhJChwYXJhbSxlbGVtZW50LmZvcm0pLmxlbmd0aDt9LCJmdW5jdGlvbiI6ZnVuY3Rpb24ocGFyYW0sZWxlbWVudCl7cmV0dXJuIHBhcmFtKGVsZW1lbnQpO319LG9wdGlvbmFsOmZ1bmN0aW9uKGVsZW1lbnQpe3JldHVybiEkLnZhbGlkYXRvci5tZXRob2RzLnJlcXVpcmVkLmNhbGwodGhpcywkLnRyaW0oZWxlbWVudC52YWx1ZSksZWxlbWVudCkmJiJkZXBlbmRlbmN5LW1pc21hdGNoIjt9LHN0YXJ0UmVxdWVzdDpmdW5jdGlvbihlbGVtZW50KXtpZighdGhpcy5wZW5kaW5nW2VsZW1lbnQubmFtZV0pe3RoaXMucGVuZGluZ1JlcXVlc3QrKzt0aGlzLnBlbmRpbmdbZWxlbWVudC5uYW1lXT10cnVlO319LHN0b3BSZXF1ZXN0OmZ1bmN0aW9uKGVsZW1lbnQsdmFsaWQpe3RoaXMucGVuZGluZ1JlcXVlc3QtLTtpZih0aGlzLnBlbmRpbmdSZXF1ZXN0PDApdGhpcy5wZW5kaW5nUmVxdWVzdD0wO2RlbGV0ZSB0aGlzLnBlbmRpbmdbZWxlbWVudC5uYW1lXTtpZih2YWxpZCYmdGhpcy5wZW5kaW5nUmVxdWVzdD09MCYmdGhpcy5mb3JtU3VibWl0dGVkJiZ0aGlzLmZvcm0oKSl7JCh0aGlzLmN1cnJlbnRGb3JtKS5zdWJtaXQoKTt9ZWxzZSBpZighdmFsaWQmJnRoaXMucGVuZGluZ1JlcXVlc3Q9PTAmJnRoaXMuZm9ybVN1Ym1pdHRlZCl7JCh0aGlzLmN1cnJlbnRGb3JtKS50cmlnZ2VySGFuZGxlcigiaW52YWxpZC1mb3JtIixbdGhpc10pO319LHByZXZpb3VzVmFsdWU6ZnVuY3Rpb24oZWxlbWVudCl7cmV0dXJuICQuZGF0YShlbGVtZW50LCJwcmV2aW91c1ZhbHVlIil8fCQuZGF0YShlbGVtZW50LCJwcmV2aW91c1ZhbHVlIixwcmV2aW91cz17b2xkOm51bGwsdmFsaWQ6dHJ1ZSxtZXNzYWdlOnRoaXMuZGVmYXVsdE1lc3NhZ2UoZWxlbWVudCwicmVtb3RlIil9KTt9fSxjbGFzc1J1bGVTZXR0aW5nczp7cmVxdWlyZWQ6e3JlcXVpcmVkOnRydWV9LGVtYWlsOntlbWFpbDp0cnVlfSx1cmw6e3VybDp0cnVlfSxkYXRlOntkYXRlOnRydWV9LGRhdGVJU086e2RhdGVJU086dHJ1ZX0sZGF0ZURFOntkYXRlREU6dHJ1ZX0sbnVtYmVyOntudW1iZXI6dHJ1ZX0sbnVtYmVyREU6e251bWJlckRFOnRydWV9LGRpZ2l0czp7ZGlnaXRzOnRydWV9LGNyZWRpdGNhcmQ6e2NyZWRpdGNhcmQ6dHJ1ZX19LGFkZENsYXNzUnVsZXM6ZnVuY3Rpb24oY2xhc3NOYW1lLHJ1bGVzKXtjbGFzc05hbWUuY29uc3RydWN0b3I9PVN0cmluZz90aGlzLmNsYXNzUnVsZVNldHRpbmdzW2NsYXNzTmFtZV09cnVsZXM6JC5leHRlbmQodGhpcy5jbGFzc1J1bGVTZXR0aW5ncyxjbGFzc05hbWUpO30sY2xhc3NSdWxlczpmdW5jdGlvbihlbGVtZW50KXt2YXIgcnVsZXM9e307dmFyIGNsYXNzZXM9JChlbGVtZW50KS5hdHRyKCdjbGFzcycpO2NsYXNzZXMmJiQuZWFjaChjbGFzc2VzLnNwbGl0KCcgJyksZnVuY3Rpb24oKXtpZih0aGlzIGluICQudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzKXskLmV4dGVuZChydWxlcywkLnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5nc1t0aGlzXSk7fX0pO3JldHVybiBydWxlczt9LGF0dHJpYnV0ZVJ1bGVzOmZ1bmN0aW9uKGVsZW1lbnQpe3ZhciBydWxlcz17fTt2YXIgJGVsZW1lbnQ9JChlbGVtZW50KTtmb3IobWV0aG9kIGluICQudmFsaWRhdG9yLm1ldGhvZHMpe3ZhciB2YWx1ZT0kZWxlbWVudC5hdHRyKG1ldGhvZCk7aWYodmFsdWUpe3J1bGVzW21ldGhvZF09dmFsdWU7fX1pZihydWxlcy5tYXhsZW5ndGgmJi8tMXwyMTQ3NDgzNjQ3fDUyNDI4OC8udGVzdChydWxlcy5tYXhsZW5ndGgpKXtkZWxldGUgcnVsZXMubWF4bGVuZ3RoO31yZXR1cm4gcnVsZXM7fSxtZXRhZGF0YVJ1bGVzOmZ1bmN0aW9uKGVsZW1lbnQpe2lmKCEkLm1ldGFkYXRhKXJldHVybnt9O3ZhciBtZXRhPSQuZGF0YShlbGVtZW50LmZvcm0sJ3ZhbGlkYXRvcicpLnNldHRpbmdzLm1ldGE7cmV0dXJuIG1ldGE/JChlbGVtZW50KS5tZXRhZGF0YSgpW21ldGFdOiQoZWxlbWVudCkubWV0YWRhdGEoKTt9LHN0YXRpY1J1bGVzOmZ1bmN0aW9uKGVsZW1lbnQpe3ZhciBydWxlcz17fTt2YXIgdmFsaWRhdG9yPSQuZGF0YShlbGVtZW50LmZvcm0sJ3ZhbGlkYXRvcicpO2lmKHZhbGlkYXRvci5zZXR0aW5ncy5ydWxlcyl7cnVsZXM9JC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZSh2YWxpZGF0b3Iuc2V0dGluZ3MucnVsZXNbZWxlbWVudC5uYW1lXSl8fHt9O31yZXR1cm4gcnVsZXM7fSxub3JtYWxpemVSdWxlczpmdW5jdGlvbihydWxlcyxlbGVtZW50KXskLmVhY2gocnVsZXMsZnVuY3Rpb24ocHJvcCx2YWwpe2lmKHZhbD09PWZhbHNlKXtkZWxldGUgcnVsZXNbcHJvcF07cmV0dXJuO31pZih2YWwucGFyYW18fHZhbC5kZXBlbmRzKXt2YXIga2VlcFJ1bGU9dHJ1ZTtzd2l0Y2godHlwZW9mIHZhbC5kZXBlbmRzKXtjYXNlInN0cmluZyI6a2VlcFJ1bGU9ISEkKHZhbC5kZXBlbmRzLGVsZW1lbnQuZm9ybSkubGVuZ3RoO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOmtlZXBSdWxlPXZhbC5kZXBlbmRzLmNhbGwoZWxlbWVudCxlbGVtZW50KTticmVhazt9aWYoa2VlcFJ1bGUpe3J1bGVzW3Byb3BdPXZhbC5wYXJhbSE9PXVuZGVmaW5lZD92YWwucGFyYW06dHJ1ZTt9ZWxzZXtkZWxldGUgcnVsZXNbcHJvcF07fX19KTskLmVhY2gocnVsZXMsZnVuY3Rpb24ocnVsZSxwYXJhbWV0ZXIpe3J1bGVzW3J1bGVdPSQuaXNGdW5jdGlvbihwYXJhbWV0ZXIpP3BhcmFtZXRlcihlbGVtZW50KTpwYXJhbWV0ZXI7fSk7JC5lYWNoKFsnbWlubGVuZ3RoJywnbWF4bGVuZ3RoJywnbWluJywnbWF4J10sZnVuY3Rpb24oKXtpZihydWxlc1t0aGlzXSl7cnVsZXNbdGhpc109TnVtYmVyKHJ1bGVzW3RoaXNdKTt9fSk7JC5lYWNoKFsncmFuZ2VsZW5ndGgnLCdyYW5nZSddLGZ1bmN0aW9uKCl7aWYocnVsZXNbdGhpc10pe3J1bGVzW3RoaXNdPVtOdW1iZXIocnVsZXNbdGhpc11bMF0pLE51bWJlcihydWxlc1t0aGlzXVsxXSldO319KTtpZigkLnZhbGlkYXRvci5hdXRvQ3JlYXRlUmFuZ2VzKXtpZihydWxlcy5taW4mJnJ1bGVzLm1heCl7cnVsZXMucmFuZ2U9W3J1bGVzLm1pbixydWxlcy5tYXhdO2RlbGV0ZSBydWxlcy5taW47ZGVsZXRlIHJ1bGVzLm1heDt9aWYocnVsZXMubWlubGVuZ3RoJiZydWxlcy5tYXhsZW5ndGgpe3J1bGVzLnJhbmdlbGVuZ3RoPVtydWxlcy5taW5sZW5ndGgscnVsZXMubWF4bGVuZ3RoXTtkZWxldGUgcnVsZXMubWlubGVuZ3RoO2RlbGV0ZSBydWxlcy5tYXhsZW5ndGg7fX1pZihydWxlcy5tZXNzYWdlcyl7ZGVsZXRlIHJ1bGVzLm1lc3NhZ2VzfXJldHVybiBydWxlczt9LG5vcm1hbGl6ZVJ1bGU6ZnVuY3Rpb24oZGF0YSl7aWYodHlwZW9mIGRhdGE9PSJzdHJpbmciKXt2YXIgdHJhbnNmb3JtZWQ9e307JC5lYWNoKGRhdGEuc3BsaXQoL1xzLyksZnVuY3Rpb24oKXt0cmFuc2Zvcm1lZFt0aGlzXT10cnVlO30pO2RhdGE9dHJhbnNmb3JtZWQ7fXJldHVybiBkYXRhO30sYWRkTWV0aG9kOmZ1bmN0aW9uKG5hbWUsbWV0aG9kLG1lc3NhZ2UpeyQudmFsaWRhdG9yLm1ldGhvZHNbbmFtZV09bWV0aG9kOyQudmFsaWRhdG9yLm1lc3NhZ2VzW25hbWVdPW1lc3NhZ2U7aWYobWV0aG9kLmxlbmd0aDwzKXskLnZhbGlkYXRvci5hZGRDbGFzc1J1bGVzKG5hbWUsJC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShuYW1lKSk7fX0sbWV0aG9kczp7cmVxdWlyZWQ6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCxwYXJhbSl7aWYoIXRoaXMuZGVwZW5kKHBhcmFtLGVsZW1lbnQpKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjtzd2l0Y2goZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlJ3NlbGVjdCc6dmFyIG9wdGlvbnM9JCgib3B0aW9uOnNlbGVjdGVkIixlbGVtZW50KTtyZXR1cm4gb3B0aW9ucy5sZW5ndGg+MCYmKGVsZW1lbnQudHlwZT09InNlbGVjdC1tdWx0aXBsZSJ8fCgkLmJyb3dzZXIubXNpZSYmIShvcHRpb25zWzBdLmF0dHJpYnV0ZXNbJ3ZhbHVlJ10uc3BlY2lmaWVkKT9vcHRpb25zWzBdLnRleHQ6b3B0aW9uc1swXS52YWx1ZSkubGVuZ3RoPjApO2Nhc2UnaW5wdXQnOmlmKHRoaXMuY2hlY2thYmxlKGVsZW1lbnQpKXJldHVybiB0aGlzLmdldExlbmd0aCh2YWx1ZSxlbGVtZW50KT4wO2RlZmF1bHQ6cmV0dXJuICQudHJpbSh2YWx1ZSkubGVuZ3RoPjA7fX0scmVtb3RlOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQscGFyYW0pe2lmKHRoaXMub3B0aW9uYWwoZWxlbWVudCkpcmV0dXJuImRlcGVuZGVuY3ktbWlzbWF0Y2giO3ZhciBwcmV2aW91cz10aGlzLnByZXZpb3VzVmFsdWUoZWxlbWVudCk7aWYoIXRoaXMuc2V0dGluZ3MubWVzc2FnZXNbZWxlbWVudC5uYW1lXSl0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW2VsZW1lbnQubmFtZV09e307dGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tlbGVtZW50Lm5hbWVdLnJlbW90ZT10eXBlb2YgcHJldmlvdXMubWVzc2FnZT09ImZ1bmN0aW9uIj9wcmV2aW91cy5tZXNzYWdlKHZhbHVlKTpwcmV2aW91cy5tZXNzYWdlO3BhcmFtPXR5cGVvZiBwYXJhbT09InN0cmluZyImJnt1cmw6cGFyYW19fHxwYXJhbTtpZihwcmV2aW91cy5vbGQhPT12YWx1ZSl7cHJldmlvdXMub2xkPXZhbHVlO3ZhciB2YWxpZGF0b3I9dGhpczt0aGlzLnN0YXJ0UmVxdWVzdChlbGVtZW50KTt2YXIgZGF0YT17fTtkYXRhW2VsZW1lbnQubmFtZV09dmFsdWU7JC5hamF4KCQuZXh0ZW5kKHRydWUse3VybDpwYXJhbSxtb2RlOiJhYm9ydCIscG9ydDoidmFsaWRhdGUiK2VsZW1lbnQubmFtZSxkYXRhVHlwZToianNvbiIsZGF0YTpkYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24ocmVzcG9uc2Upe2lmKHJlc3BvbnNlKXt2YXIgc3VibWl0dGVkPXZhbGlkYXRvci5mb3JtU3VibWl0dGVkO3ZhbGlkYXRvci5wcmVwYXJlRWxlbWVudChlbGVtZW50KTt2YWxpZGF0b3IuZm9ybVN1Ym1pdHRlZD1zdWJtaXR0ZWQ7dmFsaWRhdG9yLnN1Y2Nlc3NMaXN0LnB1c2goZWxlbWVudCk7dmFsaWRhdG9yLnNob3dFcnJvcnMoKTt9ZWxzZXt2YXIgZXJyb3JzPXt9O2Vycm9yc1tlbGVtZW50Lm5hbWVdPXJlc3BvbnNlfHx2YWxpZGF0b3IuZGVmYXVsdE1lc3NhZ2UoZWxlbWVudCwicmVtb3RlIik7dmFsaWRhdG9yLnNob3dFcnJvcnMoZXJyb3JzKTt9cHJldmlvdXMudmFsaWQ9cmVzcG9uc2U7dmFsaWRhdG9yLnN0b3BSZXF1ZXN0KGVsZW1lbnQscmVzcG9uc2UpO319LHBhcmFtKSk7cmV0dXJuInBlbmRpbmciO31lbHNlIGlmKHRoaXMucGVuZGluZ1tlbGVtZW50Lm5hbWVdKXtyZXR1cm4icGVuZGluZyI7fXJldHVybiBwcmV2aW91cy52YWxpZDt9LG1pbmxlbmd0aDpmdW5jdGlvbih2YWx1ZSxlbGVtZW50LHBhcmFtKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KXx8dGhpcy5nZXRMZW5ndGgoJC50cmltKHZhbHVlKSxlbGVtZW50KT49cGFyYW07fSxtYXhsZW5ndGg6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCxwYXJhbSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fHRoaXMuZ2V0TGVuZ3RoKCQudHJpbSh2YWx1ZSksZWxlbWVudCk8PXBhcmFtO30scmFuZ2VsZW5ndGg6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCxwYXJhbSl7dmFyIGxlbmd0aD10aGlzLmdldExlbmd0aCgkLnRyaW0odmFsdWUpLGVsZW1lbnQpO3JldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpfHwobGVuZ3RoPj1wYXJhbVswXSYmbGVuZ3RoPD1wYXJhbVsxXSk7fSxtaW46ZnVuY3Rpb24odmFsdWUsZWxlbWVudCxwYXJhbSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fHZhbHVlPj1wYXJhbTt9LG1heDpmdW5jdGlvbih2YWx1ZSxlbGVtZW50LHBhcmFtKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KXx8dmFsdWU8PXBhcmFtO30scmFuZ2U6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCxwYXJhbSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fCh2YWx1ZT49cGFyYW1bMF0mJnZhbHVlPD1wYXJhbVsxXSk7fSxlbWFpbDpmdW5jdGlvbih2YWx1ZSxlbGVtZW50KXtyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KXx8L14oKChbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKFwuKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSspKil8KChceDIyKSgoKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk/KChbXHgwMS1ceDA4XHgwYlx4MGNceDBlLVx4MWZceDdmXXxceDIxfFtceDIzLVx4NWJdfFtceDVkLVx4N2VdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoXFwoW1x4MDEtXHgwOVx4MGJceDBjXHgwZC1ceDdmXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKSkqKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPyhceDIyKSkpQCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8kL2kudGVzdCh2YWx1ZSk7fSx1cmw6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fC9eKGh0dHBzP3xmdHApOlwvXC8oKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDopKkApPygoKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSkpfCgoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFxkfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4pKygoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLj8pKDpcZCopPykoXC8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSsoXC8oKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApKikqKT8pPyhcPygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApfFtcdUUwMDAtXHVGOEZGXXxcL3xcPykqKT8oXCMoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxcL3xcPykqKT8kL2kudGVzdCh2YWx1ZSk7fSxkYXRlOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQpe3JldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpfHwhL0ludmFsaWR8TmFOLy50ZXN0KG5ldyBEYXRlKHZhbHVlKSk7fSxkYXRlSVNPOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQpe3JldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpfHwvXlxkezR9W1wvLV1cZHsxLDJ9W1wvLV1cZHsxLDJ9JC8udGVzdCh2YWx1ZSk7fSxkYXRlREU6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fC9eXGRcZD9cLlxkXGQ/XC5cZFxkXGQ/XGQ/JC8udGVzdCh2YWx1ZSk7fSxudW1iZXI6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fC9eLT8oPzpcZCt8XGR7MSwzfSg/OixcZHszfSkrKSg/OlwuXGQrKT8kLy50ZXN0KHZhbHVlKTt9LG51bWJlckRFOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQpe3JldHVybiB0aGlzLm9wdGlvbmFsKGVsZW1lbnQpfHwvXi0/KD86XGQrfFxkezEsM30oPzpcLlxkezN9KSspKD86LFxkKyk/JC8udGVzdCh2YWx1ZSk7fSxkaWdpdHM6ZnVuY3Rpb24odmFsdWUsZWxlbWVudCl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZWxlbWVudCl8fC9eXGQrJC8udGVzdCh2YWx1ZSk7fSxjcmVkaXRjYXJkOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQpe2lmKHRoaXMub3B0aW9uYWwoZWxlbWVudCkpcmV0dXJuImRlcGVuZGVuY3ktbWlzbWF0Y2giO2lmKC9bXjAtOS1dKy8udGVzdCh2YWx1ZSkpcmV0dXJuIGZhbHNlO3ZhciBuQ2hlY2s9MCxuRGlnaXQ9MCxiRXZlbj1mYWxzZTt2YWx1ZT12YWx1ZS5yZXBsYWNlKC9cRC9nLCIiKTtmb3Iobj12YWx1ZS5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIGNEaWdpdD12YWx1ZS5jaGFyQXQobik7dmFyIG5EaWdpdD1wYXJzZUludChjRGlnaXQsMTApO2lmKGJFdmVuKXtpZigobkRpZ2l0Kj0yKT45KW5EaWdpdC09OTt9bkNoZWNrKz1uRGlnaXQ7YkV2ZW49IWJFdmVuO31yZXR1cm4obkNoZWNrJTEwKT09MDt9LGFjY2VwdDpmdW5jdGlvbih2YWx1ZSxlbGVtZW50LHBhcmFtKXtwYXJhbT10eXBlb2YgcGFyYW09PSJzdHJpbmciP3BhcmFtOiJwbmd8anBlP2d8Z2lmIjtyZXR1cm4gdGhpcy5vcHRpb25hbChlbGVtZW50KXx8dmFsdWUubWF0Y2gobmV3IFJlZ0V4cCgiLigiK3BhcmFtKyIpJCIsImkiKSk7fSxlcXVhbFRvOmZ1bmN0aW9uKHZhbHVlLGVsZW1lbnQscGFyYW0pe3JldHVybiB2YWx1ZT09JChwYXJhbSkudmFsKCk7fX19KTt9KShqUXVlcnkpOzsoZnVuY3Rpb24oJCl7dmFyIGFqYXg9JC5hamF4O3ZhciBwZW5kaW5nUmVxdWVzdHM9e307JC5hamF4PWZ1bmN0aW9uKHNldHRpbmdzKXtzZXR0aW5ncz0kLmV4dGVuZChzZXR0aW5ncywkLmV4dGVuZCh7fSwkLmFqYXhTZXR0aW5ncyxzZXR0aW5ncykpO3ZhciBwb3J0PXNldHRpbmdzLnBvcnQ7aWYoc2V0dGluZ3MubW9kZT09ImFib3J0Iil7aWYocGVuZGluZ1JlcXVlc3RzW3BvcnRdKXtwZW5kaW5nUmVxdWVzdHNbcG9ydF0uYWJvcnQoKTt9cmV0dXJuKHBlbmRpbmdSZXF1ZXN0c1twb3J0XT1hamF4LmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7fXJldHVybiBhamF4LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9O30pKGpRdWVyeSk7OyhmdW5jdGlvbigkKXskLmVhY2goe2ZvY3VzOidmb2N1c2luJyxibHVyOidmb2N1c291dCd9LGZ1bmN0aW9uKG9yaWdpbmFsLGZpeCl7JC5ldmVudC5zcGVjaWFsW2ZpeF09e3NldHVwOmZ1bmN0aW9uKCl7aWYoJC5icm93c2VyLm1zaWUpcmV0dXJuIGZhbHNlO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihvcmlnaW5hbCwkLmV2ZW50LnNwZWNpYWxbZml4XS5oYW5kbGVyLHRydWUpO30sdGVhcmRvd246ZnVuY3Rpb24oKXtpZigkLmJyb3dzZXIubXNpZSlyZXR1cm4gZmFsc2U7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG9yaWdpbmFsLCQuZXZlbnQuc3BlY2lhbFtmaXhdLmhhbmRsZXIsdHJ1ZSk7fSxoYW5kbGVyOmZ1bmN0aW9uKGUpe2FyZ3VtZW50c1swXT0kLmV2ZW50LmZpeChlKTthcmd1bWVudHNbMF0udHlwZT1maXg7cmV0dXJuICQuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt9fTt9KTskLmV4dGVuZCgkLmZuLHtkZWxlZ2F0ZTpmdW5jdGlvbih0eXBlLGRlbGVnYXRlLGhhbmRsZXIpe3JldHVybiB0aGlzLmJpbmQodHlwZSxmdW5jdGlvbihldmVudCl7dmFyIHRhcmdldD0kKGV2ZW50LnRhcmdldCk7aWYodGFyZ2V0LmlzKGRlbGVnYXRlKSl7cmV0dXJuIGhhbmRsZXIuYXBwbHkodGFyZ2V0LGFyZ3VtZW50cyk7fX0pO30sdHJpZ2dlckV2ZW50OmZ1bmN0aW9uKHR5cGUsdGFyZ2V0KXtyZXR1cm4gdGhpcy50cmlnZ2VySGFuZGxlcih0eXBlLFskLmV2ZW50LmZpeCh7dHlwZTp0eXBlLHRhcmdldDp0YXJnZXR9KV0pO319KX0pKGpRdWVyeSk7DQooZnVuY3Rpb24oKXt2YXIgJCQ7JCQ9alF1ZXJ5LmZuLmZsYXNoPWZ1bmN0aW9uKGh0bWxPcHRpb25zLHBsdWdpbk9wdGlvbnMscmVwbGFjZSx1cGRhdGUpe3ZhciBibG9jaz1yZXBsYWNlfHwkJC5yZXBsYWNlO3BsdWdpbk9wdGlvbnM9JCQuY29weSgkJC5wbHVnaW5PcHRpb25zLHBsdWdpbk9wdGlvbnMpO2lmKCEkJC5oYXNGbGFzaChwbHVnaW5PcHRpb25zLnZlcnNpb24pKXtpZihwbHVnaW5PcHRpb25zLmV4cHJlc3NJbnN0YWxsJiYkJC5oYXNGbGFzaCg2LDAsNjUpKXt2YXIgZXhwcmVzc0luc3RhbGxPcHRpb25zPXtmbGFzaHZhcnM6e01NcmVkaXJlY3RVUkw6bG9jYXRpb24sTU1wbGF5ZXJUeXBlOidQbHVnSW4nLE1NZG9jdGl0bGU6alF1ZXJ5KCd0aXRsZScpLnRleHQoKX19O31lbHNlIGlmKHBsdWdpbk9wdGlvbnMudXBkYXRlKXtibG9jaz11cGRhdGV8fCQkLnVwZGF0ZTt9ZWxzZXtyZXR1cm4gdGhpczt9fQ0KaHRtbE9wdGlvbnM9JCQuY29weSgkJC5odG1sT3B0aW9ucyxleHByZXNzSW5zdGFsbE9wdGlvbnMsaHRtbE9wdGlvbnMpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtibG9jay5jYWxsKHRoaXMsJCQuY29weShodG1sT3B0aW9ucykpO30pO307JCQuY29weT1mdW5jdGlvbigpe3ZhciBvcHRpb25zPXt9LGZsYXNodmFycz17fTtmb3IodmFyIGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgYXJnPWFyZ3VtZW50c1tpXTtpZihhcmc9PXVuZGVmaW5lZCljb250aW51ZTtqUXVlcnkuZXh0ZW5kKG9wdGlvbnMsYXJnKTtpZihhcmcuZmxhc2h2YXJzPT11bmRlZmluZWQpY29udGludWU7alF1ZXJ5LmV4dGVuZChmbGFzaHZhcnMsYXJnLmZsYXNodmFycyk7fQ0Kb3B0aW9ucy5mbGFzaHZhcnM9Zmxhc2h2YXJzO3JldHVybiBvcHRpb25zO307JCQuaGFzRmxhc2g9ZnVuY3Rpb24oKXtpZigvaGFzRmxhc2hcPXRydWUvLnRlc3QobG9jYXRpb24pKXJldHVybiB0cnVlO2lmKC9oYXNGbGFzaFw9ZmFsc2UvLnRlc3QobG9jYXRpb24pKXJldHVybiBmYWxzZTt2YXIgcHY9JCQuaGFzRmxhc2gucGxheWVyVmVyc2lvbigpLm1hdGNoKC9cZCsvZyk7dmFyIHJ2PVN0cmluZyhbYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl1dKS5tYXRjaCgvXGQrL2cpfHxTdHJpbmcoJCQucGx1Z2luT3B0aW9ucy52ZXJzaW9uKS5tYXRjaCgvXGQrL2cpO2Zvcih2YXIgaT0wO2k8MztpKyspe3B2W2ldPXBhcnNlSW50KHB2W2ldfHwwKTtydltpXT1wYXJzZUludChydltpXXx8MCk7aWYocHZbaV08cnZbaV0pcmV0dXJuIGZhbHNlO2lmKHB2W2ldPnJ2W2ldKXJldHVybiB0cnVlO30NCnJldHVybiB0cnVlO307JCQuaGFzRmxhc2gucGxheWVyVmVyc2lvbj1mdW5jdGlvbigpe3RyeXt0cnl7dmFyIGF4bz1uZXcgQWN0aXZlWE9iamVjdCgnU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNicpO3RyeXtheG8uQWxsb3dTY3JpcHRBY2Nlc3M9J2Fsd2F5cyc7fQ0KY2F0Y2goZSl7cmV0dXJuJzYsMCwwJzt9fWNhdGNoKGUpe30NCnJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2gnKS5HZXRWYXJpYWJsZSgnJHZlcnNpb24nKS5yZXBsYWNlKC9cRCsvZywnLCcpLm1hdGNoKC9eLD8oLispLD8kLylbMV07fWNhdGNoKGUpe3RyeXtpZihuYXZpZ2F0b3IubWltZVR5cGVzWyJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJdLmVuYWJsZWRQbHVnaW4pe3JldHVybihuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIDIuMCJdfHxuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0pLmRlc2NyaXB0aW9uLnJlcGxhY2UoL1xEKy9nLCIsIikubWF0Y2goL14sPyguKyksPyQvKVsxXTt9fWNhdGNoKGUpe319DQpyZXR1cm4nMCwwLDAnO307JCQuaHRtbE9wdGlvbnM9e2hlaWdodDoyNDAsZmxhc2h2YXJzOnt9LHBsdWdpbnNwYWdlOidodHRwOi8vd3d3LmFkb2JlLmNvbS9nby9nZXRmbGFzaHBsYXllcicsc3JjOicjJyx0eXBlOidhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsd2lkdGg6MzIwfTskJC5wbHVnaW5PcHRpb25zPXtleHByZXNzSW5zdGFsbDpmYWxzZSx1cGRhdGU6dHJ1ZSx2ZXJzaW9uOic2LjAuNjUnfTskJC5yZXBsYWNlPWZ1bmN0aW9uKGh0bWxPcHRpb25zKXt0aGlzLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iYWx0Ij4nK3RoaXMuaW5uZXJIVE1MKyc8L2Rpdj4nO2pRdWVyeSh0aGlzKS5hZGRDbGFzcygnZmxhc2gtcmVwbGFjZWQnKS5wcmVwZW5kKCQkLnRyYW5zZm9ybShodG1sT3B0aW9ucykpO307JCQudXBkYXRlPWZ1bmN0aW9uKGh0bWxPcHRpb25zKXt2YXIgdXJsPVN0cmluZyhsb2NhdGlvbikuc3BsaXQoJz8nKTt1cmwuc3BsaWNlKDEsMCwnP2hhc0ZsYXNoPXRydWUmJyk7dXJsPXVybC5qb2luKCcnKTt2YXIgbXNnPSc8cD5UaGlzIGNvbnRlbnQgcmVxdWlyZXMgdGhlIEZsYXNoIFBsYXllci4gPGEgaHJlZj0iaHR0cDovL3d3dy5hZG9iZS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiPkRvd25sb2FkIEZsYXNoIFBsYXllcjwvYT4uIEFscmVhZHkgaGF2ZSBGbGFzaCBQbGF5ZXI/IDxhIGhyZWY9IicrdXJsKyciPkNsaWNrIGhlcmUuPC9hPjwvcD4nO3RoaXMuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0iYWx0Ij4nK3RoaXMuaW5uZXJIVE1MKyc8L3NwYW4+JztqUXVlcnkodGhpcykuYWRkQ2xhc3MoJ2ZsYXNoLXVwZGF0ZScpLnByZXBlbmQobXNnKTt9O2Z1bmN0aW9uIHRvQXR0cmlidXRlU3RyaW5nKCl7dmFyIHM9Jyc7Zm9yKHZhciBrZXkgaW4gdGhpcykNCmlmKHR5cGVvZiB0aGlzW2tleV0hPSdmdW5jdGlvbicpcys9a2V5Kyc9IicrdGhpc1trZXldKyciICc7cmV0dXJuIHM7fTtmdW5jdGlvbiB0b0ZsYXNodmFyc1N0cmluZygpe3ZhciBzPScnO2Zvcih2YXIga2V5IGluIHRoaXMpDQppZih0eXBlb2YgdGhpc1trZXldIT0nZnVuY3Rpb24nKXMrPWtleSsnPScrZW5jb2RlVVJJQ29tcG9uZW50KHRoaXNba2V5XSkrJyYnO3JldHVybiBzLnJlcGxhY2UoLyYkLywnJyk7fTskJC50cmFuc2Zvcm09ZnVuY3Rpb24oaHRtbE9wdGlvbnMpe2h0bWxPcHRpb25zLnRvU3RyaW5nPXRvQXR0cmlidXRlU3RyaW5nO2lmKGh0bWxPcHRpb25zLmZsYXNodmFycylodG1sT3B0aW9ucy5mbGFzaHZhcnMudG9TdHJpbmc9dG9GbGFzaHZhcnNTdHJpbmc7cmV0dXJuJzxlbWJlZCAnK1N0cmluZyhodG1sT3B0aW9ucykrJy8+Jzt9O2lmKHdpbmRvdy5hdHRhY2hFdmVudCl7d2luZG93LmF0dGFjaEV2ZW50KCJvbmJlZm9yZXVubG9hZCIsZnVuY3Rpb24oKXtfX2ZsYXNoX3VubG9hZEhhbmRsZXI9ZnVuY3Rpb24oKXt9O19fZmxhc2hfc2F2ZWRVbmxvYWRIYW5kbGVyPWZ1bmN0aW9uKCl7fTt9KTt9fSkoKTsoZnVuY3Rpb24oJCl7JC5mbi5saWdodEJveD1mdW5jdGlvbihzZXR0aW5ncyl7c2V0dGluZ3M9alF1ZXJ5LmV4dGVuZCh7b3ZlcmxheUJnQ29sb3I6JyMwMDAnLG92ZXJsYXlPcGFjaXR5OjAuOCxmaXhlZE5hdmlnYXRpb246ZmFsc2UsaW1hZ2VMb2FkaW5nOidTY3JpcHRzL2xpZ2h0Ym94L2ltYWdlcy9saWdodGJveC1pY28tbG9hZGluZy5naWYnLGltYWdlQnRuUHJldjonU2NyaXB0cy9saWdodGJveC9pbWFnZXMvbGlnaHRib3gtYnRuLXByZXYuZ2lmJyxpbWFnZUJ0bk5leHQ6J1NjcmlwdHMvbGlnaHRib3gvaW1hZ2VzL2xpZ2h0Ym94LWJ0bi1uZXh0LmdpZicsaW1hZ2VCdG5DbG9zZTonU2NyaXB0cy9saWdodGJveC9pbWFnZXMvbGlnaHRib3gtYnRuLWNsb3NlLmdpZicsaW1hZ2VCbGFuazonU2NyaXB0cy9saWdodGJveC9pbWFnZXMvbGlnaHRib3gtYmxhbmsuZ2lmJyxjb250YWluZXJCb3JkZXJTaXplOjEwLGNvbnRhaW5lclJlc2l6ZVNwZWVkOjQwMCx0eHRJbWFnZTonSW1hZ2UnLHR4dE9mOidvZicsa2V5VG9DbG9zZTonYycsa2V5VG9QcmV2OidwJyxrZXlUb05leHQ6J24nLGltYWdlQXJyYXk6W10sYWN0aXZlSW1hZ2U6MH0sc2V0dGluZ3MpO3ZhciBqUXVlcnlNYXRjaGVkT2JqPXRoaXM7ZnVuY3Rpb24gX2luaXRpYWxpemUoKXtfc3RhcnQodGhpcyxqUXVlcnlNYXRjaGVkT2JqKTtyZXR1cm4gZmFsc2U7fQ0KZnVuY3Rpb24gX3N0YXJ0KG9iakNsaWNrZWQsalF1ZXJ5TWF0Y2hlZE9iail7JCgnLm1lYXN1cmVkTEFZT1VULCBlbWJlZCwgb2JqZWN0LCBzZWxlY3QnKS5jc3Moeyd2aXNpYmlsaXR5JzonaGlkZGVuJ30pO19zZXRfaW50ZXJmYWNlKCk7c2V0dGluZ3MuaW1hZ2VBcnJheS5sZW5ndGg9MDtzZXR0aW5ncy5hY3RpdmVJbWFnZT0wO2lmKGpRdWVyeU1hdGNoZWRPYmoubGVuZ3RoPT0xKXtzZXR0aW5ncy5pbWFnZUFycmF5LnB1c2gobmV3IEFycmF5KG9iakNsaWNrZWQuZ2V0QXR0cmlidXRlKCdocmVmJyksb2JqQ2xpY2tlZC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykpKTt9ZWxzZXtmb3IodmFyIGk9MDtpPGpRdWVyeU1hdGNoZWRPYmoubGVuZ3RoO2krKyl7c2V0dGluZ3MuaW1hZ2VBcnJheS5wdXNoKG5ldyBBcnJheShqUXVlcnlNYXRjaGVkT2JqW2ldLmdldEF0dHJpYnV0ZSgnaHJlZicpLGpRdWVyeU1hdGNoZWRPYmpbaV0uZ2V0QXR0cmlidXRlKCd0aXRsZScpKSk7fX0NCndoaWxlKHNldHRpbmdzLmltYWdlQXJyYXlbc2V0dGluZ3MuYWN0aXZlSW1hZ2VdWzBdIT1vYmpDbGlja2VkLmdldEF0dHJpYnV0ZSgnaHJlZicpKXtzZXR0aW5ncy5hY3RpdmVJbWFnZSsrO30NCl9zZXRfaW1hZ2VfdG9fdmlldygpO30NCmZ1bmN0aW9uIF9zZXRfaW50ZXJmYWNlKCl7JCgnYm9keScpLmFwcGVuZCgnPGRpdiBpZD0ianF1ZXJ5LW92ZXJsYXkiPjwvZGl2PjxkaXYgaWQ9ImpxdWVyeS1saWdodGJveCI+PGRpdiBpZD0ibGlnaHRib3gtY29udGFpbmVyLWltYWdlLWJveCI+PGRpdiBpZD0ibGlnaHRib3gtY29udGFpbmVyLWltYWdlIj48aW1nIGlkPSJsaWdodGJveC1pbWFnZSI+PGRpdiBzdHlsZT0iIiBpZD0ibGlnaHRib3gtbmF2Ij48YSAgaWQ9ImxpZ2h0Ym94LW5hdi1idG5QcmV2Ij48L2E+PGEgIGlkPSJsaWdodGJveC1uYXYtYnRuTmV4dCI+PC9hPjwvZGl2PjxkaXYgaWQ9ImxpZ2h0Ym94LWxvYWRpbmciPjxhICBpZD0ibGlnaHRib3gtbG9hZGluZy1saW5rIj48aW1nIHNyYz0iJytzZXR0aW5ncy5pbWFnZUxvYWRpbmcrJyI+PC9hPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImxpZ2h0Ym94LWNvbnRhaW5lci1pbWFnZS1kYXRhLWJveCI+PGRpdiBpZD0ibGlnaHRib3gtY29udGFpbmVyLWltYWdlLWRhdGEiPjxkaXYgaWQ9ImxpZ2h0Ym94LWltYWdlLWRldGFpbHMiPjxzcGFuIGlkPSJsaWdodGJveC1pbWFnZS1kZXRhaWxzLWNhcHRpb24iPjwvc3Bhbj48c3BhbiBpZD0ibGlnaHRib3gtaW1hZ2UtZGV0YWlscy1jdXJyZW50TnVtYmVyIj48L3NwYW4+PC9kaXY+PGRpdiBpZD0ibGlnaHRib3gtc2VjTmF2Ij48YSAgaWQ9ImxpZ2h0Ym94LXNlY05hdi1idG5DbG9zZSI+PGltZyBzcmM9Iicrc2V0dGluZ3MuaW1hZ2VCdG5DbG9zZSsnIj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7dmFyIGFyclBhZ2VTaXplcz1fX19nZXRQYWdlU2l6ZSgpOyQoJyNqcXVlcnktb3ZlcmxheScpLmNzcyh7YmFja2dyb3VuZENvbG9yOnNldHRpbmdzLm92ZXJsYXlCZ0NvbG9yLG9wYWNpdHk6c2V0dGluZ3Mub3ZlcmxheU9wYWNpdHksd2lkdGg6YXJyUGFnZVNpemVzWzBdLGhlaWdodDphcnJQYWdlU2l6ZXNbMV19KS5mYWRlSW4oKTt2YXIgYXJyUGFnZVNjcm9sbD1fX19nZXRQYWdlU2Nyb2xsKCk7JCgnI2pxdWVyeS1saWdodGJveCcpLmNzcyh7dG9wOmFyclBhZ2VTY3JvbGxbMV0rKGFyclBhZ2VTaXplc1szXS8xMCksbGVmdDphcnJQYWdlU2Nyb2xsWzBdfSkuc2hvdygpOyQoJyNqcXVlcnktb3ZlcmxheSwjanF1ZXJ5LWxpZ2h0Ym94JykuY2xpY2soZnVuY3Rpb24oKXtfZmluaXNoKCk7fSk7JCgnI2xpZ2h0Ym94LWxvYWRpbmctbGluaywjbGlnaHRib3gtc2VjTmF2LWJ0bkNsb3NlJykuY2xpY2soZnVuY3Rpb24oKXtfZmluaXNoKCk7cmV0dXJuIGZhbHNlO30pOyQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXt2YXIgYXJyUGFnZVNpemVzPV9fX2dldFBhZ2VTaXplKCk7JCgnI2pxdWVyeS1vdmVybGF5JykuY3NzKHt3aWR0aDphcnJQYWdlU2l6ZXNbMF0saGVpZ2h0OmFyclBhZ2VTaXplc1sxXX0pO3ZhciBhcnJQYWdlU2Nyb2xsPV9fX2dldFBhZ2VTY3JvbGwoKTskKCcjanF1ZXJ5LWxpZ2h0Ym94JykuY3NzKHt0b3A6YXJyUGFnZVNjcm9sbFsxXSsoYXJyUGFnZVNpemVzWzNdLzEwKSxsZWZ0OmFyclBhZ2VTY3JvbGxbMF19KTt9KTt9DQpmdW5jdGlvbiBfc2V0X2ltYWdlX3RvX3ZpZXcoKXskKCcjbGlnaHRib3gtbG9hZGluZycpLnNob3coKTtpZihzZXR0aW5ncy5maXhlZE5hdmlnYXRpb24peyQoJyNsaWdodGJveC1pbWFnZSwjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWRhdGEtYm94LCNsaWdodGJveC1pbWFnZS1kZXRhaWxzLWN1cnJlbnROdW1iZXInKS5oaWRlKCk7fWVsc2V7JCgnI2xpZ2h0Ym94LWltYWdlLCNsaWdodGJveC1uYXYsI2xpZ2h0Ym94LW5hdi1idG5QcmV2LCNsaWdodGJveC1uYXYtYnRuTmV4dCwjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWRhdGEtYm94LCNsaWdodGJveC1pbWFnZS1kZXRhaWxzLWN1cnJlbnROdW1iZXInKS5oaWRlKCk7fQ0KdmFyIG9iakltYWdlUHJlbG9hZGVyPW5ldyBJbWFnZSgpO29iakltYWdlUHJlbG9hZGVyLm9ubG9hZD1mdW5jdGlvbigpeyQoJyNsaWdodGJveC1pbWFnZScpLmF0dHIoJ3NyYycsc2V0dGluZ3MuaW1hZ2VBcnJheVtzZXR0aW5ncy5hY3RpdmVJbWFnZV1bMF0pO19yZXNpemVfY29udGFpbmVyX2ltYWdlX2JveChvYmpJbWFnZVByZWxvYWRlci53aWR0aCxvYmpJbWFnZVByZWxvYWRlci5oZWlnaHQpO29iakltYWdlUHJlbG9hZGVyLm9ubG9hZD1mdW5jdGlvbigpe307fTtvYmpJbWFnZVByZWxvYWRlci5zcmM9c2V0dGluZ3MuaW1hZ2VBcnJheVtzZXR0aW5ncy5hY3RpdmVJbWFnZV1bMF07fTtmdW5jdGlvbiBfcmVzaXplX2NvbnRhaW5lcl9pbWFnZV9ib3goaW50SW1hZ2VXaWR0aCxpbnRJbWFnZUhlaWdodCl7dmFyIGludEN1cnJlbnRXaWR0aD0kKCcjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWJveCcpLndpZHRoKCk7dmFyIGludEN1cnJlbnRIZWlnaHQ9JCgnI2xpZ2h0Ym94LWNvbnRhaW5lci1pbWFnZS1ib3gnKS5oZWlnaHQoKTt2YXIgaW50V2lkdGg9KGludEltYWdlV2lkdGgrKHNldHRpbmdzLmNvbnRhaW5lckJvcmRlclNpemUqMikpO3ZhciBpbnRIZWlnaHQ9KGludEltYWdlSGVpZ2h0KyhzZXR0aW5ncy5jb250YWluZXJCb3JkZXJTaXplKjIpKTt2YXIgaW50RGlmZlc9aW50Q3VycmVudFdpZHRoLWludFdpZHRoO3ZhciBpbnREaWZmSD1pbnRDdXJyZW50SGVpZ2h0LWludEhlaWdodDskKCcjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWJveCcpLmFuaW1hdGUoe3dpZHRoOmludFdpZHRoLGhlaWdodDppbnRIZWlnaHR9LHNldHRpbmdzLmNvbnRhaW5lclJlc2l6ZVNwZWVkLGZ1bmN0aW9uKCl7X3Nob3dfaW1hZ2UoKTt9KTtpZigoaW50RGlmZlc9PTApJiYoaW50RGlmZkg9PTApKXtpZigkLmJyb3dzZXIubXNpZSl7X19fcGF1c2UoMjUwKTt9ZWxzZXtfX19wYXVzZSgxMDApO319DQokKCcjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWRhdGEtYm94JykuY3NzKHt3aWR0aDppbnRJbWFnZVdpZHRofSk7JCgnI2xpZ2h0Ym94LW5hdi1idG5QcmV2LCNsaWdodGJveC1uYXYtYnRuTmV4dCcpLmNzcyh7aGVpZ2h0OmludEltYWdlSGVpZ2h0KyhzZXR0aW5ncy5jb250YWluZXJCb3JkZXJTaXplKjIpfSk7fTtmdW5jdGlvbiBfc2hvd19pbWFnZSgpeyQoJyNsaWdodGJveC1sb2FkaW5nJykuaGlkZSgpOyQoJyNsaWdodGJveC1pbWFnZScpLmZhZGVJbihmdW5jdGlvbigpe19zaG93X2ltYWdlX2RhdGEoKTtfc2V0X25hdmlnYXRpb24oKTt9KTtfcHJlbG9hZF9uZWlnaGJvcl9pbWFnZXMoKTt9O2Z1bmN0aW9uIF9zaG93X2ltYWdlX2RhdGEoKXskKCcjbGlnaHRib3gtY29udGFpbmVyLWltYWdlLWRhdGEtYm94Jykuc2xpZGVEb3duKCdmYXN0Jyk7JCgnI2xpZ2h0Ym94LWltYWdlLWRldGFpbHMtY2FwdGlvbicpLmhpZGUoKTtpZihzZXR0aW5ncy5pbWFnZUFycmF5W3NldHRpbmdzLmFjdGl2ZUltYWdlXVsxXSl7JCgnI2xpZ2h0Ym94LWltYWdlLWRldGFpbHMtY2FwdGlvbicpLmh0bWwoc2V0dGluZ3MuaW1hZ2VBcnJheVtzZXR0aW5ncy5hY3RpdmVJbWFnZV1bMV0pLnNob3coKTt9DQppZihzZXR0aW5ncy5pbWFnZUFycmF5Lmxlbmd0aD4xKXskKCcjbGlnaHRib3gtaW1hZ2UtZGV0YWlscy1jdXJyZW50TnVtYmVyJykuaHRtbChzZXR0aW5ncy50eHRJbWFnZSsnICcrKHNldHRpbmdzLmFjdGl2ZUltYWdlKzEpKycgJytzZXR0aW5ncy50eHRPZisnICcrc2V0dGluZ3MuaW1hZ2VBcnJheS5sZW5ndGgpLnNob3coKTt9fQ0KZnVuY3Rpb24gX3NldF9uYXZpZ2F0aW9uKCl7JCgnI2xpZ2h0Ym94LW5hdicpLnNob3coKTskKCcjbGlnaHRib3gtbmF2LWJ0blByZXYsI2xpZ2h0Ym94LW5hdi1idG5OZXh0JykuY3NzKHsnYmFja2dyb3VuZCc6J3RyYW5zcGFyZW50IHVybCgnK3NldHRpbmdzLmltYWdlQmxhbmsrJykgbm8tcmVwZWF0J30pO2lmKHNldHRpbmdzLmFjdGl2ZUltYWdlIT0wKXtpZihzZXR0aW5ncy5maXhlZE5hdmlnYXRpb24peyQoJyNsaWdodGJveC1uYXYtYnRuUHJldicpLmNzcyh7J2JhY2tncm91bmQnOid1cmwoJytzZXR0aW5ncy5pbWFnZUJ0blByZXYrJykgbGVmdCAxNSUgbm8tcmVwZWF0J30pLnVuYmluZCgpLmJpbmQoJ2NsaWNrJyxmdW5jdGlvbigpe3NldHRpbmdzLmFjdGl2ZUltYWdlPXNldHRpbmdzLmFjdGl2ZUltYWdlLTE7X3NldF9pbWFnZV90b192aWV3KCk7cmV0dXJuIGZhbHNlO30pO31lbHNleyQoJyNsaWdodGJveC1uYXYtYnRuUHJldicpLnVuYmluZCgpLmhvdmVyKGZ1bmN0aW9uKCl7JCh0aGlzKS5jc3MoeydiYWNrZ3JvdW5kJzondXJsKCcrc2V0dGluZ3MuaW1hZ2VCdG5QcmV2KycpIGxlZnQgMTUlIG5vLXJlcGVhdCd9KTt9LGZ1bmN0aW9uKCl7JCh0aGlzKS5jc3MoeydiYWNrZ3JvdW5kJzondHJhbnNwYXJlbnQgdXJsKCcrc2V0dGluZ3MuaW1hZ2VCbGFuaysnKSBuby1yZXBlYXQnfSk7fSkuc2hvdygpLmJpbmQoJ2NsaWNrJyxmdW5jdGlvbigpe3NldHRpbmdzLmFjdGl2ZUltYWdlPXNldHRpbmdzLmFjdGl2ZUltYWdlLTE7X3NldF9pbWFnZV90b192aWV3KCk7cmV0dXJuIGZhbHNlO30pO319DQppZihzZXR0aW5ncy5hY3RpdmVJbWFnZSE9KHNldHRpbmdzLmltYWdlQXJyYXkubGVuZ3RoLTEpKXtpZihzZXR0aW5ncy5maXhlZE5hdmlnYXRpb24peyQoJyNsaWdodGJveC1uYXYtYnRuTmV4dCcpLmNzcyh7J2JhY2tncm91bmQnOid1cmwoJytzZXR0aW5ncy5pbWFnZUJ0bk5leHQrJykgcmlnaHQgMTUlIG5vLXJlcGVhdCd9KS51bmJpbmQoKS5iaW5kKCdjbGljaycsZnVuY3Rpb24oKXtzZXR0aW5ncy5hY3RpdmVJbWFnZT1zZXR0aW5ncy5hY3RpdmVJbWFnZSsxO19zZXRfaW1hZ2VfdG9fdmlldygpO3JldHVybiBmYWxzZTt9KTt9ZWxzZXskKCcjbGlnaHRib3gtbmF2LWJ0bk5leHQnKS51bmJpbmQoKS5ob3ZlcihmdW5jdGlvbigpeyQodGhpcykuY3NzKHsnYmFja2dyb3VuZCc6J3VybCgnK3NldHRpbmdzLmltYWdlQnRuTmV4dCsnKSByaWdodCAxNSUgbm8tcmVwZWF0J30pO30sZnVuY3Rpb24oKXskKHRoaXMpLmNzcyh7J2JhY2tncm91bmQnOid0cmFuc3BhcmVudCB1cmwoJytzZXR0aW5ncy5pbWFnZUJsYW5rKycpIG5vLXJlcGVhdCd9KTt9KS5zaG93KCkuYmluZCgnY2xpY2snLGZ1bmN0aW9uKCl7c2V0dGluZ3MuYWN0aXZlSW1hZ2U9c2V0dGluZ3MuYWN0aXZlSW1hZ2UrMTtfc2V0X2ltYWdlX3RvX3ZpZXcoKTtyZXR1cm4gZmFsc2U7fSk7fX0NCl9lbmFibGVfa2V5Ym9hcmRfbmF2aWdhdGlvbigpO30NCmZ1bmN0aW9uIF9lbmFibGVfa2V5Ym9hcmRfbmF2aWdhdGlvbigpeyQoZG9jdW1lbnQpLmtleWRvd24oZnVuY3Rpb24ob2JqRXZlbnQpe19rZXlib2FyZF9hY3Rpb24ob2JqRXZlbnQpO30pO30NCmZ1bmN0aW9uIF9kaXNhYmxlX2tleWJvYXJkX25hdmlnYXRpb24oKXskKGRvY3VtZW50KS51bmJpbmQoKTt9DQpmdW5jdGlvbiBfa2V5Ym9hcmRfYWN0aW9uKG9iakV2ZW50KXtpZihvYmpFdmVudD09bnVsbCl7a2V5Y29kZT1ldmVudC5rZXlDb2RlO2VzY2FwZUtleT0yNzt9ZWxzZXtrZXljb2RlPW9iakV2ZW50LmtleUNvZGU7ZXNjYXBlS2V5PW9iakV2ZW50LkRPTV9WS19FU0NBUEU7fQ0Ka2V5PVN0cmluZy5mcm9tQ2hhckNvZGUoa2V5Y29kZSkudG9Mb3dlckNhc2UoKTtpZigoa2V5PT1zZXR0aW5ncy5rZXlUb0Nsb3NlKXx8KGtleT09J3gnKXx8KGtleWNvZGU9PWVzY2FwZUtleSkpe19maW5pc2goKTt9DQppZigoa2V5PT1zZXR0aW5ncy5rZXlUb1ByZXYpfHwoa2V5Y29kZT09MzcpKXtpZihzZXR0aW5ncy5hY3RpdmVJbWFnZSE9MCl7c2V0dGluZ3MuYWN0aXZlSW1hZ2U9c2V0dGluZ3MuYWN0aXZlSW1hZ2UtMTtfc2V0X2ltYWdlX3RvX3ZpZXcoKTtfZGlzYWJsZV9rZXlib2FyZF9uYXZpZ2F0aW9uKCk7fX0NCmlmKChrZXk9PXNldHRpbmdzLmtleVRvTmV4dCl8fChrZXljb2RlPT0zOSkpe2lmKHNldHRpbmdzLmFjdGl2ZUltYWdlIT0oc2V0dGluZ3MuaW1hZ2VBcnJheS5sZW5ndGgtMSkpe3NldHRpbmdzLmFjdGl2ZUltYWdlPXNldHRpbmdzLmFjdGl2ZUltYWdlKzE7X3NldF9pbWFnZV90b192aWV3KCk7X2Rpc2FibGVfa2V5Ym9hcmRfbmF2aWdhdGlvbigpO319fQ0KZnVuY3Rpb24gX3ByZWxvYWRfbmVpZ2hib3JfaW1hZ2VzKCl7aWYoKHNldHRpbmdzLmltYWdlQXJyYXkubGVuZ3RoLTEpPnNldHRpbmdzLmFjdGl2ZUltYWdlKXtvYmpOZXh0PW5ldyBJbWFnZSgpO29iak5leHQuc3JjPXNldHRpbmdzLmltYWdlQXJyYXlbc2V0dGluZ3MuYWN0aXZlSW1hZ2UrMV1bMF07fQ0KaWYoc2V0dGluZ3MuYWN0aXZlSW1hZ2U+MCl7b2JqUHJldj1uZXcgSW1hZ2UoKTtvYmpQcmV2LnNyYz1zZXR0aW5ncy5pbWFnZUFycmF5W3NldHRpbmdzLmFjdGl2ZUltYWdlLTFdWzBdO319DQpmdW5jdGlvbiBfZmluaXNoKCl7JCgnI2pxdWVyeS1saWdodGJveCcpLnJlbW92ZSgpOyQoJyNqcXVlcnktb3ZlcmxheScpLmZhZGVPdXQoZnVuY3Rpb24oKXskKCcjanF1ZXJ5LW92ZXJsYXknKS5yZW1vdmUoKTt9KTskKCcubWVhc3VyZWRMQVlPVVQsIGVtYmVkLCBvYmplY3QsIHNlbGVjdCcpLmNzcyh7J3Zpc2liaWxpdHknOid2aXNpYmxlJ30pO30NCmZ1bmN0aW9uIF9fX2dldFBhZ2VTaXplKCl7dmFyIHhTY3JvbGwseVNjcm9sbDtpZih3aW5kb3cuaW5uZXJIZWlnaHQmJndpbmRvdy5zY3JvbGxNYXhZKXt4U2Nyb2xsPXdpbmRvdy5pbm5lcldpZHRoK3dpbmRvdy5zY3JvbGxNYXhYO3lTY3JvbGw9d2luZG93LmlubmVySGVpZ2h0K3dpbmRvdy5zY3JvbGxNYXhZO31lbHNlIGlmKGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KXt4U2Nyb2xsPWRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg7eVNjcm9sbD1kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDt9ZWxzZXt4U2Nyb2xsPWRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7eVNjcm9sbD1kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDt9DQp2YXIgd2luZG93V2lkdGgsd2luZG93SGVpZ2h0O2lmKHNlbGYuaW5uZXJIZWlnaHQpe2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCl7d2luZG93V2lkdGg9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO31lbHNle3dpbmRvd1dpZHRoPXNlbGYuaW5uZXJXaWR0aDt9DQp3aW5kb3dIZWlnaHQ9c2VsZi5pbm5lckhlaWdodDt9ZWxzZSBpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpe3dpbmRvd1dpZHRoPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDt3aW5kb3dIZWlnaHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDt9ZWxzZSBpZihkb2N1bWVudC5ib2R5KXt3aW5kb3dXaWR0aD1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO3dpbmRvd0hlaWdodD1kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDt9DQppZih5U2Nyb2xsPHdpbmRvd0hlaWdodCl7cGFnZUhlaWdodD13aW5kb3dIZWlnaHQ7fWVsc2V7cGFnZUhlaWdodD15U2Nyb2xsO30NCmlmKHhTY3JvbGw8d2luZG93V2lkdGgpe3BhZ2VXaWR0aD14U2Nyb2xsO31lbHNle3BhZ2VXaWR0aD13aW5kb3dXaWR0aDt9DQphcnJheVBhZ2VTaXplPW5ldyBBcnJheShwYWdlV2lkdGgscGFnZUhlaWdodCx3aW5kb3dXaWR0aCx3aW5kb3dIZWlnaHQpO3JldHVybiBhcnJheVBhZ2VTaXplO307ZnVuY3Rpb24gX19fZ2V0UGFnZVNjcm9sbCgpe3ZhciB4U2Nyb2xsLHlTY3JvbGw7aWYoc2VsZi5wYWdlWU9mZnNldCl7eVNjcm9sbD1zZWxmLnBhZ2VZT2Zmc2V0O3hTY3JvbGw9c2VsZi5wYWdlWE9mZnNldDt9ZWxzZSBpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Ape3lTY3JvbGw9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDt4U2Nyb2xsPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O31lbHNlIGlmKGRvY3VtZW50LmJvZHkpe3lTY3JvbGw9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7eFNjcm9sbD1kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7fQ0KYXJyYXlQYWdlU2Nyb2xsPW5ldyBBcnJheSh4U2Nyb2xsLHlTY3JvbGwpO3JldHVybiBhcnJheVBhZ2VTY3JvbGw7fTtmdW5jdGlvbiBfX19wYXVzZShtcyl7dmFyIGRhdGU9bmV3IERhdGUoKTtjdXJEYXRlPW51bGw7ZG97dmFyIGN1ckRhdGU9bmV3IERhdGUoKTt9DQp3aGlsZShjdXJEYXRlLWRhdGU8bXMpO307cmV0dXJuIHRoaXMudW5iaW5kKCdjbGljaycpLmNsaWNrKF9pbml0aWFsaXplKTt9O30pKGpRdWVyeSk7DQpqUXVlcnkudmFsaWRhdG9yLmFkZE1ldGhvZCggICAgICAgICAidmluVVMiLCAgICAgICAgIGZ1bmN0aW9uKHYpeyAgICAgICAgICAgICAgICAgaWYgKHYubGVuZ3RoICE9IDE3KSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICB2YXIgaSwgbiwgZCwgZiwgY2QsIGNkdjsgICAgICAgICAgICAgICAgIHZhciBMTCAgICA9IFsiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIlAiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiXTsgICAgICAgICAgICAgICAgIHZhciBWTCAgICA9IFsxLDIsMyw0LDUsNiw3LDgsMSwyLDMsNCw1LDcsOSwyLDMsNCw1LDYsNyw4LDldOyAgICAgICAgICAgICAgICAgdmFyIEZMICAgID0gWzgsNyw2LDUsNCwzLDIsMTAsMCw5LDgsNyw2LDUsNCwzLDJdOyAgICAgICAgICAgICAgICAgdmFyIHJzICAgID0gMDsgICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IDE3OyBpKyspeyAgICAgICAgICAgICAgICAgICAgIGYgPSBGTFtpXTsgICAgICAgICAgICAgICAgICAgICBkID0gdi5zbGljZShpLGkrMSk7ICAgICAgICAgICAgICAgICAgICAgaWYoaSA9PSA4KXsgICAgICAgICAgICAgICAgICAgICAgICAgY2R2ID0gZDsgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgaWYoIWlzTmFOKGQpKXsgICAgICAgICAgICAgICAgICAgICAgICAgZCAqPSBmOyAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICBlbHNleyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IobiA9IDA7IG4gPCBMTC5sZW5ndGg7IG4rKyl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkLnRvVXBwZXJDYXNlKCkgPT09IExMW25dKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gVkxbbl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCAqPSBmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzTmFOKGNkdikgJiYgbiA9PSA4KXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2R2ID0gTExbbl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIHJzICs9IGQ7ICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICBjZCA9IHJzICUgMTE7ICAgICAgICAgICAgICAgICBpZihjZCA9PSAxMCl7Y2QgPSAiWCI7fSAgICAgICAgICAgICAgICAgaWYoY2QgPT0gY2R2KXtyZXR1cm4gdHJ1ZTt9ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgIH0sICAgICAgICAgIlRoZSBzcGVjaWZpZWQgdmVoaWNsZSBpZGVudGlmaWNhdGlvbiBudW1iZXIgKFZJTikgaXMgaW52YWxpZC4iICk7IA0KDQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8vJHVybGV4dD0nPycuQ01TX1NFQ1VSRV9QQVJBTV9OQU1FLic9Jy4kX1NFU1NJT05bQ01TX1VTRVJfS0VZXTsNCi8vCQkJCSRoZWxwTGluayA9CSI8dGQ+PGEgaHJlZj1cImxpc3Rtb2R1bGVzLnBocCIuJHVybGV4dC4iJmFtcDthY3Rpb249c2hvd21vZHVsZWhlbHAmYW1wO21vZHVsZT1HcmlkZGVyJm0xX2FjdGl2ZV90YWI9b3B0aW9uc1wiPiIubGFuZygnaGVscCcpLiI8L2E+PC90ZD4iOw0KLy9pZihpc3NldCgkX0dFVFsnYWN0aW9uJ10pKXsNCi8vaWYoJF9HRVRbJ2FjdGlvbiddPT0nc2hvd21vZHVsZWhlbHAnKXsNCi8vZ2xvYmFsICRnQ21zOw0KLy8kcHBibT0mJGdDbXMtPm1vZHVsZXNbJ0dyaWRkZXInXVsnb2JqZWN0J107DQovLyRFWD0kcHBibS0+UHJvY2Vzc1RlbXBsYXRlKCJzYW1wbGUudHBsIik7DQovL31lbHNlew0KLy8kRVg9Jyc7CQ0KLy99DQovL31lbHNlew0KLy8kRVg9Jyc7CQ0KLy99DQoNCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdHcmlkZGVyJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBmaXJzdCBzdG9wIHlvdVwnbGwgd2FudCB0byBtYWtlIGlzICc7Ly8uJGhlbHBMaW5rOw0KJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdQbGVhc2UgZmVlbCBmcmVlIHRvIGxldCB1cyBrbm93IGlmIHRoZXJlIGlzIGEgd2F5IHRvIG1ha2UgUGF5UGFsIEJ1dHRvbiBNYWtlciBiZXR0ZXIsIDxhIGhyZWY9Imh0dHA6Ly9oZWxwLmNvcmJlbnNwcm9kdWN0cy5jb20vbWFrZS1jb250YWN0Lmh0bWwiPkNvbnRhY3QgdXMgd2VcJ2VyIGhhcHB5IHRvIGhlYXIgZnJvbSB5b3UuPC9hPic7DQokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1VuaW5zdGFsbGluZyB0aGlzIG1vZHVsZSB3aWxsIG5vdCBhZmZlY3QgYW55IGV2ZW50IGRhdGEgYW5kIGFsbCBib29rcyB0byBkYXRlIHdpbGwgc3RpbGwgYmUgdGhlcmUuIERvIHlvdSB3aXNoIHRvIGNvbnRpbnVlPyc7DQokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsNCiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsNCiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7DQoNCi8vL0FkbWluDQokbGFuZ1snQUNUb3B0aW9ucyddID0gJ0FjY291bnQgT3B0aW9ucyc7DQokbGFuZ1snQlROb3B0aW9ucyddID0gJ0J1dHRvbiBEZWZhdWx0cyc7DQoNCg0KDQoNCiRsYW5nWydCdG5fbGlzdCddID0gJ0J1dHRvbnMnOw0KJGxhbmdbJ3Byb21wdF9uZXdCdG4nXSA9ICdBZGQgTmV3IEJ1dHRvbic7DQokbGFuZ1sndGl0bGVfYXZhaWxhYmxlX3RlbXBsYXRlcyddID0gJ0J1dHRvbnMgTGlzdCc7DQokbGFuZ1snYXJleW91c3VyZSddID0gJ0ltcG9ydGFudDpcblxuSWYgdGhpcyBpcyBkZWxldGVkIGFsbCBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvc3QhXG4nOw0KDQoNCg0KLy8vQWN0aW9ucw0KJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsNCiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOw0KDQoNCi8vL21lc3NhZ2VzDQokbGFuZ1snQ2FuY2VsZWQnXSA9ICdZb3UgQ2FuY2VsZWQgb3V0IG9mIHRoZSBvcGVyYXRpb24uICBBbnkgV29yayB5b3UgbWF5IGhhdmUgZW50ZXJlZCBoYXMgYmVlbiBsb3N0Lic7DQokbGFuZ1snTm9CaXonXSA9ICc8aDEgc3R5bGU9ImNvbG9yOnJlZDsiPllvdSBoYXZlIG5vdCBhZGRlZCBhbiBhY2NvdW50LCBkbyBzbyBpbiB0aGUgQWNjb3VudCBPcHRpb25zIHRhYiBvZiBHcmlkZGVyIGluIHRoZSBhZG1pbjwvaDE+JzsNCiRsYW5nWydOb0J1dHRvbiddID0gJzxoMT5UaGUgd3Jvbmcgb3Igbm9uZSBleGlzdGluZyBidXR0b24gd2FzIHVzZWQuICBQbGVhc2UgY2hlY2sgdGhlIGFkbWluIHNldHRpbmdzLjwvaDE+JzsNCiRsYW5nWydCdG5BRERFRCddID0gJ1lvdSBKdXN0IEFkZGVkIGEgbmV3IFBheVBhbCBCdXR0b24nOw0KJGxhbmdbJ0J0bkVESVRFRCddID0gJ1lvdSBKdXN0IEVkaXRlZCBhbiBleGlzdGluZyBQYXlQYWwgQnV0dG9uJzsNCiRsYW5nWydCdG5ERUxFVEVEJ10gPSAnWW91IEp1c3QgRGVsZXRlZCBhbiBleGlzdGluZyBQYXlQYWwgQnV0dG9uJzsNCg0KLy9BY2NvdW50IG9wdGlvbnMNCiRsYW5nWydJUHNfbGFiZWwnXT0gJ0lwIHBvb2wgPGVtPihjb21tYSBzZXBhcmF0ZWQpPC9lbT4nOw0KJGxhbmdbJ3VybEJhc2VfbGFiZWwnXT0gJ3VybEJhc2UnOw0KJGxhbmdbJ2dDb2xvcl9sYWJlbCddPSAnZ0NvbG9yJzsNCiRsYW5nWydnQ29sdW1uc19sYWJlbCddPSAnZ0NvbHVtbnMnOw0KJGxhbmdbJ2dPcGFjaXR5X2xhYmVsJ109ICdnT3BhY2l0eSc7DQokbGFuZ1snZ1dpZHRoX2xhYmVsJ109ICdnV2lkdGgnOw0KJGxhbmdbJ3BDb2xvcl9sYWJlbCddPSAncENvbG9yJzsNCiRsYW5nWydwSGVpZ2h0X2xhYmVsJ109ICdwSGVpZ2h0JzsNCiRsYW5nWydwT2Zmc2V0X2xhYmVsJ109ICdwT2Zmc2V0JzsNCiRsYW5nWydwT3BhY2l0eV9sYWJlbCddPSAncE9wYWNpdHknOw0KJGxhbmdbJ2NlbnRlcl9sYWJlbCddPSAnY2VudGVyJzsNCiRsYW5nWydnRW5hYmxlZF9sYWJlbCddPSAnZ0VuYWJsZWQnOw0KJGxhbmdbJ3BFbmFibGVkX2xhYmVsJ109ICdwRW5hYmxlZCc7DQokbGFuZ1snc2V0dXBFbmFibGVkX2xhYmVsJ109ICdzZXR1cEVuYWJsZWQnOw0KJGxhbmdbJ2ZpeEZsYXNoX2xhYmVsJ109ICdmaXhGbGFzaCc7DQokbGFuZ1snc2l6ZV9sYWJlbCddPSAnc2l6ZSc7DQoNCiRsYW5nWydJUHMnXT0gJyc7DQokbGFuZ1sndXJsQmFzZSddPSAnJzsNCiRsYW5nWydnQ29sb3InXT0gJyc7DQokbGFuZ1snZ0NvbHVtbnMnXT0gJyc7DQokbGFuZ1snZ09wYWNpdHknXT0gJyc7DQokbGFuZ1snZ1dpZHRoJ109ICcnOw0KJGxhbmdbJ3BDb2xvciddPSAnJzsNCiRsYW5nWydwSGVpZ2h0J109ICcnOw0KJGxhbmdbJ3BPZmZzZXQnXT0gJyc7DQokbGFuZ1sncE9wYWNpdHknXT0gJyc7DQokbGFuZ1snY2VudGVyJ109ICcnOw0KJGxhbmdbJ2dFbmFibGVkJ109ICcnOw0KJGxhbmdbJ3BFbmFibGVkJ109ICcnOw0KJGxhbmdbJ3NldHVwRW5hYmxlZCddPSAnJzsNCiRsYW5nWydmaXhGbGFzaCddPSAnJzsNCiRsYW5nWydzaXplJ109ICcnOw0KDQoNCg0KDQoNCg0KLy9BbGVydHMgYW5kIE1lc3NhZ2VzDQokbGFuZ1snQ2xlYXJJbWcnXSA9ICdEZWxldGUgQ3VycmVudCBJbWFnZSc7DQoNCg0KJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7DQokbGFuZ1snZm9ybV9jYW5jZWwnXSA9ICdDYW5jZWwnOw0KDQokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsNCiRsYW5nWydmb3JtX3N1Ym1pdCddID0gJ1NhdmUgUHJlZmVyZW5jZXMnOw0KDQokbGFuZ1snbW9kX3ByZWZzX3RpdGxlJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsNCiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOw0KJGxhbmdbJ29wdGlvbnN1cGRhdGVkJ10gPSAnb3B0aW9ucyB1cGRhdGVkJzsNCg0KDQoNCg0KDQokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdHcmlkZGVyIGlzIGFuIGV4Y2VsbGVudCB0b29sIGZvciBhbnkgd2ViIGRldmVsb3Blci8gZGVzaWduZXIgdGhhdCB3YW50cyB0byBlYXNpbHkgYWxpZ24sIG1hdGNoIGFuZC9vciBsYXkgb3V0IHdlYnNpdGVzLg0KSWYgeW91IG5lZWQgdG8gYmUgcGl4ZWwgcGVyZmVjdCB0aGlzIGNhbiBoZWxwLi4uIFNpbXBsZSwgZmxleGlibGUhJzsNCiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5IZWxsbyE8L3A+JzsNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICcNCjx1bD4NCiAgPGxpPlZlcnNpb24gMC4xIEJldGEgcmVsZWFzZS48L2xpPg0KPC91bD4nOw0KJGxhbmdbJ2hlbHAnXSA9ICc8bGluayBtZWRpYT0ic2NyZWVuIiBocmVmPSIuLi9tb2R1bGVzL0dyaWRkZXIvQ1NTL01hc3RlckNTUy5jc3MiIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiPjxkaXYgY2xhc3M9IlNpbVdyYXAiPjxiIGNsYXNzPSJyYm90dG9tIj48YiBjbGFzcz0icjEiPjwvYj4gPGIgY2xhc3M9InIyIj48L2I+PGIgY2xhc3M9InIzIj48L2I+IDxiIGNsYXNzPSJyNCI+PC9iPjwvYj4NCg0KPGRpdiBjbGFzcz0iU2ltY29uIj48aDMgY2xhc3M9IkJhY2tMaW5rIj48YSBvbmNsaWNrPSJqYXZhc2NyaXB0OndpbmRvdy5oaXN0b3J5LmdvKC0xKSIgcmVsPSJub2ZvbGxvdyI+Jmx0OyZsdDsgQmFjazwvYT48L2gzPg0KPGgzPldoYXQgRG9lcyBUaGlzIERvPy0tLSB0aGlzIG5lZWRzIHVwZGF0aW5nPC9oMz4NCjxwPmFkZCBhIG92ZXJsYXk8L3A+DQoNCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KDQoNCjxici8+PGJyLz4NCkdyaWRkZXIgaXMgbWFkZSBoZXJlIGh0dHA6Ly9ncmlkZGVyLmFuZHJlZWhhbnNzb24uc2UvLg0KPGgzPlN1cHBvcnQ8L2gzPg0KPGg0PlNjcmVlbmNhc3RzIGZvciBleHRyYSBoZWxwIHdpbGwgZmFsbG93LS0tIG9uIHRoZSBUT0RPPC9oND4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIG9yIHRvIGZpbGUgYSBidWcgcmVwb3J0IHZpc2l0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvcHBibSI+dGhlIENNUyBGb3JnZTwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjwvdWw+DQoNCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA5LCBqZXJlbXlCYXNzICZsdDs8YSBocmVmPSJodHRwOi8vY29yYmVuc3Byb2R1Y3RzLmNvbSI+Y29yYmVuc3Byb2R1Y3RzLmNvbTwvYT4mZ3Q7IEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxzdHJvbmc+U3VwcG9ydCBtb3JlIG1vZHMgbGlrZSB0aGlzOjwvc3Ryb25nPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iODgxNzY3NSI+DQo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9lbl9VUy9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIC0gVGhlIHNhZmVyLCBlYXNpZXIgd2F5IHRvIHBheSBvbmxpbmUhIj4NCjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2VuX1VTL2kvc2NyL3BpeGVsLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSI+DQo8L2Zvcm0+PGJyLz4NCg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjwvZGl2ID4NCg0KDQo8YiBjbGFzcz0icmJvdHRvbSI+PGIgY2xhc3M9InI0Ij48L2I+PGIgY2xhc3M9InIzIj48L2I+IDxiIGNsYXNzPSJyMiI+PC9iPiA8YiBjbGFzcz0icjEiPjwvYj48L2I+DQoNCjwvZGl2Pg0KJzsNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lang/_notes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsNCiRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOyANCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdJUHMnLCcnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cmxCYXNlJywgJGNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvR3JpZGRlci9pbmNsdWRlcy8nKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdnQ29sb3InLCcjRUVFRUVFJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZ0NvbHVtbnMnLCcxMicpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dPcGFjaXR5JywnMC4zNScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dXaWR0aCcsJzEwJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgncENvbG9yJywnI0MwQzBDMCcpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BIZWlnaHQnLCcxNScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BPZmZzZXQnLCcwJyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgncE9wYWNpdHknLCcwLjU1Jyk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2VudGVyJywndHJ1ZScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dFbmFibGVkJywndHJ1ZScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BFbmFibGVkJywndHJ1ZScpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NldHVwRW5hYmxlZCcsJ3RydWUnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmaXhGbGFzaCcsJ3RydWUnKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaXplJywnOTYwJyk7DQoNCg0KJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnRQb3N0UmVuZGVyJyk7DQoNCgkvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovKg0KICAgIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZw0KICAgIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlDQogICAgQVBJLCBhbmQgdGhhdCBldmVyeXRoaW5nJ3Mgc2FmZSB0byBjb250aW51ZToNCiovIA0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCgkkZGIgPSYgJGdDbXMtPkdldERiKCk7DQovLwkNCgkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlDQoJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcHBibV9idG4iICk7DQoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KCQ0KCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BwYm1fYnRuX29wdCIgKTsNCgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCgkvLyByZW1vdmUgdGhlIHNlcXVlbmNlDQoJLy8gJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3JhdGVfdGhpc19zZXEiICk7DQoNCi8vCS8vIHJlbW92ZSB0aGUgcHJlZmVyZW5jZXMNCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7DQovLwkNCi8vCS8vIFJlbW92ZSBhbGwgZXZlbnQgaGFuZGxlcnMNCgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudFBvc3RSZW5kZXInKTsNCi8vCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0Zyb250RW5kVXNlcnMnLCdPbkRlbGV0ZVVzZXInKTsNCi8vCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0Zyb250RW5kVXNlcnMnLCdPblVwZGF0ZVVzZXInKTsNCi8vCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0Zyb250RW5kVXNlcnMnLCdPbkV4cGlyZVVzZXInKTsNCi8vCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0Zyb250RW5kVXNlcnMnLCdPbkxvZ2luJyk7DQovLwkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdGcm9udEVuZFVzZXJzJywnT25Mb2dvdXQnKTsNCi8vCQ0KCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogR3JpZGRlciAtIEdyaWRkZXIgbGV0cyB5b3UgdGhlIGRlc2lnbmVyIHNvIHNlZSBhIGdyaWQgb24gYSBsaXZlIHNpdGUsIGJ1dCBvbmx5IGZvciB5b3UgdGhlIGRlc2lnbmVyLi4uICANCiMgTW9kIGRlc2lnbmVkIGJ5IGplcmVteUJhc3MgKGplcmVteUJhc3NAY2FibGVvbmUubmV0KQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL0dyaWRkZXIvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0KIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovKg0KICAgIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZw0KICAgIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlDQogICAgQVBJLCBhbmQgdGhhdCBldmVyeXRoaW5nJ3Mgc2FmZSB0byBjb250aW51ZToNCiovIA0KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7DQoNCg0KLyogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlDQogICAgd3JhcHBlZCBpbiB0aGUgVXBncmFkZSgpIG1ldGhvZCBpbiB0aGUgbW9kdWxlIGJvZHkuDQoqLw0KDQoJCSRkYiA9ICR0aGlzLT5HZXREYigpOw0KCQkkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247DQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsNCgkJZGVidWdfZGlzcGxheSgnQ3VycmVudC12ZXJzaW9uOiAnLiRjdXJyZW50X3ZlcnNpb24pOw0KCQlzd2l0Y2goJGN1cnJlbnRfdmVyc2lvbikNCgkJew0KCQkJY2FzZSAnMC4xJzoNCgkJfQ0KCQkvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_BNToptions.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kX3ByZWZzX3RpdGxlfTwvaDM+DQo8aHIvPg0KDQp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0NCnskZm9ybV9zdGFydH0NCg0KIA0KICAgICA8aDE+R2VuZXJhbCBCdXR0b24gT3B0aW9uPC9oMT4NCiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIA0KICAgIA0KICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRJUHNfbGFiZWx9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRJUHNfaW5wdXR9PC9wPjxici8+DQogICAgDQogICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVybEJhc2VfbGFiZWx9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1cmxCYXNlX2lucHV0fTwvcD48YnIvPg0KICAgICAgICANCiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRnQ29sb3JfbGFiZWx9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRnQ29sb3JfaW5wdXR9PC9wPjxici8+DQogICAgICAgIA0KICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdDb2x1bW5zX2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZ0NvbHVtbnNfaW5wdXR9PC9wPjxici8+DQogICAgICAgIA0KICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdPcGFjaXR5X2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZ09wYWNpdHlfaW5wdXR9PC9wPjxici8+DQogICAgICAgIA0KICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdXaWR0aF9sYWJlbH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGdXaWR0aF9pbnB1dH08L3A+PGJyLz4NCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcENvbG9yX2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcENvbG9yX2lucHV0fTwvcD48YnIvPg0KICAgICAgICANCiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwSGVpZ2h0X2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcEhlaWdodF9pbnB1dH08L3A+PGJyLz4NCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcE9mZnNldF9sYWJlbH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHBPZmZzZXRfaW5wdXR9PC9wPjxici8+DQogICAgICAgIA0KICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHBPcGFjaXR5X2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcE9wYWNpdHlfaW5wdXR9PC9wPjxici8+DQogICAgICAgIA0KICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGNlbnRlcl9sYWJlbH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNlbnRlcl9pbnB1dH08L3A+PGJyLz4NCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZ0VuYWJsZWRfbGFiZWx9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRnRW5hYmxlZF9pbnB1dH08L3A+PGJyLz4NCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcEVuYWJsZWRfbGFiZWx9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwRW5hYmxlZF9pbnB1dH08L3A+PGJyLz4NCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskc2V0dXBFbmFibGVkX2xhYmVsfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2V0dXBFbmFibGVkX2lucHV0fTwvcD48YnIvPg0KICAgICAgICANCiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaXhGbGFzaF9sYWJlbH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZpeEZsYXNoX2lucHV0fTwvcD48YnIvPiAgICANCiAgICAgICAgDQogICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskc2l6ZV9sYWJlbH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHNpemVfaW5wdXR9PC9wPjxici8+ICAgICAgDQogICAgICAgIA0KCTwvZGl2PiAgIA0KICAgPGhyLz4gICANCiAgICANCiAgICANCiAgICANCg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZvcm1fc3VibWl0fTwvcD4NCgk8L2Rpdj4NCg0KICAgICAJDQp7JGZvcm1fZW5kfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/message.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4KPHA+eyRtZXNzYWdlfTwvcD4=]]></data>
	</file>
</module>
