<?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>Revisions</name>
	<version>1.0-Beta2</version>
  <mincmsversion>1.10.3</mincmsversion>
	<help><![CDATA[PGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy5jbXNtczExLmRkL21vZHVsZXMvUmV2aXNpb25zL2Nzcy9iYWNrZW5kLmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCnZhciBDTVNfQURNSU5fRElSID0gJ2h0dHA6Ly93d3cuY21zbXMxMS5kZC9idGFkbWluJzsKdmFyIENNU19VU0VSX0tFWSA9ICc/X3N4Xz1hZWMyMDk5ZCc7Ci0tPgo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL3d3dy5jbXNtczExLmRkL21vZHVsZXMvUmV2aXNpb25zL2pzL2JhY2tlbmQuanMiPjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJodHRwOi8vd3d3LmNtc21zMTEuZGQvbW9kdWxlcy9SZXZpc2lvbnMvanMvbHl0ZWJveC5qcyI+PC9zY3JpcHQ+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy5jbXNtczExLmRkL21vZHVsZXMvUmV2aXNpb25zL2Nzcy9seXRlYm94LmNzcyIgdHlwZT0idGV4dC9jc3MiIC8+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cDovL3d3dy5jbXNtczExLmRkL21vZHVsZXMvUmV2aXNpb25zL2Nzcy9iYWNrZW5kLmNzcyIgdHlwZT0idGV4dC9jc3MiIC8+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KUEFHRUJBQ0tfVVJMID0gJ21vZHVsZWludGVyZmFjZS5waHA/X3N4Xz1hZWMyMDk5ZCZtb2R1bGU9UmV2aXNpb25zJm0xX2FjdGl2ZV90YWI9JzsKUEFHRUJBQ0tfVEVYVCA9ICdHbyBvbmUgcGFnZSBiYWNrJzsKPC9zY3JpcHQ+CgoKPGRpdiBpZD0icGFnZV90YWJzIj4KCTxkaXYgaWQ9ImdlbmVyYWwiPgoJCUdlbmVyYWwKCTwvZGl2PgoJPGRpdiBpZD0icGVybWlzc2lvbnMiPgoJCVBlcm1pc3Npb25zCgk8L2Rpdj4KCTxkaXYgaWQ9ImFib3V0Ij4KCQlBYm91dAoJPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPiAgCgk8ZGl2IGlkPSJnZW5lcmFsX2MiPgoJCTxoMz5HZW5lcmFsIEluZm88L2gzPgoJPHA+UmV2aXNpb25zIGxvZ3MgY2hhbmdlcyBpbiBjb250ZW50LCB0ZW1wbGF0ZXMsIENTUywgR0NCcyBhbmQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byB2aWV3IGRpZmYgb3IgcmV2ZXJ0IHRvIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiBpdC48L3A+Cgk8L2Rpdj4KCTxkaXYgaWQ9InBlcm1pc3Npb25zX2MiPgoJCTxoMz5QZXJtaXNzaW9uczwvaDM+Cgk8cD5Zb3UgY2FuIHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyB1bmRlciBVc2VycyAmIEdyb3VwcyA+IEdyb3VwIFBlcm1pc3Npb25zPC9wPgoJPHVsPgoJCTxsaT5SZXZpc2lvbnM6IFVzZTwvbGk+CgkJPGxpPlJldmlzaW9uczogU2V0IE9wdGlvbnM8L2xpPgoJPC91bD4KCTxwPk9uY2UgYSB1c2VyIGlzIHBlcm1pdHRlZCB0byB1c2UgdGhpcyBtb2R1bGUgaGUgd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgcmV2aXNpb25zIG9mIHRob3NlIGNvbnRlbnRzIGhlJ3MgYWxsb3dlZCB0byBlZGl0LiBFeGFtcGxlOiBBIHVzZXIgdGhhdCBpcyBhbGxvd2VkIHRvIGVkaXQgR2xvYmFsIENvbnRlbnQgQmxvY2tzIHdpbGwgYWxzbyBiZSBhYmxlIHRvIG1hbmFnZSBpdHMgcmV2aXNpb25zLgoJPC9kaXY+Cgk8ZGl2IGlkPSJhYm91dF9jIj4KCQk8aDM+QWJvdXQ8L2gzPgoJPHA+SWYgeW91IGZpbmQgYW55IGJ1Z3MgcGxlYXNlIGZlZWwgZnJlZSB0byBzdWJtaXQgYSBidWcgcmVwb3J0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTAxNSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IG9yIGZvciBhbnkgZ29vZCBpZGVhcyBjb25zaWRlciBzdWJtaXRpbmcgYSBmZWF0dXJlIHJlcXVlc3QgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9mZWF0dXJlX3JlcXVlc3QvbGlzdC8xMDE1IiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4uPC9wPgoJPHA+TWFueSB0aGFua3MgdG8gSm9uYXRoYW4gU2NobWlkIGZvciBoaXMgcHJvZ3JhbW1pbmcgdGhlIGJhc2ljIG9mIFJldmlzaW9ucy48L3A+Cgk8cD5QbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgZGV2ZWxvcGVycyBkbyBoYXZlIHRoZWlyIGRhaWx5IGpvYnMgd2hpY2ggbWVhbnMgdGhhdCBmZWF0dXJlIHJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGFuZCBkb25lIGFzIHRpbWUgYWxsb3dzLiBJZiB5b3UgbmVlZCBhIGZlYXR1cmUgcmVhbGx5IGJhZGx5IGNvbnNpZGVyIGNvbnRhY3Rpbmcgb25lIG9mIHRoZSBkZXZlbG9wZXJzIGZvciBhIHNwb25zb3JlZCBkZXZlbG9wbWVudC48L3A+Cgk8aDM+VGVhbTwvaDM+Cgk8dWw+CgkJPGxpPkx1a2FzIEJsYXR0ZXIgKG5vY2tlbmZlbGwpIGx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2ggPGJyIC8+d3d3LmJsYXR0ZXJ0ZWNoLmNoPC9saT4KCTwvdWw+Cgk8L2Rpdj4gIAo8L2Rpdj48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBMdWthcyBCbGF0dGVyICZsdDtsYkBibGF0dGVydGVjaC5jaCZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjAtQmV0YTI8YnIgLz4=]]></about>
	<description><![CDATA[Revisions logs changes in content, templates, CSS, GCBs and enables the web developer to view diff or revert to an earlier version of it.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_compare.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gVE9ETzogY2hvb3NlIGJldHdlZW4gY29tcGFyaXNvbiBvZiByZXZpc2lvbiA8LT4gY3VycmVudCB2ZXJzaW9uIG9yIHJldmlzaW9uIDwtPiBvdGhlciByZXZpc2lvbgoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfdXNlJykpCglyZXR1cm47CgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9saWIvRGlmZi9SZW5kZXJlci9TaWRlQnlTaWRlLnBocCc7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKJGNvbnRlbnRpbmZvID0gJHRoaXMtPkdldENvbnRlbnRJbmZvRnJvbVJldmlzaW9uKCRwYXJhbXNbJ3JldmlzaW9uX2lkJ10pOwokY29udGVudCA9ICR0aGlzLT5HZXRDdXJyZW50VmVyc2lvbigKCSgkY29udGVudGluZm9bJ3JlY3ljbGUnXSA/ICdyZWN5Y2xlJyA6ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSksCgkkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwKCSgkY29udGVudGluZm9bJ3JlY3ljbGUnXSA/ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA6ICcnKQopOwoKJG9sZGNvbnRlbnQgPSAkdGhpcy0+Z2V0UmV2aXNpb25Db250ZW50KCRwYXJhbXNbJ3JldmlzaW9uX2lkJ10pOwoKJGRpZmZfbWFya3VwID0gJyc7CgppZiAoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddID09ICJjb250ZW50IikgewoJCgkkb2xkY29udGVudG9iaiA9IFVuc2VyaWFsaXplT2JqZWN0KCRvbGRjb250ZW50KTsKCSRjb250ZW50YmxvY2tzID0gVW5zZXJpYWxpemVPYmplY3QoJGNvbnRlbnRpbmZvWydjb250ZW50YmxvY2tzJ10pOwoJCglpZiAoaXNfYXJyYXkoJGNvbnRlbnRibG9ja3MpKSB7CgkJZm9yZWFjaCgkY29udGVudGJsb2NrcyBhcyAka2V5ID0+ICR2YWx1ZSkKCQl7CgkJCSRvbGQgPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgka2V5KTsKCQkJJG5ldyA9ICRjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCRrZXkpOwoJCQkKCQkJaWYgKCRjb250ZW50aW5mb1sncmVjeWNsZSddKSAkbmV3ID0gIiI7CgkJCQoJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCWlmIChpc19hcnJheSgkbmV3KSBhbmQgaXNzZXQoJG5ld1snY29udGVudCddKSkgJG5ldyA9ICRuZXdbJ2NvbnRlbnQnXTsJCgkJCQoJCQkkcmVuZGVyZXIgPSBuZXcgRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUoJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9uciddKTsKCQkJJGRpZmZfbWFya3VwIC49ICI8aDQ+Ii4kdGhpcy0+TGFuZygiY29udGVudGJsb2NrIikuICIgJyIgLiAka2V5IC4gIic6PC9oND4iOwoJCQkkZGlmZiA9IG5ldyBEaWZmKGV4cGxvZGUoIlxuIiwgJG9sZCksIGV4cGxvZGUoIlxuIiwgJG5ldykpOwoJCQkkZCA9ICRkaWZmLT5yZW5kZXIoJHJlbmRlcmVyKTsKCQkJaWYgKCRkID09ICIiKSAKCQkJCSRkaWZmX21hcmt1cCAuPSAkdGhpcy0+TGFuZygncmV2aXNpb25zX2lkZW50aWNhbCcpOyAKCQkJZWxzZSAKCQkJCSRkaWZmX21hcmt1cCAuPSAkZGlmZi0+cmVuZGVyKCRyZW5kZXJlcik7CgkJfQoJfQoJZWxzZSB7CgkJZWNobyAkdGhpcy0+TGFuZygnZXJyb3JfY29udGVudGJsb2NrcycpOwoJfQp9CmVsc2UgewoJJHJlbmRlcmVyID0gbmV3IERpZmZfUmVuZGVyZXJfSHRtbF9TaWRlQnlTaWRlKCRjb250ZW50aW5mb1sncmV2aXNpb25fbnInXSk7Cgl7CgkJaWYgKCRjb250ZW50aW5mb1sncmVjeWNsZSddKSAkY29udGVudCA9ICIiOwoJCSRkaWZmID0gbmV3IERpZmYoZXhwbG9kZSgiXG4iLCAkb2xkY29udGVudCksIGV4cGxvZGUoIlxuIiwgJGNvbnRlbnQpKTsKCQkkZGlmZl9tYXJrdXAgLj0gJGRpZmYtPnJlbmRlcigkcmVuZGVyZXIpOwoJfQp9Cgokc21hcnR5LT5hc3NpZ24oJ3Jlc3RvcmVsaW5rJywKCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwKCQkJICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZXhwb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXN0b3JlJyksJycsJycsJ3N5c3RlbWljb24nKSwKCQkJICAgICBhcnJheSgkY29udGVudGluZm9bJ3JldmlzaW9uX2lkJ10pLCAnJywgZmFsc2UsIGZhbHNlLCAnJykuJyAnLgoKCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwKCQkJICAgICAkdGhpcy0+TGFuZygncmVzdG9yZScpLAoJCQkgICAgIGFycmF5KCdyZXZpc2lvbl9pZCcgPT4gJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9pZCddKSkpOwoKCgokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRwYXJhbXNbJ21vZHVsZV9uYW1lJ10pIC4iOiAiIC4gJHBhcmFtc1snbmFtZSddKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlYmFja191cmwnLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZSgkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdhZG1pbl9kZXRhaWxzJywgJHJldHVybmlkLCBhcnJheSgKCSdtb2R1bGVfbmFtZScgPT4gKCRjb250ZW50aW5mb1sncmVjeWNsZSddPydyZWN5Y2xlJzokY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJJ3JlY3ljbGVfbW9kdWxlX25hbWUnID0+ICgkY29udGVudGluZm9bJ3JlY3ljbGUnXT8kY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ106JycpLAoJJ2NvbnRlbnRfaWQnID0+ICRjb250ZW50aW5mb1snY29udGVudF9pZCddCikpKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWJhY2tfdGV4dCcsICR0aGlzLT5MYW5nKCJiYWNrIikpOwokc21hcnR5LT5hc3NpZ24oJ2RpZmYnLCAkZGlmZl9tYXJrdXApOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdjb21wYXJlLnRwbCcpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_details.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWydtZXNzYWdlJ10pKSB7CgllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pKTsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2Vycm9ycyddKSAmJiBjb3VudCgkcGFyYW1zWydlcnJvcnMnXSkpIHsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHBhcmFtc1snZXJyb3JzJ10pOwp9CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwokZGIgPSBjbXNtcygpLT5HZXREYigpOwoKJG1vZHVsZV9uYW1lID0gaXNzZXQoJHBhcmFtc1snbW9kdWxlX25hbWUnXSkgPyAkcGFyYW1zWydtb2R1bGVfbmFtZSddIDogJyc7CgokcHJldmlld29wdGlvbnMgPSBhcnJheSgpOwokZGJwYXJhbXMgPSBhcnJheSgpOwpzd2l0Y2goJG1vZHVsZV9uYW1lKQp7CglkZWZhdWx0OgoJCXJldHVybjsKCgljYXNlICdjb250ZW50JzoKCQkkcHJldmlld29wdGlvbnNbJ2Rpc2FibGVfdGhlbWUnXSA9IDE7CgkJJGRicGFyYW1zW10gPSAkcGFyYW1zWydtb2R1bGVfbmFtZSddOwoJCSRxdWVyeSA9ICdTRUxFQ1QgYS5yZXZpc2lvbl9pZCBhcyByZXZpc2lvbl9pZCwgYS5yZXZpc2lvbl9uciBhcyByZXZpc2lvbl9uciwgYi5jb250ZW50X25hbWUgQVMgbmFtZSwgYS5jcmVhdGVfdGltZSwgYy51c2VybmFtZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NvbnRlbnQgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNvbnRlbnRfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7CgoJY2FzZSAnZ2NiJzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkJJHF1ZXJ5ID0gJ1NFTEVDVCBhLnJldmlzaW9uX2lkIGFzIHJldmlzaW9uX2lkLCBhLnJldmlzaW9uX25yIGFzIHJldmlzaW9uX25yLCBiLmh0bWxibG9iX25hbWUgQVMgbmFtZSwgYS5jcmVhdGVfdGltZSwgYy51c2VybmFtZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2h0bWxibG9icyBiLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ3VzZXJzIGMgV0hFUkUgYS5tb2R1bGVfbmFtZSA9ID8gQU5EIGEuY29udGVudF9pZCA9ID8gQU5EIGEuY29udGVudF9pZCA9IGIuaHRtbGJsb2JfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7CgoJY2FzZSAndGVtcGxhdGUnOgoJCSRkYnBhcmFtc1tdID0gJHBhcmFtc1snbW9kdWxlX25hbWUnXTsKCQkkcXVlcnkgPSAnU0VMRUNUIGEucmV2aXNpb25faWQgYXMgcmV2aXNpb25faWQsIGEucmV2aXNpb25fbnIgYXMgcmV2aXNpb25fbnIsIGIudGVtcGxhdGVfbmFtZSBBUyBuYW1lLCBhLmNyZWF0ZV90aW1lLCBjLnVzZXJuYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndGVtcGxhdGVzIGIsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndXNlcnMgYyBXSEVSRSBhLm1vZHVsZV9uYW1lID0gPyBBTkQgYS5jb250ZW50X2lkID0gPyBBTkQgYS5jb250ZW50X2lkID0gYi50ZW1wbGF0ZV9pZCBBTkQgYS51c2VyX2lkID0gYy51c2VyX2lkIEdST1VQIEJZIGEucmV2aXNpb25faWQgT1JERVIgQlkgYS5yZXZpc2lvbl9pZCBkZXNjJzsKCQlicmVhazsKCgljYXNlICdzdHlsZXNoZWV0JzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkJJHF1ZXJ5ID0gJ1NFTEVDVCBhLnJldmlzaW9uX2lkIGFzIHJldmlzaW9uX2lkLCBhLnJldmlzaW9uX25yIGFzIHJldmlzaW9uX25yLCBiLmNzc19uYW1lIEFTIG5hbWUsIGEuY3JlYXRlX3RpbWUsIGMudXNlcm5hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNzc19pZCBBTkQgYS51c2VyX2lkID0gYy51c2VyX2lkIEdST1VQIEJZIGEucmV2aXNpb25faWQgT1JERVIgQlkgYS5yZXZpc2lvbl9pZCBkZXNjJzsKCQlicmVhazsKCgljYXNlICdyZWN5Y2xlJzoKCQkkZGJwYXJhbXNbXSA9ICRwYXJhbXNbJ3JlY3ljbGVfbW9kdWxlX25hbWUnXTsKCQkkcXVlcnkgPSAnU0VMRUNUIGEucmV2aXNpb25faWQgYXMgcmV2aXNpb25faWQsIGEubW9kdWxlX25hbWUgYXMgbW9kdWxlX25hbWUsIGEucmV2aXNpb25fbnIgYXMgcmV2aXNpb25fbnIsIGIuY29udGVudF9uYW1lIEFTIG5hbWUsIGEuY3JlYXRlX3RpbWUsIGMudXNlcm5hbWUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgYiwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBjIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSBiLmNvbnRlbnRfaWQgQU5EIGEudXNlcl9pZCA9IGMudXNlcl9pZCBHUk9VUCBCWSBhLnJldmlzaW9uX2lkIE9SREVSIEJZIGEucmV2aXNpb25faWQgZGVzYyc7CgkJYnJlYWs7Cn0KJGRicGFyYW1zW10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRkYnBhcmFtcyk7CgokbmFtZSA9ICIiOwoKLy8gUFJFUEFSRSBBTEwgUkVWSVNJT05TIEZPUiBMSVNUSU5HCiRyZXZpc2lvbnMgPSBhcnJheSgpOwp3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKewoJaWYgKCRuYW1lID09ICIiKSAkbmFtZSA9ICRyb3dbJ25hbWUnXTsKCQoJJHByZXZpZXdvcHRpb25zWydyZXZpc2lvbl9pZCddID0gJHJvd1sncmV2aXNpb25faWQnXTsKCSRwcmV2aWV3b3B0aW9uc1snbmFtZSddID0gJHJvd1snbmFtZSddOwoJaWYgKGlzc2V0KCRyb3dbJ21vZHVsZV9uYW1lJ10pIGFuZCAkcm93Wydtb2R1bGVfbmFtZSddID09ICdjb250ZW50JykgJHByZXZpZXdvcHRpb25zWydkaXNhYmxlX3RoZW1lJ10gPSAxOwoJCgkKCSRyb3dbJ3ByZXZpZXdsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9wcmV2aWV3JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkdGhpcy0+TGFuZygncHJldmlldycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIAoJCSRwcmV2aWV3b3B0aW9ucywgJycsIGZhbHNlLCBmYWxzZSwgKGlzc2V0KCRwcmV2aWV3b3B0aW9uc1snZGlzYWJsZV90aGVtZSddKT8ndGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJwb3B1cCInOicnKSk7Cgkkcm93WydyZXN0b3JlbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCgkJYXJyYXkoCgkJCSdyZXZpc2lvbl9pZCcgPT4gJHJvd1sncmV2aXNpb25faWQnXQoJCSkpOwoJJHJvd1snY29tcGFyZWxpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2NvbXBhcmUnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICR0aGlzLT5MYW5nKCdjb21wYXJlX3Rvb2x0aXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCWFycmF5KAoJCQkncmV2aXNpb25faWQnID0+ICRyb3dbJ3JldmlzaW9uX2lkJ10sICduYW1lJyA9PiAkcm93WyduYW1lJ10sICdtb2R1bGVfbmFtZScgPT4gJHBhcmFtc1snbW9kdWxlX25hbWUnXQoJCSkpOwoJJHJldmlzaW9uc1tdID0gUmV2aXNpb25zVXRpbHM6OmFycmF5X3RvX29iamVjdCgkcm93KTsKfQoKLy9pZigkcGFyYW1zWydtb2R1bGVfbmFtZSddID09ICdyZWN5Y2xlJykKLy97Ci8vCWlmICgkbmFtZSA9PSAiIikgJG5hbWUgPSAkcm93WyduYW1lJ107Ci8vCQovLwkvLyBMSVNUIExBU1QgQUNUSVZFIFZFUlNJT04gQVQgVEhFIEJPVFRPTQovLwkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBhLmNvbnRlbnRfbmFtZSBBUyBuYW1lLCBhLmNyZWF0ZV90aW1lLCBiLnVzZXJuYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICd1c2VycyBiIFdIRVJFIGEubW9kdWxlX25hbWUgPSA/IEFORCBhLmNvbnRlbnRfaWQgPSA/IEFORCBhLnVzZXJfaWQgPSBiLnVzZXJfaWQnLCAkZGJwYXJhbXMpOwovLwkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwovLwkkbGlua3BhcmFtcyA9IGFycmF5KCk7Ci8vCSRsaW5rcGFyYW1zWydyZXZpc2lvbl9pZCddID0gLTE7Ci8vCSRsaW5rcGFyYW1zWydyZXZpc2lvbl9uciddID0gJHJvd1sncmV2aXNpb25fbnInXTsKLy8JJGxpbmtwYXJhbXNbJ25hbWUnXSA9ICRyb3dbJ25hbWUnXTsKLy8JJGxpbmtwYXJhbXNbJ21vZHVsZV9uYW1lJ10gPSAkcGFyYW1zWydyZWN5Y2xlX21vZHVsZV9uYW1lJ107Ci8vCSRsaW5rcGFyYW1zWydjb250ZW50X2lkJ10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107Ci8vCSRyb3dbJ3ByZXZpZXdsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9wcmV2aWV3JywgJHJldHVybmlkLCAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkdGhpcy0+TGFuZygncHJldmlldycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIAovLwkJJGxpbmtwYXJhbXMsICcnLCBmYWxzZSwgZmFsc2UsIChpc3NldCgkcHJldmlld29wdGlvbnNbJ2Rpc2FibGVfdGhlbWUnXSk/J3RhcmdldD0iX2JsYW5rIiBjbGFzcz0icG9wdXAiJzonJykpOwovLwkkcm93WydyZXN0b3JlbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVzdG9yZScsICRyZXR1cm5pZCwgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksICRsaW5rcGFyYW1zKTsKLy8JJHJvd1snY29tcGFyZWxpbmsnXSA9ICcnOwovLwkkcmV2aXNpb25zW10gPSBSZXZpc2lvbnNVdGlsczo6YXJyYXlfdG9fb2JqZWN0KCRyb3cpOwovL30KCgokc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRwYXJhbXNbJ21vZHVsZV9uYW1lJ10pIC4iOiAiIC4gJG5hbWUpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyZXZpc2lvbnMpKTsKJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkcmV2aXNpb25zKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlYmFja191cmwnLCAkdGhpcy0+Q3JlYXRlQmFja1VSTCgkcGFyYW1zWydtb2R1bGVfbmFtZSddLid0YWInKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWJhY2tfdGV4dCcsICR0aGlzLT5MYW5nKCJiYWNrIikpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RldGFpbHMudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_preview.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCnJlcXVpcmVfb25jZSgnZWRpdGNvbnRlbnRfZXh0cmEucGhwJyk7CgokYWRtaW50aGVtZSA9IGNtc21zKCktPmdldF92YXJpYWJsZSgnYWRtaW50aGVtZScpOwoKaWYoJHBhcmFtc1sncmV2aXNpb25faWQnXSA+IDApCnsKCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcGFyYW1zWydyZXZpc2lvbl9pZCddKTsKfQplbHNlCnsKCSRjb250ZW50aW5mbyA9IGFycmF5KCk7CgkkY29udGVudGluZm9bJ3JlY3ljbGUnXSA9IHRydWU7CgkkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gPSAkcGFyYW1zWydtb2R1bGVfbmFtZSddOwoJJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10gPSAkcGFyYW1zWydjb250ZW50X2lkJ107Cn0KJGNvbnRlbnQgPSAkdGhpcy0+R2V0Q3VycmVudFZlcnNpb24oCgkoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10gPyAncmVjeWNsZScgOiAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10sCgkoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10gPyAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gOiAnJykKKTsKJG9sZGNvbnRlbnQgPSAkcGFyYW1zWydyZXZpc2lvbl9pZCddID4gMCA/ICR0aGlzLT5nZXRSZXZpc2lvbkNvbnRlbnQoJHBhcmFtc1sncmV2aXNpb25faWQnXSkgOiAkY29udGVudDsKCmlmKCRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA9PSAnY29udGVudCcpCnsKCSRyZXZjb250ZW50b2JqID0gVW5zZXJpYWxpemVPYmplY3QoJG9sZGNvbnRlbnQpOwoJJHBhcm0gPSBhcnJheSgpOwoJJGNvbnRlbnRibG9ja3MgPSBVbnNlcmlhbGl6ZU9iamVjdCgkY29udGVudGluZm9bJ2NvbnRlbnRibG9ja3MnXSk7CgkKCgkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkkY29udGVudF90eXBlID0gZ2V0X2NsYXNzKCRyZXZjb250ZW50b2JqKTsKCQoJJHBhcm0gPSBhcnJheSgpOwoJCglpZiAoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10pIHsKCQkkY29udGVudG9iaiA9IAkkdGhpcy0+R2V0Q3VycmVudFZlcnNpb24oInJlY3ljbGUiLCAkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgImNvbnRlbnQiKTsKCQkJCgkJZm9yZWFjaCgkY29udGVudGJsb2NrcyBhcyAkYmxvY2tfbmFtZSA9PiAkdmFsdWUpCgkJewoJCQkkb2xkID0gJHJldmNvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrX25hbWUpOwoJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQoJCQkkcGFybVskYmxvY2tfbmFtZV0gPSAkb2xkOwoJCX0KCX0KCWVsc2UgewoJCSRjb250ZW50b2JqID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkKCRjb250ZW50aW5mb1snY29udGVudF9pZCddLCB0cnVlKTsKCQlmb3JlYWNoKCRjb250ZW50b2JqLT5nZXRfY29udGVudF9ibG9ja3MoKSBhcyAkYmxvY2tfbmFtZSA9PiAkdmFsdWUpCgkJewoJCQkkb2xkID0gJHJldmNvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrX25hbWUpOwoJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQoJCQkkcGFybVskYmxvY2tfbmFtZV0gPSAkb2xkOwoJCX0KCX0JCgkJCgkJCglpZiAoc3RydG9sb3dlcihnZXRfY2xhc3MoJGNvbnRlbnRvYmopKSAhPSBzdHJ0b2xvd2VyKCRjb250ZW50X3R5cGUpKQoJewoJCWNvcHljb250ZW50b2JqKCRjb250ZW50b2JqLCAkY29udGVudF90eXBlLCAkcGFybSk7Cgl9Cgl1cGRhdGVjb250ZW50b2JqKCRjb250ZW50b2JqLCB0cnVlLCAkcGFybSk7CgoKCQoJJHRtcGZuYW1lID0gY3JlYXRldG1wZm5hbWUoJGNvbnRlbnRvYmopOwoJJF9TRVNTSU9OWydjbXNfcHJldmlldyddID0gc3RyX3JlcGxhY2UoJ1xcJywnLycsJHRtcGZuYW1lKTsKCSR0bXB2YXIgPSBzdWJzdHIoc3RyX3NodWZmbGUobWQ1KCR0bXBmbmFtZSkpLC0zKTsKCSR1cmwgPSAkY29uZmlnWyJyb290X3VybCJdLicvaW5kZXgucGhwPycuJGNvbmZpZ1sncXVlcnlfdmFyJ10uIj1fX0NNU19QUkVWSUVXX1BBR0VfXyZyPSR0bXB2YXIiOyAvLyB0ZW1wb3JhcnkJCgloZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHVybCk7CgkKCWV4aXQ7Cn0KZWxzZQp7Cglzd2l0Y2goJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddKQoJewoJCWRlZmF1bHQ6CgkJCSRtb2RlID0gJyc7CgkJCWJyZWFrOwoKCQljYXNlICdzdHlsZXNoZWV0JzoKCQkJJG1vZGUgPSAnY3NzJzsKCQkJYnJlYWs7CgoJCWNhc2UgJ3RlbXBsYXRlJzoKCQljYXNlICdnY2InOgoJCQkkbW9kZSA9ICdodG1sJzsKCQkJYnJlYWs7Cgl9CgoJJHNtYXJ0eS0+YXNzaWduKCdyZXN0b3JlbGluaycsCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlc3RvcmUnLCAkcmV0dXJuaWQsCgkJCSAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmVzdG9yZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCSAgICAgYXJyYXkoJGNvbnRlbnRpbmZvWydyZXZpc2lvbl9pZCddKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpLicgJy4KCgkgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlc3RvcmUnLCAkcmV0dXJuaWQsCgkJCSAgICAgJHRoaXMtPkxhbmcoJ3Jlc3RvcmUnKSwKCQkJICAgICBhcnJheSgncmV2aXNpb25faWQnID0+ICRjb250ZW50aW5mb1sncmV2aXNpb25faWQnXSkpKTsKCQoJCgkkc21hcnR5LT5hc3NpZ24oJ2NvbnRlbnRfbmFtZScsICR0aGlzLT5MYW5nKCRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSkgLiI6ICIgLiAkcGFyYW1zWyduYW1lJ10pOwoJJHNtYXJ0eS0+YXNzaWduKCdyZXZpc2lvbl9ucicsICRjb250ZW50aW5mb1sncmV2aXNpb25fbnInXSk7Cgkkc21hcnR5LT5hc3NpZ24oJ3BhZ2ViYWNrX3VybCcsIGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkbWluX2RldGFpbHMnLCAkcmV0dXJuaWQsIGFycmF5KAoJCSdtb2R1bGVfbmFtZScgPT4gKCRjb250ZW50aW5mb1sncmVjeWNsZSddPydyZWN5Y2xlJzokY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10pLAoJCSdyZWN5Y2xlX21vZHVsZV9uYW1lJyA9PiAoJGNvbnRlbnRpbmZvWydyZWN5Y2xlJ10/JGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddOicnKSwKCQknY29udGVudF9pZCcgPT4gJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10KCSkpKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ3BhZ2ViYWNrX3RleHQnLCAkdGhpcy0+TGFuZygiYmFjayIpKTsKCSRzbWFydHktPmFzc2lnbignY29kZScsIGh0bWxzcGVjaWFsY2hhcnMoJG9sZGNvbnRlbnQpKTsKCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJldmlldy50cGwnKTsKCSRhY2UgPSBSZXZpc2lvbnM6OkdldE1vZHVsZUluc3RhbmNlKCdBY2VFZGl0b3InKTsKCWlmIChpc19vYmplY3QoJGFjZSkpIHsKCQkkYWNlLT5Eb0FjdGlvbignaGVhZCcsICRpZCwgYXJyYXkoKSk7CgkJJGFjZS0+RG9BY3Rpb24oJ2RlZmF1bHQnLCAkaWQsIGFycmF5KCdkaXZpZCcgPT4gJ3ByZXZpZXdjb2RlJywgJ3dpZHRoJyA9PiAnNjAwJywgJ2hlaWdodCcgPT4gNTAwLCAnbW9kZScgPT4gJG1vZGUpKTsKCX0KfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCmlmIChpc3NldCgkcGFyYW1zWyd0YWJfbWVzc2FnZSddKSkgewoJZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJHBhcmFtc1sndGFiX21lc3NhZ2UnXSkpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snZXJyb3JzJ10pICYmIGNvdW50KCRwYXJhbXNbJ2Vycm9ycyddKSkgewoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkcGFyYW1zWydlcnJvcnMnXSk7Cn0KCgplY2hvICR0aGlzLT5fZG9uYXRlOwoKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwppZiAoIWVtcHR5KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpIHsKCSR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107Cn0gZWxzZSB7CgkkdGFiID0gJ3BhZ2V0YWInOwp9CgppZigkdGhpcy0+SGFzUGVybSgncGFnZVBlcm1zJykpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncGFnZXRhYicsICR0aGlzLT5MYW5nKCdwYWdlcycpLCAoJHRhYiA9PSAncGFnZXRhYicpKTsKfQppZigkdGhpcy0+SGFzUGVybSgnaHRtbFBlcm1zJykpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZ2NidGFiJywgJHRoaXMtPkxhbmcoJ2djYnMnKSwgKCR0YWIgPT0gJ2djYnRhYicpKTsKfQppZigkdGhpcy0+SGFzUGVybSgndGVtcGxhdGVQZXJtcycpKQp7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3RlbXBsYXRldGFiJywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlcycpLCAoJHRhYiA9PSAndGVtcGxhdGV0YWInKSk7Cn0KaWYoJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignc3R5bGVzaGVldHRhYicsICR0aGlzLT5MYW5nKCdjc3MnKSwgKCR0YWIgPT0gJ3N0eWxlc2hlZXR0YWInKSk7Cn0KaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JykgPT0gZmFsc2UgJiYgKCR0aGlzLT5IYXNQZXJtKCdwYWdlUGVybXMnKSB8fCAkdGhpcy0+SGFzUGVybSgnaHRtbFBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ3RlbXBsYXRlUGVybXMnKSB8fCAkdGhpcy0+SGFzUGVybSgnY3NzUGVybXMnKSkpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncmVjeWNsZXRhYicsICR0aGlzLT5MYW5nKCdyZWN5Y2xlJyksICgkdGFiID09ICdyZWN5Y2xldGFiJykpOwp9CmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc19vcHRpb25zJykpCnsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignb3B0aW9udGFiJywgJHRoaXMtPkxhbmcoJ29wdGlvbnMnKSwgKCR0YWIgPT0gJ29wdGlvbnRhYicpKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKCmlmKCR0aGlzLT5IYXNQZXJtKCdwYWdlUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3BhZ2V0YWInLCAkcGFyYW1zKTsKCSRxdWVyeSA9ICdTRUxFQ1QgYS5jb250ZW50X2lkLCBhLm1vZHVsZV9uYW1lLCBiLmNvbnRlbnRfbmFtZSBBUyBuYW1lLCBiLmhpZXJhcmNoeSwgQ09VTlQoKikgQVMgcmV2aXNpb25zIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudCBiIFdIRVJFIGEubW9kdWxlX25hbWUgPSAiY29udGVudCIgQU5EIGEuY29udGVudF9pZCA9IGIuY29udGVudF9pZCBHUk9VUCBCWSBhLmNvbnRlbnRfaWQgT1JERVIgQlkgYi5oaWVyYXJjaHknOwoJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeSwgJGlkLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5IYXNQZXJtKCdodG1sUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2djYnRhYicsICRwYXJhbXMpOwoJJHF1ZXJ5ID0gJ1NFTEVDVCBhLmNvbnRlbnRfaWQsIGEubW9kdWxlX25hbWUsIGIuaHRtbGJsb2JfbmFtZSBBUyBuYW1lLCBDT1VOVCgqKSBBUyByZXZpc2lvbnMgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYSwgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdodG1sYmxvYnMgYiBXSEVSRSBhLm1vZHVsZV9uYW1lID0gImdjYiIgQU5EIGEuY29udGVudF9pZCA9IGIuaHRtbGJsb2JfaWQgR1JPVVAgQlkgYS5jb250ZW50X2lkIE9SREVSIEJZIGIuaHRtbGJsb2JfbmFtZSc7CgkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5LCAkaWQsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPkhhc1Blcm0oJ3RlbXBsYXRlUGVybXMnKSkKewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RlbXBsYXRldGFiJywgJHBhcmFtcyk7CgkkcXVlcnkgPSAnU0VMRUNUIGEuY29udGVudF9pZCwgYS5tb2R1bGVfbmFtZSwgYi50ZW1wbGF0ZV9uYW1lIEFTIG5hbWUsIENPVU5UKCopIEFTIHJldmlzaW9ucyBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhLCAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ3RlbXBsYXRlcyBiIFdIRVJFIGEubW9kdWxlX25hbWUgPSAidGVtcGxhdGUiIEFORCBhLmNvbnRlbnRfaWQgPSBiLnRlbXBsYXRlX2lkIEdST1VQIEJZIGEuY29udGVudF9pZCBPUkRFUiBCWSBiLnRlbXBsYXRlX25hbWUnOwoJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeSwgJGlkLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5IYXNQZXJtKCdjc3NQZXJtcycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYignc3R5bGVzaGVldHRhYicsICRwYXJhbXMpOwoJJHF1ZXJ5ID0gJ1NFTEVDVCBhLmNvbnRlbnRfaWQsIGEubW9kdWxlX25hbWUsIGIuY3NzX25hbWUgQVMgbmFtZSwgQ09VTlQoKikgQVMgcmV2aXNpb25zIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIGEsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY3NzIGIgV0hFUkUgYS5tb2R1bGVfbmFtZSA9ICJzdHlsZXNoZWV0IiBBTkQgYS5jb250ZW50X2lkID0gYi5jc3NfaWQgR1JPVVAgQlkgYS5jb250ZW50X2lkIE9SREVSIEJZIGIuY3NzX25hbWUnOwoJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeSwgJGlkLCAkcmV0dXJuaWQpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpID09IGZhbHNlICYmICgkdGhpcy0+SGFzUGVybSgncGFnZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2h0bWxQZXJtcycpIHx8ICR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYigncmVjeWNsZXRhYicsICRwYXJhbXMpOwoJJHF1ZXJ5ID0gJ1NFTEVDVCBhLmNvbnRlbnRfaWQsIGEubW9kdWxlX25hbWUsIGEuY29udGVudF9uYW1lIEFTIG5hbWUsIGEuaGllcmFyY2h5LCBhLmRlcHRoLCBDT1VOVChiLnJldmlzaW9uX2lkKSBBUyByZXZpc2lvbnMgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBhIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgYiBPTiBhLmNvbnRlbnRfaWQgPSBiLmNvbnRlbnRfaWQgV0hFUkUgJzsKCSR3aGVyZSA9IGFycmF5KCk7CglpZigkdGhpcy0+SGFzUGVybSgncGFnZVBlcm1zJykpCgl7CgkJJHdoZXJlPSAiYS5tb2R1bGVfbmFtZSA9ICdjb250ZW50JyI7CgkJJHF1ZXJ5MiA9ICRxdWVyeSAuICcgJyAuICR3aGVyZSAuICcgR1JPVVAgQlkgYi5jb250ZW50X2lkIE9SREVSIEJZIGEuaGllcmFyY2h5LCBhLm1vZHVsZV9uYW1lJzsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+TGFuZygncGFnZXMnKSk7CgkJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeTIsICRpZCwgJHJldHVybmlkLCB0cnVlKTsKCX0KCWlmKCR0aGlzLT5IYXNQZXJtKCdodG1sUGVybXMnKSkKCXsKCQkkd2hlcmUgPSAiYS5tb2R1bGVfbmFtZSA9ICdnY2InIjsKCQkkcXVlcnkyID0gJHF1ZXJ5IC4gJyAnIC4gJHdoZXJlIC4gJyBHUk9VUCBCWSBiLmNvbnRlbnRfaWQgT1JERVIgQlkgYS5tb2R1bGVfbmFtZSc7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ2djYnMnKSk7CgkJJHRoaXMtPkxpc3RDb250ZW50KCRxdWVyeTIsICRpZCwgJHJldHVybmlkLCB0cnVlKTsKCX0KCWlmKCR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykpCgl7CgkJJHdoZXJlID0gImEubW9kdWxlX25hbWUgPSAndGVtcGxhdGUnIjsKCQkkcXVlcnkyID0gJHF1ZXJ5IC4gJyAnIC4gJHdoZXJlIC4gJyBHUk9VUCBCWSBiLmNvbnRlbnRfaWQgT1JERVIgQlkgYS5tb2R1bGVfbmFtZSc7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlcycpKTsKCQkkdGhpcy0+TGlzdENvbnRlbnQoJHF1ZXJ5MiwgJGlkLCAkcmV0dXJuaWQsIHRydWUpOwoJfQoJaWYoJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpCgl7CgkJJHdoZXJlID0gImEubW9kdWxlX25hbWUgPSAnc3R5bGVzaGVldCciOwoJCSRxdWVyeTIgPSAkcXVlcnkgLiAnICcgLiAkd2hlcmUgLiAnIEdST1VQIEJZIGIuY29udGVudF9pZCBPUkRFUiBCWSBhLm1vZHVsZV9uYW1lJzsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+TGFuZygnY3NzJykpOwoJCSR0aGlzLT5MaXN0Q29udGVudCgkcXVlcnkyLCAkaWQsICRyZXR1cm5pZCwgdHJ1ZSk7Cgl9CgkKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfb3B0aW9ucycpKQp7CgllY2hvICR0aGlzLT5TdGFydFRhYignb3B0aW9udGFiJywgJHBhcmFtcyk7CglpbmNsdWRlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9mdW5jdGlvbi5hZG1pbl9vcHRpb250YWIucGhwJzsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.restore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSB8fCAhaXNzZXQoJHBhcmFtc1sncmV2aXNpb25faWQnXSkpCglyZXR1cm47CgpyZXF1aXJlX29uY2UoJ2VkaXRjb250ZW50X2V4dHJhLnBocCcpOwkJCgkKaWYoJHBhcmFtc1sncmV2aXNpb25faWQnXSA+IDApIHsKCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcGFyYW1zWydyZXZpc2lvbl9pZCddKTsKfQoKJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCi8vIFJFU1RPUkUgUkVDWUNMRUQgQ09OVEVOVAppZigkcGFyYW1zWydyZXZpc2lvbl9pZCddIDwgMCB8fCAkY29udGVudGluZm9bJ3JlY3ljbGUnXSkKewoJJG1vZHVsZV9uYW1lID0gaXNzZXQoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddKSA/ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSA6ICRwYXJhbXNbJ21vZHVsZV9uYW1lJ107CgkkY29udGVudF9pZCA9IGlzc2V0KCRjb250ZW50aW5mb1snY29udGVudF9pZCddKSA/ICRjb250ZW50aW5mb1snY29udGVudF9pZCddIDogJHBhcmFtc1snY29udGVudF9pZCddOwoKCSRjb250ZW50X29iaiA9ICR0aGlzLT5SZXN0b3JlUmVjeWNsZWRDb250ZW50KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpOwoJCglpZiAoJGNvbnRlbnRfb2JqID09PSBGQUxTRSkgewoJCSRlcnJvcnMgPSAkdGhpcy0+TGFuZygicmVzdG9yZWVycm9yIik7CgkJaWYgKGlzX2FycmF5KCR0aGlzLT5fZXJyb3JzKSkgJGVycm9ycyAuPSAiOiAiIC4gJHRoaXMtPl9lcnJvcnNbMF07CgkJCgkJJHBhcmFtcyA9IGFycmF5KCdtb2R1bGVfZXJyb3InPT4gJGVycm9ycywnYWN0aXZlX3RhYicgPT4gJ3JlY3ljbGV0YWInKTsKCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwoJCXJldHVybjsKCX0KCQoJJGRiLT5FeGVjdXRlKCdVUERBVEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFNFVCBjb250ZW50X2lkID0gPyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JywgYXJyYXkoJGNvbnRlbnRfb2JqLT5JZCgpLCAkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgkkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8nLCBhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgoJaWYgKCRtb2R1bGVfbmFtZSA9PSAiY29udGVudCIpIHsKCQlhdWRpdCgkY29udGVudF9vYmotPklkKCksICdSZXZpc2lvbiBSZXN0b3JlIFJlY3ljbGVkIFBhZ2U6ICcuJGNvbnRlbnRfb2JqLT5OYW1lKCksICdSZXN0b3JlZCcpOwoJCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ21zZ19yZXN0b3JlZF9yZWN5Y2xlJywnYWN0aXZlX3RhYicgPT4gJG1vZHVsZV9uYW1lIC4gJ3RhYicpOwoJfQoJZWxzZSB7CgkJYXVkaXQoJGNvbnRlbnRfb2JqLT5pZCwgJ1JldmlzaW9uIFJlc3RvcmUgUmVjeWNsZWQgJy4kbW9kdWxlX25hbWUuJzogJy4kY29udGVudF9vYmotPm5hbWUsICdSZXN0b3JlZCcpOwoJCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ21zZ19yZXN0b3JlZF9yZWN5Y2xlJywnYWN0aXZlX3RhYicgPT4gJG1vZHVsZV9uYW1lIC4gJ3RhYicpOwoJfQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKCXJldHVybjsKCgkKfQoKJG9sZGNvbnRlbnQgPSAkY29udGVudGluZm9bJ2NvbnRlbnQnXTsKCmlmKCRwYXJhbXNbJ3JldmlzaW9uX2lkJ10gPiAwKQp7Cglzd2l0Y2goJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddKQoJewoJCWRlZmF1bHQ6CgkJCXJldHVybiBmYWxzZTsKCQoJCWNhc2UgJ2NvbnRlbnQnOgoJCQkKCQkJJGNvbnRlbnRvcHMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgdHJ1ZSk7CgkKCQkJJHJldmNvbnRlbnRvYmogPSBVbnNlcmlhbGl6ZU9iamVjdCgkb2xkY29udGVudCk7CgkJCQoJCQkkY29udGVudF90eXBlID0gZ2V0X2NsYXNzKCRyZXZjb250ZW50b2JqKTsKCQkJJHBhcm0gPSBhcnJheSgpOwoJCQkkY29udGVudGJsb2NrcyA9IFVuc2VyaWFsaXplT2JqZWN0KCRjb250ZW50aW5mb1snY29udGVudGJsb2NrcyddKTsKCQkJCgkJCWZvcmVhY2goYXJyYXlfa2V5cygkY29udGVudGJsb2NrcykgYXMgJGJsb2NrX25hbWUpCgkJCXsKCQkJCSRjb250ZW50ID0gJHJldmNvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrX25hbWUpOwoJCQkJaWYgKGlzX2FycmF5KCRjb250ZW50KSkgJGNvbnRlbnQgPSAkY29udGVudFsnY29udGVudCddOwoJCQkJJHBhcm1bJGJsb2NrX25hbWVdID0gJGNvbnRlbnQ7CgkJCX0KCQkJCgkJCWlmIChzdHJ0b2xvd2VyKGdldF9jbGFzcygkY29udGVudG9iaikpICE9IHN0cnRvbG93ZXIoJGNvbnRlbnRfdHlwZSkpCgkJCXsKCQkJCWNvcHljb250ZW50b2JqKCRjb250ZW50b2JqLCAkY29udGVudF90eXBlLCAkcGFybSk7CgkJCX0KCQkJdXBkYXRlY29udGVudG9iaigkY29udGVudG9iaiwgdHJ1ZSwgJHBhcm0pOwoJCQkkY29udGVudG9iai0+U2V0TGFzdE1vZGlmaWVkQnkoZ2V0X3VzZXJpZCgpKTsKCQkJCgkJCSRyZXMgPSAkY29udGVudG9iai0+VmFsaWRhdGVEYXRhKCk7CgkJCWlmKCAkcmVzID09PSBGQUxTRSApIHsKCQkJCS8vIGV2ZXJ5dGhpbmcgaXMgb2theS4uLiBzYXZlIGl0CgkJCQkvLyBhbmQgbWFrZSBzdXJlIHRoZSBoaWVyYXJjaHkgc3R1ZmYgd29ya3MuCgkJCQkkY29udGVudG9iai0+U2F2ZSgpOwoJCQkJJHRoaXMtPkF1ZGl0KCAkY29udGVudG9iai0+SWQoKSwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAiUmVzdG9yZSBwYWdlOiAiLiRjb250ZW50b2JqLT5NZW51VGV4dCgpKTsKCQkJCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ21zZ19yZXN0b3JlZCcsJ2FjdGl2ZV90YWInID0+ICRjb250ZW50aW5mb1snbW9kdWxlX25hbWUnXSAuICd0YWInKTsKCQkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7CgkJCX0KCQkJZWxzZSAgewoJCQkJJHBhcmFtcyA9IGFycmF5KCdlcnJvcnMnPT4gJHJlcywnYWN0aXZlX3RhYicgPT4gJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddIC4gJ3RhYicpOwoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkcGFyYW1zKTsKCQkJfQoJCQlicmVhazsKCQoJCWNhc2UgJ3N0eWxlc2hlZXQnOgoJCQkkc3R5bGVzaGVldG9wcyA9IGNtc21zKCktPkdldFN0eWxlc2hlZXRPcGVyYXRpb25zKCk7CgkJCSRzdHlsZXNoZWV0ID0gJHN0eWxlc2hlZXRvcHMtPkxvYWRTdHlsZXNoZWV0QnlJRCgkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSk7CgkJCSRzdHlsZXNoZWV0LT52YWx1ZSA9ICRvbGRjb250ZW50OwoJCQkkc3R5bGVzaGVldC0+U2F2ZSgpOwoJCQlicmVhazsKCQoJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJJHRlbXBsYXRlb3BzID0gY21zbXMoKS0+R2V0VGVtcGxhdGVPcGVyYXRpb25zKCk7CgkJCSR0ZW1wbGF0ZSA9ICR0ZW1wbGF0ZW9wcy0+TG9hZFRlbXBsYXRlQnlJRCgkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSk7CgkJCSR0ZW1wbGF0ZS0+Y29udGVudCA9ICRvbGRjb250ZW50OwoJCQkkdGVtcGxhdGUtPlNhdmUoKTsKCQkJYnJlYWs7CgkKCQljYXNlICdnY2InOgoJCQkkZ2Nib3BzID0gY21zbXMoKS0+R2V0R2xvYmFsQ29udGVudE9wZXJhdGlvbnMoKTsKCQkJJGdjYiA9ICRnY2JvcHMtPkxvYWRIdG1sQmxvYkJ5SUQoJGNvbnRlbnRpbmZvWydjb250ZW50X2lkJ10pOwoJCQkkZ2NiLT5jb250ZW50ID0gJG9sZGNvbnRlbnQ7CgkJCSRnY2ItPlNhdmUoKTsKCQkJYnJlYWs7CgkJCQoJCQkKCQkJCgl9Cn0KCiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJHRoaXMtPkxhbmcoJ21zZ19yZXN0b3JlZCcpLCdhY3RpdmVfdGFiJyA9PiAkY29udGVudGluZm9bJ21vZHVsZV9uYW1lJ10gLiAndGFiJyk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcmFtcyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSkKCXJldHVybjsKCiRwYXJtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnb3B0aW9udGFiJyk7CiRkYiA9IGNtc21zKCktPkdldERiKCk7CmlmKGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZWFsbGJ1dHN1Ym1pdCddKSkKewoJJHRoaXMtPkRlbGV0ZUFsbFJldmlzaW9uc0J1dCgkcGFyYW1zWydkZWxldGVfYWxsX2J1dCddKTsKCSRwYXJtc1snbWVzc2FnZSddID0gJ3JldmlzaW9uc2RlbGV0ZWQnOwp9CmVsc2VpZihpc3NldCgkcGFyYW1zWydkZWxldGVvbGRlcnRoYW5zdWJtaXQnXSkpCnsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIERJU1RJTkNUIHJldmlzaW9uX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIGNyZWF0ZV90aW1lIDwgPycsIGFycmF5KGRhdGUoJ1ktbS1kIEg6aTpzJywgc3RydG90aW1lKCRwYXJhbXNbJ2RlbGV0ZV9vbGRlcl90aGFuJ10pKSkpOwoJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJvd1sncmV2aXNpb25faWQnXSkpOwoJCSRkYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX2RpZmYgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJvd1sncmV2aXNpb25faWQnXSkpOwoJfQoJJHBhcm1zWydtZXNzYWdlJ10gPSAncmV2aXNpb25zZGVsZXRlZCc7Cn0KZWxzZQp7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50JywgJHBhcmFtc1snc3RvcmVfcmV2aXNpb25zX2NvdW50J10pOwoKCSRkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCA9IGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50J10pID8gJzEnIDogJzAnOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JywgJGRlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50KTsKCS8vIHdoZW4gYWN0aXZhdGVkLCBkZWxldGUgb3JwaGFuZWQgZGF0YQoJaWYoJGRlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50ID09IDEpCgl7CgkJJHRoaXMtPnZvaWRSZWN5Y2xlQmluKCk7Cgl9CgkkcGFybXNbJ21lc3NhZ2UnXSA9ICdvcHRpb25zdXBkYXRlZCc7Cn0KCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/backend.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LkRpZmZlcmVuY2VzIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKCWJvcmRlci1zcGFjaW5nOiAwOwoJZW1wdHktY2VsbHM6IHNob3c7Cn0KCi5EaWZmZXJlbmNlcyB0aGVhZCB0aCB7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7CgliYWNrZ3JvdW5kOiAjYWFhOwoJY29sb3I6ICMwMDA7CglwYWRkaW5nOiA0cHg7Cn0KLkRpZmZlcmVuY2VzIHRib2R5IHRoIHsKCXRleHQtYWxpZ246IHJpZ2h0OwoJYmFja2dyb3VuZDogI2NjYzsKCXdpZHRoOiA0ZW07CglwYWRkaW5nOiAxcHggMnB4OwoJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwMDsKCXZlcnRpY2FsLWFsaWduOiB0b3A7Cglmb250LXNpemU6IDEzcHg7Cn0KCi5EaWZmZXJlbmNlcyB0ZCB7CglwYWRkaW5nOiAxcHggMnB4OwoJZm9udC1mYW1pbHk6IENvbnNvbGFzLCBtb25vc3BhY2U7Cglmb250LXNpemU6IDEzcHg7Cn0KLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSB0ZC5MZWZ0LAouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIHRkLlJpZ2h0ewoJd2lkdGg6NDclOwp9Ci5EaWZmZXJlbmNlc1NpZGVCeVNpZGUgLkNoYW5nZUluc2VydCB0ZC5MZWZ0IHsKCWJhY2tncm91bmQ6ICNkZmQ7Cn0KCi5EaWZmZXJlbmNlc1NpZGVCeVNpZGUgLkNoYW5nZUluc2VydCB0ZC5SaWdodCB7CgliYWNrZ3JvdW5kOiAjY2ZjOwp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VEZWxldGUgdGQuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZjg4Owp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VEZWxldGUgdGQuUmlnaHQgewoJYmFja2dyb3VuZDogI2ZhYTsKfQoKLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSAuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZmU5Owp9CgouRGlmZmVyZW5jZXNTaWRlQnlTaWRlIC5DaGFuZ2VSZXBsYWNlIC5SaWdodCB7CgliYWNrZ3JvdW5kOiAjZmQ4Owp9CgouRGlmZmVyZW5jZXMgaW5zLCAuRGlmZmVyZW5jZXMgZGVsIHsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSBkZWx7CgliYWNrZ3JvdW5kOiNlOTk7Cn0KLkRpZmZlcmVuY2VzU2lkZUJ5U2lkZSAuQ2hhbmdlUmVwbGFjZSBpbnN7CgliYWNrZ3JvdW5kOiAjOWU5Owp9CgouRGlmZmVyZW5jZXMgLlNraXBwZWQgewoJYmFja2dyb3VuZDogI2Y3ZjdmNzsKfQoKLkRpZmZlcmVuY2VzSW5saW5lIC5DaGFuZ2VSZXBsYWNlIC5MZWZ0LAouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZURlbGV0ZSAuTGVmdCB7CgliYWNrZ3JvdW5kOiAjZmRkOwp9CgouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZVJlcGxhY2UgLlJpZ2h0LAouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZUluc2VydCAuUmlnaHQgewoJYmFja2dyb3VuZDogI2RmZDsKfQoKLkRpZmZlcmVuY2VzSW5saW5lIC5DaGFuZ2VSZXBsYWNlIGlucyB7CgliYWNrZ3JvdW5kOiAjOWU5Owp9CgouRGlmZmVyZW5jZXNJbmxpbmUgLkNoYW5nZVJlcGxhY2UgZGVsIHsKCWJhY2tncm91bmQ6ICNlOTk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/function.admin_optiontab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBUT0RPOiBVc2UgRGF0ZXRpbWUgUGlja2VyIGZvciBkZWxldGVfb2xkZXJfdGhhbiBmaWVsZAoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdyZXZpc2lvbnNfb3B0aW9ucycpKQoJcmV0dXJuOwoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3VwZGF0ZW9wdGlvbnMnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3N0b3JlX3JldmlzaW9uc19jb3VudCcsICR0aGlzLT5DcmVhdGVJbnB1dE51bWJlcigkaWQsICdzdG9yZV9yZXZpc2lvbnNfY291bnQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50JywgJzAnKSwgJ21pbj0iMCIgbWF4PSIxMDAiJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnLCAnMScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcsICcwJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZWxldGVfYWxsX2J1dCcsICR0aGlzLT5DcmVhdGVJbnB1dE51bWJlcigkaWQsICdkZWxldGVfYWxsX2J1dCcsIDIwLCAnbWluPSIxIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfZGVsZXRlX2FsbF9idXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnZGVsZXRlYWxsYnV0c3VibWl0JywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGVsZXRlX29sZGVyX3RoYW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2RlbGV0ZV9vbGRlcl90aGFuJywgZGF0ZSgnWS1tLWQnLCBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpKSwgMjAsIDEwKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X2RlbGV0ZV9vbGRlcl90aGFuJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2RlbGV0ZW9sZGVydGhhbnN1Ym1pdCcsICR0aGlzLT5MYW5nKCdkZWxldGUnKSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdvcHRpb25zc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ29wdGlvbnRhYi50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/backend.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[alF1ZXJ5KGZ1bmN0aW9uKCQpewoJLy8gUE9QVVAgTElOS1MKCSQoJ2EucG9wdXAnKS5jbGljayhmdW5jdGlvbihlKXsKCQl3aW5kb3cub3BlbigkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJCh0aGlzKS5hdHRyKCd0aXRsZScpLCd3aWR0aD04MDAsIGhlaWdodD02MDAsc2Nyb2xsYmFycz15ZXMnKTsKCQllLnByZXZlbnREZWZhdWx0KCk7CgkJcmV0dXJuIGZhbHNlOwoJfSk7CgkvLyBEQVRFUElDS0VSIEZJRUxEUwoJJCgnLmRhdGVwaWNrZXIgaW5wdXQnKS5kYXRlcGlja2VyKHsKCQlkYXRlRm9ybWF0OiAneXktbW0tZGQnCgl9KQoJLy8gUEFHRUJBQ0sgTElOSwoJaWYodHlwZW9mIFBBR0VCQUNLX1VSTCAhPSAndW5kZWZpbmVkJykKCXsKCQkkKCdhLnBhZ2ViYWNrJykuYXR0cignaHJlZicsIFBBR0VCQUNLX1VSTCkudGV4dChQQUdFQkFDS19URVhUKQoJfQp9KTs=]]></data>
	</file>
	<file>
	  <filename>/js/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[PD9waHAKLy8gdGFicwokbGFuZ1sncGFnZXMnXSA9ICdQYWdlcyc7CiRsYW5nWydnY2JzJ10gPSAnR2xvYmFsIENvbnRlbnQgQmxvY2tzJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydjc3MnXSA9ICdDU1MnOwokbGFuZ1sncmVjeWNsZSddID0gJ1JlY3ljbGluZyc7CiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7CiRsYW5nWydiYWNrJ10gPSAnR28gb25lIHBhZ2UgYmFjayc7CgovLyByZXZpc2lvbnMKJGxhbmdbJ25vcmV2aXNpb25zJ10gPSAnVGhlcmUgYXJlIG5vIHJldmlzaW9ucyB5ZXQuJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ3JldmlzaW9ucyddID0gJ1JldmlzaW9ucyc7CiRsYW5nWydzaG93ZGV0YWlscyddID0gJ1Nob3cgZGV0YWlscyc7CgovLyBkZXRhaWxzCiRsYW5nWydyZXZpc2lvbiddID0gJ1JldmlzaW9uJzsKJGxhbmdbJ2NyZWF0ZV9kYXRlJ10gPSAnQ2hhbmdlcyB2ZXJzaW9uIGZyb20nOwokbGFuZ1sndXNlciddID0gJ1VzZXInOwokbGFuZ1sncHJldmlldyddID0gJ1ByZXZpZXcnOwokbGFuZ1sndW5kbyddID0gJ1VuZG8nOwokbGFuZ1snY29tcGFyZSddID0gJ0NvbXBhcmUnOwokbGFuZ1snY29tcGFyZV90b29sdGlwJ10gPSAnQ29tcGFyZSB3aXRoIGN1cnJlbnQnOwokbGFuZ1snbGFzdF9hY3RpdmUnXSA9ICdMYXN0IGFjdGl2ZSB2ZXJzaW9uJzsKCi8vIGNvbXBhcmUKJGxhbmdbJ3JldmlzaW9uc19pZGVudGljYWwnXSA9ICdUaGUgcmV2aXNpb25zIGFyZSBpZGVudGljYWwuJzsKJGxhbmdbJ2NvbnRlbnRibG9jayddID0gJ0NvbnRlbnQgQmxvY2snOwoKLy8gcmVzdG9yZQokbGFuZ1sncmVzdG9yZSddID0gJ1Jlc3RvcmUgQ29udGVudCc7CiRsYW5nWydyZXN0b3JlZXJyb3InXSA9ICdUaGUgcmV2aXNpb24gY2FuIG5vdCByZXN0b3JlJzsKCi8vIG9wdGlvbnMKJGxhbmdbJ2dlbmVyYWxfb3B0aW9ucyddID0gJ0dlbmVyYWwgT3B0aW9ucyc7CiRsYW5nWydzdG9yZV9yZXZpc2lvbnNfY291bnQnXSA9ICdOdW1iZXIgb2Ygc3RvcmVkIHJldmlzaW9ucyBwZXIgY29udGVudCc7CiRsYW5nWydzdG9yZV9yZXZpc2lvbnNfdW5saW1pdGVkJ10gPSAnU2V0IDAgZm9yIHVubGltaXRlZCBzdG9yYWdlLic7CiRsYW5nWydkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCddID0gJ0RlbGV0ZSByZXZpc2lvbnMgd2hlbiBjb250ZW50IGlzIGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlX3JldmlzaW9ucyddID0gJ0RlbGV0ZSBSZXZpc2lvbnMnOwokbGFuZ1snZGVsZXRlX2FsbF9idXQnXSA9ICdEZWxldGUgYWxsIHJldmlzaW9ucyBidXQgdGhlIGxhdGVzdCBYIG9mIGV2ZXJ5IGNvbnRlbnQnOwokbGFuZ1snZGVsZXRlX29sZGVyX3RoYW4nXSA9ICdEZWxldGUgYWxsIHJldmlzaW9ucyBvbGRlciB0aGFuJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ1RoZSBvcHRpb25zIGhhdmUgc3VjY2Vzc2Z1bGx5IGJlZW4gdXBkYXRlZC4nOwokbGFuZ1sncmV2aXNpb25zZGVsZXRlZCddID0gJ1RoZSByZXZpc2lvbnMgaGF2ZSBzdWNjZXNzZnVsbHkgYmVlbiBkZWxldGVkLic7CgovLyBnbG9iYWwKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCBEZWZhdWx0JzsKJGxhbmdbJ2NoYW5nZXNzYXZlZCddID0gJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkLic7CiRsYW5nWydmaXJzdHBhZ2UnXSA9ICcmbHQ7Jmx0Oyc7CiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOwokbGFuZ1snbmV4dHBhZ2UnXSA9ICcmZ3Q7JzsKJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOwoKLy8gbW9kdWxlCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdSZXZpc2lvbnMnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdSZXZpc2lvbnMgbG9ncyBjaGFuZ2VzIGluIGNvbnRlbnQsIHRlbXBsYXRlcywgQ1NTLCBHQ0JzIGFuZCBlbmFibGVzIHRoZSB3ZWIgZGV2ZWxvcGVyIHRvIHZpZXcgZGlmZiBvciByZXZlcnQgdG8gYW4gZWFybGllciB2ZXJzaW9uIG9mIGl0Lic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1JldmlzaW9ucyBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaW5zdGFsbGVkJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdSZXZpc2lvbnMgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIHVuaW5zdGFsbGVkJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJyc7CiRsYW5nWydnY2InXSA9ICJHbG9iYWwgQ29udGVudCBCbG9jayI7CiRsYW5nWydzdHlsZXNoZWV0J10gPSAiU3R5bGVzaGVldCI7CiRsYW5nWyd0ZW1wbGF0ZSddID0gIlRlbXBsYXRlIjsKJGxhbmdbJ2NvbnRlbnQnXSA9ICJDb250ZW50IjsKCi8vIHJlc3RvcmUKJGxhbmdbJ21zZ19yZXN0b3JlZCddID0gIlN1Y2Vzc2Z1bCByZXN0b3JlIHJldmlzaW9uIjsKJGxhbmdbJ21zZ19yZXN0b3JlZF9yZWN5Y2xlJ10gPSAiU3VjZXNzZnVsbCByZXN0b3JlIGNvbnRlbnQgZnJvbSByZWN5Y2xlIjsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja3MnXSA9ICJUaGVyZSBpcyBhbiBlcnJvciB3aWR0aCBjb250ZW50YmxvY2tzIjsKCi8vIG1vZHVsZSBoZWxwCiRsYW5nWydnZW5lcmFsJ10gPSAnR2VuZXJhbCc7CiRsYW5nWydwZXJtaXNzaW9ucyddID0gJ1Blcm1pc3Npb25zJzsKJGxhbmdbJ2Fib3V0J10gPSAnQWJvdXQnOwokbGFuZ1snaGVscF9nZW5lcmFsJ10gPSAnPGgzPkdlbmVyYWwgSW5mbzwvaDM+Cgk8cD5SZXZpc2lvbnMgbG9ncyBjaGFuZ2VzIGluIGNvbnRlbnQsIHRlbXBsYXRlcywgQ1NTLCBHQ0JzIGFuZCBlbmFibGVzIHRoZSB3ZWIgZGV2ZWxvcGVyIHRvIHZpZXcgZGlmZiBvciByZXZlcnQgdG8gYW4gZWFybGllciB2ZXJzaW9uIG9mIGl0LjwvcD4nOwokbGFuZ1snaGVscF9wZXJtaXNzaW9ucyddID0gJzxoMz5QZXJtaXNzaW9uczwvaDM+Cgk8cD5Zb3UgY2FuIHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9ucyB1bmRlciBVc2VycyAmIEdyb3VwcyA+IEdyb3VwIFBlcm1pc3Npb25zPC9wPgoJPHVsPgoJCTxsaT5SZXZpc2lvbnM6IFVzZTwvbGk+CgkJPGxpPlJldmlzaW9uczogU2V0IE9wdGlvbnM8L2xpPgoJPC91bD4KCTxwPk9uY2UgYSB1c2VyIGlzIHBlcm1pdHRlZCB0byB1c2UgdGhpcyBtb2R1bGUgaGUgd2lsbCBiZSBhYmxlIHRvIHNlZSB0aGUgcmV2aXNpb25zIG9mIHRob3NlIGNvbnRlbnRzIGhlXCdzIGFsbG93ZWQgdG8gZWRpdC4gRXhhbXBsZTogQSB1c2VyIHRoYXQgaXMgYWxsb3dlZCB0byBlZGl0IEdsb2JhbCBDb250ZW50IEJsb2NrcyB3aWxsIGFsc28gYmUgYWJsZSB0byBtYW5hZ2UgaXRzIHJldmlzaW9ucy4nOwokbGFuZ1snaGVscF9hYm91dCddID0gJzxoMz5BYm91dDwvaDM+Cgk8cD5JZiB5b3UgZmluZCBhbnkgYnVncyBwbGVhc2UgZmVlbCBmcmVlIHRvIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xMDE1IiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4gb3IgZm9yIGFueSBnb29kIGlkZWFzIGNvbnNpZGVyIHN1Ym1pdGluZyBhIGZlYXR1cmUgcmVxdWVzdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2ZlYXR1cmVfcmVxdWVzdC9saXN0LzEwMTUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPi48L3A+Cgk8cD5NYW55IHRoYW5rcyB0byBKb25hdGhhbiBTY2htaWQgZm9yIGhpcyBwcm9ncmFtbWluZyB0aGUgYmFzaWMgb2YgUmV2aXNpb25zLjwvcD4KCTxwPlBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCBkZXZlbG9wZXJzIGRvIGhhdmUgdGhlaXIgZGFpbHkgam9icyB3aGljaCBtZWFucyB0aGF0IGZlYXR1cmUgcmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgYW5kIGRvbmUgYXMgdGltZSBhbGxvd3MuIElmIHlvdSBuZWVkIGEgZmVhdHVyZSByZWFsbHkgYmFkbHkgY29uc2lkZXIgY29udGFjdGluZyBvbmUgb2YgdGhlIGRldmVsb3BlcnMgZm9yIGEgc3BvbnNvcmVkIGRldmVsb3BtZW50LjwvcD4KCTxoMz5UZWFtPC9oMz4KCTx1bD4KCQk8bGk+THVrYXMgQmxhdHRlciAobm9ja2VuZmVsbCkgbHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaCA8YnIgLz53d3cuYmxhdHRlcnRlY2guY2g8L2xpPgoJPC91bD4nOwo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gdGFicwokbGFuZ1sncGFnZXMnXSA9ICdTZWl0ZW4nOwokbGFuZ1snZ2NicyddID0gJ0dsb2JhbGUgSW5oYWx0YmzDtmNrZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1snY3NzJ10gPSAnQ1NTJzsKJGxhbmdbJ3JlY3ljbGUnXSA9ICdQYXBpZXJrb3JiJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25lbic7CiRsYW5nWydiYWNrJ10gPSAnR2VoZSBlaW5lIFNlaXRlIHp1csO8Y2snOwoKLy8gcmV2aXNpb25zCiRsYW5nWydub3JldmlzaW9ucyddID0gJ0VzIGlzdCBrZWluZSBSZXZpc2lvbiB6dXJ6ZWl0IHZvcmhhbmRlbi4nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncmV2aXNpb25zJ10gPSAnUmV2aXNpb25lbic7CiRsYW5nWydzaG93ZGV0YWlscyddID0gJ0RldGFpbHMgYW56ZWlnZW4nOwoKLy8gZGV0YWlscwokbGFuZ1sncmV2aXNpb24nXSA9ICdSZXZpc2lvbic7CiRsYW5nWydjcmVhdGVfZGF0ZSddID0gJ8OEbmRlcmUgVmVyc2lvbiB2b20nOwokbGFuZ1sndXNlciddID0gJ0JlbnV0emVyJzsKJGxhbmdbJ3ByZXZpZXcnXSA9ICdWb3JzY2hhdSc7CiRsYW5nWyd1bmRvJ10gPSAnUsO8Y2tnw6RuZ2lnIG1hY2hlbic7CiRsYW5nWydjb21wYXJlJ10gPSAnVmVyZ2xlaWNoZW4nOwokbGFuZ1snY29tcGFyZV90b29sdGlwJ10gPSAnTWl0IGRlbSBha3R1ZWxsZW4gRWludHJhZyB2ZXJnbGVpY2hlbic7CiRsYW5nWydsYXN0X2FjdGl2ZSddID0gJ0xldHplIGFrdGl2ZSBWZXJzaW9uJzsKCi8vIGNvbXBhcmUKJGxhbmdbJ3JldmlzaW9uc19pZGVudGljYWwnXSA9ICdEaWUgYmVpZGVuIFJldmlzaW9uZW4gc2luZCBpZGVudGlzY2gnOwokbGFuZ1snY29udGVudGJsb2NrJ10gPSAnQ29udGVudCBCbG9jayc7CgovLyByZXN0b3JlCiRsYW5nWydyZXN0b3JlJ10gPSAnSW5oYWx0IHdpZWRlcmhlcnN0ZWxsZW4nOwokbGFuZ1sncmVzdG9yZWVycm9yJ10gPSAnRmVobGVyIGJlaW0gd2llZGVyaGVyc3RlbGxlbiBkZXMgSW5oYWx0cyc7CgoKLy8gb3B0aW9ucwokbGFuZ1snZ2VuZXJhbF9vcHRpb25zJ10gPSAnQWxsZ2VtZWluZSBFaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3N0b3JlX3JldmlzaW9uc19jb3VudCddID0gJ0FuemFobCBkZXIgZ2VzcGVpY2hlcnRlbiBSZXZpc2lvbmVuIHBybyBJbmhhbHQnOwokbGFuZ1snc3RvcmVfcmV2aXNpb25zX3VubGltaXRlZCddID0gJ1NldHplIDAgZsO8ciB1bmxpbWl0aWVydGVzIHNwZWljaGVybi4nOwokbGFuZ1snZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnXSA9ICdMw7ZzY2hlIFJldmlzaW9uIHdlbm4gSW5oYWx0IGdlbMO2c2NodCB3aXJkJzsKJGxhbmdbJ2RlbGV0ZV9yZXZpc2lvbnMnXSA9ICdMw7ZzY2hlIFJldmlzaW9uZW4nOwokbGFuZ1snZGVsZXRlX2FsbF9idXQnXSA9ICdMw7ZzY2hlIGFsbGUgUmV2aXNpb25lbiBiaXMgYXVmIGRpZSBsZXR6dGVuIFggdm9uIGFsbGVuIEluaGFsdGVuJzsKJGxhbmdbJ2RlbGV0ZV9vbGRlcl90aGFuJ10gPSAnTMO2c2NoZSBhbGxlIFJldmlzaW9uZW4gZGllIMOEbHRlciBzaW5kIGFscyc7CiRsYW5nWydkZWxldGUnXSA9ICdMw7ZzY2hlbic7CiRsYW5nWydvcHRpb25zdXBkYXRlZCddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIHd1cmRlbiBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ3JldmlzaW9uc2RlbGV0ZWQnXSA9ICdEaWUgUmV2aXNpb25lbiB3dXJkZW4gZXJmb2xncmVpY2ggZ2Vsw7ZzY2h0Lic7CgovLyBnbG9iYWwKJGxhbmdbJ3N1Ym1pdCddID0gJ1NwZWljaGVybic7CiRsYW5nWydjYW5jZWwnXSA9ICdBYmJyZWNoZW4nOwokbGFuZ1sncmVzZXQnXSA9ICdBdWYgU3RhbmRhcmRlaW5zdGVsbHVuZ2VuIHp1csO8Y2tzZXR6ZW4nOwokbGFuZ1snY2hhbmdlc3NhdmVkJ10gPSAnRGllIMOEbmRlcnVuZ2VuIHd1cmRlbiBlcmZvbGdyZWljaCBnZXNwZWljaGVydC4nOwokbGFuZ1snZmlyc3RwYWdlJ10gPSAnJmx0OyZsdDsnOwokbGFuZ1sncHJldnBhZ2UnXSA9ICcmbHQ7JzsKJGxhbmdbJ25leHRwYWdlJ10gPSAnJmd0Oyc7CiRsYW5nWydsYXN0cGFnZSddID0gJyZndDsmZ3Q7JzsKCi8vIG1vZHVsZQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnUmV2aXNpb25zJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnUmV2aXNpb25zIHNwZWljaGVydCDDhG5kZXJ1bmdlbiBpbiBJbmhhbHQsIFRlbXBsYXRlLCBDU1MsIEdDQnMgdW5kIHNjaGFmZnQgZGVtIFdlYmRldmVsb3BlciBkaWUgTcO2Z2xpY2hrZWl0IEluaGFsdGUgbWl0IMOkbHRlcmVuIFZlcnNpb25lbiB6dSB2ZXJnbGVpY2hlbiBvZGVyIHdpZWRlcmhlcnp1c3RlbGxlbic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1JldmlzaW9ucyB3dXJkZSBlcmZvbGdyZWljaCBpbnN0YWxsaWVydCc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnUmV2aXNpb25zIHd1cmRlIGVyZm9sZ3JlaWNoIGRlaW5zdGFsbGllcnQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnJzsKJGxhbmdbJ2djYiddID0gIkdsb2JhbGUgSW5oYWx0c2Jsw7Zja2UiOwokbGFuZ1snc3R5bGVzaGVldCddID0gIlN0eWxlc2hlZXQiOwokbGFuZ1sndGVtcGxhdGUnXSA9ICJUZW1wbGF0ZSI7CiRsYW5nWydjb250ZW50J10gPSAiSW5oYWx0ZSI7CgovLyByZXN0b3JlCiRsYW5nWydtc2dfcmVzdG9yZWQnXSA9ICJEaWUgUmV2aXNpb24gd3VyZGUgZXJmb2xncmVpY2ggd2llZGVyaGVyZ2VzdGVsbHQiOwokbGFuZ1snbXNnX3Jlc3RvcmVkX3JlY3ljbGUnXSA9ICJEZXIgSW5oYWx0IHd1cmRlIGVyZm9sZ3JlaWNoIGF1cyBkZW0gUGFwaWVya29yYiB3aWVkZXJoZXJnZXN0ZWxsdCI7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tzJ10gPSAiRXMgZ2lidCBlaW5lbiBGZWhsZXIgbWl0IGRlbiBJbmhhbHRibMO2Y2tlbiI7CgovLyBtb2R1bGUgaGVscAokbGFuZ1snZ2VuZXJhbCddID0gJ0FsbGdlbWVpbic7CiRsYW5nWydwZXJtaXNzaW9ucyddID0gJ1p1Z3JpZmZiZXJlY2h0aWd1bmdlbic7CiRsYW5nWydhYm91dCddID0gJ8OcYmVyJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbCddID0gJzxoMz5BbGxnZW1laW5lIEluZm9ybWF0aW9uZW48L2gzPgoJPHA+UmV2aXNpb25zIHNwZWljaGVydCDDhG5kZXJ1bmdlbiB2b24gU2VpdGVuLCBUZW1wbGF0ZXMsIENTUywgR2xvYmFsZSBJbmFobHRzYmzDtmNrZSB1bmQgZXJtw7ZnbGljaHQgZGFtaXQgZGVtIFdlYiBEZXZlbG9wZXIgZWluZW4gSW5oYWx0IG1pdCBlaW5lciBmcsO8aGVyZW4gVmVyc2lvbiB6dSB2ZXJnbGVpY2hlbiBvZGVyIGF1Y2ggd2llZGVyaGVyenVzdGVsbGVuPC9wPic7CiRsYW5nWydoZWxwX3Blcm1pc3Npb25zJ10gPSAnPGgzPlp1Z3JpZmZiZXJlY2h0aWd1bmdlbjwvaDM+Cgk8cD5Gb2xnZW5kZSAyIFp1Z3JpZmZzYmVyZWNodGlndW5nZW4ga8O2bm5lbiB1bnRlciBCZW51dHplcnZlcndhbHR1bmcgPiBHcnVwcGVuYmVyZWNodGlndW5nZW4gZ2VzZXR6dCB3ZXJkZW48L3A+Cgk8dWw+CgkJPGxpPlJldmlzaW9uczogVXNlPC9saT4KCQk8bGk+UmV2aXNpb25zOiBTZXQgT3B0aW9uczwvbGk+Cgk8L3VsPgoJPHA+RWluIEJlbnV0emVyIGRlciBiZXJlY2h0aWd0IGlzdCBkYXMgTW9kdWwgenUgc2VoZW4sIHNpZWh0IGFsbGUgUmV2aXNpb25zIGRlciBJbmhhbHRlIHp1IGRlbmVuIGVyIGVpbmUgQmVyZWNodGlndW5nIGJlc2l0enQuLiBCZWlzcGllbDogRWluIEJlbnV0emVyIGRlciBHbG9iYWxlIEluaGFsdGJsw7Zja2UgYmVhcmJlaXRlbiBkYXJmLCBzaWVodCBkaWVzZSBhdWNoIGluIFJldmlzaW9ucy4nOwokbGFuZ1snaGVscF9hYm91dCddID0gJzxoMz7DnGJlcjwvaDM+Cgk8cD5XZW5uIFNpZSBlaW5lbiBCdWcgaW4gUmV2aXNpb25zIGZpbmRlbiwgbWVsZGVuIFNpZSBkaWVzZW4gYml0dGUgbWl0IGVpbmVtIEJ1ZyBSZXBvcnQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xMDE1IiB0YXJnZXQ9Il9ibGFuayI+aGVyZTwvYT4gb2RlciBmw7xyIGVpbmUgZ3V0ZSBJZGVlIHNjaHJlaWJlbiBTaWUgZWluZW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9mZWF0dXJlX3JlcXVlc3QvbGlzdC8xMDE1IiB0YXJnZXQ9Il9ibGFuayI+RmVhdHVyZSBSZXF1ZXN0PC9hPi4gU3BlbmRlbiBzaW5kIGplZGVyemVpdCB3aWxsa29tbWVuLjwvcD4KCTxwPkVpbmVuIERhbmsgZ2VodCBhbiBKb25hdGhhbiBTY2htaWQgZsO8ciBzZWluZSBHcnVuZGxhZ2VucHJvZ3JhbW1pZXJ1bmcgZGVzIE1vZHVscy48L3A+Cgk8cD5CaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGVyIEVudHdpY2tsZXIgZGllc2VzIFByb2pla3QgaW4gc2VpbmVyIEZyZWl6ZWl0IG5lYmVuIHNlaW5lbSBKb2IgcmVhbGlzaWVydC4gRmVhdHVyZSBSZXF1ZXN0IHdlcmRlbiBzb21pdCBlaW5nZWJhdXQgd2VubiBaZWl0IHVuZCBNdXNlIGRhZsO8ciB2b3JoYW5kZW4gaXN0LiBXZW5uIFNpZSBlaW4gRmVhdHVyZSBSZXF1ZXN0IHVuYmVkaW5ndCBpbiBLw7xyemUgYnJhdWNoZW4sIG5laG1lbiBTaWUgbWl0IEx1a2FzIEJsYXR0ZXIgPGx1a2FzLmJsYXR0ZXJAYmxhdHRlcnRlY2guY2g+IEtvbnRha3QgYXVmIHVuZCBzcG9uc2VyZW4gU2llIGRpZSBFbnR3aWNrbHVuZyBJaHJlciBJZGVlLjwvcD4KCTxoMz5FbnR3aWNrbGVyPC9oMz4KCTx1bD4KCQk8bGk+THVrYXMgQmxhdHRlciAobm9ja2VuZmVsbCkgbHVrYXMuYmxhdHRlckBibGF0dGVydGVjaC5jaCA8YnIgLz53d3cuYmxhdHRlcnRlY2guY2g8L2xpPgoJPC91bD4nOwo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Diff.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERpZmYKICoKICogQSBjb21wcmVoZW5zaXZlIGxpYnJhcnkgZm9yIGdlbmVyYXRpbmcgZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gc3RyaW5ncwogKiBpbiBtdWx0aXBsZSBmb3JtYXRzICh1bmlmaWVkLCBzaWRlIGJ5IHNpZGUgSFRNTCBldGMpCiAqCiAqIFBIUCB2ZXJzaW9uIDUKICoKICogQ29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24gPGNocmlzLmJvdWx0b25AaW50ZXJzcGlyZS5jb20+CiAqIAogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiAKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICoKICogIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqICAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIENocmlzIEJvdWx0b24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIAogKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgCiAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIAogKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgCiAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgCiAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIAogKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgCiAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIAogKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSAKICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgCiAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKgogKiBAcGFja2FnZSBEaWZmCiAqIEBhdXRob3IgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogQGNvcHlyaWdodCAoYykgMjAwOSBDaHJpcyBCb3VsdG9uCiAqIEBsaWNlbnNlIE5ldyBCU0QgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocAogKiBAdmVyc2lvbiAxLjEKICogQGxpbmsgaHR0cDovL2dpdGh1Yi5jb20vY2hyaXNib3VsdG9uL3BocC1kaWZmCiAqLwoKY2xhc3MgRGlmZgp7CgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlICJvbGQiIHNlcXVlbmNlIHRvIHVzZSBhcyB0aGUgYmFzaXMgZm9yIHRoZSBjb21wYXJpc29uLgoJICovCglwcml2YXRlICRhID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlICJuZXciIHNlcXVlbmNlIHRvIGdlbmVyYXRlIHRoZSBjaGFuZ2VzIGZvci4KCSAqLwoJcHJpdmF0ZSAkYiA9IG51bGw7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBvcGNvZGVzIGZvciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGl0ZW1zLgoJICovCglwcml2YXRlICRncm91cGVkQ29kZXMgPSBudWxsOwoKCS8qKgoJICogQHZhciBhcnJheSBBc3NvY2lhdGl2ZSBhcnJheSBvZiB0aGUgZGVmYXVsdCBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGRpZmYgY2xhc3MgYW5kIHRoZWlyIGRlZmF1bHQgdmFsdWUuCgkgKi8KCXByaXZhdGUgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoCgkJJ2NvbnRleHQnID0+IDMsCgkJJ2lnbm9yZU5ld0xpbmVzJyA9PiBmYWxzZSwKCQknaWdub3JlV2hpdGVzcGFjZScgPT4gZmFsc2UsCgkJJ2lnbm9yZUNhc2UnID0+IGZhbHNlCgkpOwoKCS8qKgoJICogQHZhciBhcnJheSBBcnJheSBvZiB0aGUgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBhcHBsaWVkIGZvciBnZW5lcmF0aW5nIHRoZSBkaWZmLgoJICovCglwcml2YXRlICRvcHRpb25zID0gYXJyYXkoKTsKCgkvKioKCSAqIFRoZSBjb25zdHJ1Y3Rvci4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGEgQXJyYXkgY29udGFpbmluZyB0aGUgbGluZXMgb2YgdGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLgoJICogQHBhcmFtIGFycmF5ICRiIEFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIGZvciB0aGUgc2Vjb25kIHN0cmluZyB0byBjb21wYXJlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGEsICRiLCAkb3B0aW9ucz1hcnJheSgpKQoJewoJCSR0aGlzLT5hID0gJGE7CgkJJHRoaXMtPmIgPSAkYjsKCgkJJHRoaXMtPm9wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+ZGVmYXVsdE9wdGlvbnMsICRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFJlbmRlciBhIGRpZmYgdXNpbmcgdGhlIHN1cHBsaWVkIHJlbmRlcmluZyBjbGFzcyBhbmQgcmV0dXJuIGl0LgoJICoKCSAqIEBwYXJhbSBvYmplY3QgJHJlbmRlcmVyIEFuIGluc3RhbmNlIG9mIHRoZSByZW5kZXJpbmcgb2JqZWN0IHRvIHVzZSBmb3IgZ2VuZXJhdGluZyB0aGUgZGlmZi4KCSAqIEByZXR1cm4gbWl4ZWQgVGhlIGdlbmVyYXRlZCBkaWZmLiBFeGFjdCByZXR1cm4gdmFsdWUgZGVwZW5kcyBvbiB0aGUgcmVuZGVyZWQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoRGlmZl9SZW5kZXJlcl9BYnN0cmFjdCAkcmVuZGVyZXIpCgl7CgkJJHJlbmRlcmVyLT5kaWZmID0gJHRoaXM7CgkJcmV0dXJuICRyZW5kZXJlci0+cmVuZGVyKCk7Cgl9CgoJLyoqCgkgKiBHZXQgYSByYW5nZSBvZiBsaW5lcyBmcm9tICRzdGFydCB0byAkZW5kIGZyb20gdGhlIGZpcnN0IGNvbXBhcmlzb24gc3RyaW5nCgkgKiBhbmQgcmV0dXJuIHRoZW0gYXMgYW4gYXJyYXkuIElmIG5vIHZhbHVlcyBhcmUgc3VwcGxpZWQsIHRoZSBlbnRpcmUgc3RyaW5nCgkgKiBpcyByZXR1cm5lZC4gSXQncyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkganVzdCBvbmUgbGluZSB0byByZXR1cm4gb25seQoJICogdGhhdCBsaW5lLgoJICoKCSAqIEBwYXJhbSBpbnQgJHN0YXJ0IFRoZSBzdGFydGluZyBudW1iZXIuCgkgKiBAcGFyYW0gaW50ICRlbmQgVGhlIGVuZGluZyBudW1iZXIuIElmIG5vdCBzdXBwbGllZCwgb25seSB0aGUgaXRlbSBpbiAkc3RhcnQgd2lsbCBiZSByZXR1cm5lZC4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgYWxsIG9mIHRoZSBsaW5lcyBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgcmFuZ2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRBKCRzdGFydD0wLCAkZW5kPW51bGwpCgl7CgkJaWYoJHN0YXJ0ID09IDAgJiYgJGVuZCA9PT0gbnVsbCkgewoJCQlyZXR1cm4gJHRoaXMtPmE7CgkJfQoKCQlpZigkZW5kID09PSBudWxsKSB7CgkJCSRsZW5ndGggPSAxOwoJCX0KCQllbHNlIHsKCQkJJGxlbmd0aCA9ICRlbmQgLSAkc3RhcnQ7CgkJfQoKCQlyZXR1cm4gYXJyYXlfc2xpY2UoJHRoaXMtPmEsICRzdGFydCwgJGxlbmd0aCk7CgoJfQoKCS8qKgoJICogR2V0IGEgcmFuZ2Ugb2YgbGluZXMgZnJvbSAkc3RhcnQgdG8gJGVuZCBmcm9tIHRoZSBzZWNvbmQgY29tcGFyaXNvbiBzdHJpbmcKCSAqIGFuZCByZXR1cm4gdGhlbSBhcyBhbiBhcnJheS4gSWYgbm8gdmFsdWVzIGFyZSBzdXBwbGllZCwgdGhlIGVudGlyZSBzdHJpbmcKCSAqIGlzIHJldHVybmVkLiBJdCdzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSBqdXN0IG9uZSBsaW5lIHRvIHJldHVybiBvbmx5CgkgKiB0aGF0IGxpbmUuCgkgKgoJICogQHBhcmFtIGludCAkc3RhcnQgVGhlIHN0YXJ0aW5nIG51bWJlci4KCSAqIEBwYXJhbSBpbnQgJGVuZCBUaGUgZW5kaW5nIG51bWJlci4gSWYgbm90IHN1cHBsaWVkLCBvbmx5IHRoZSBpdGVtIGluICRzdGFydCB3aWxsIGJlIHJldHVybmVkLgoJICogQHJldHVybiBhcnJheSBBcnJheSBvZiBhbGwgb2YgdGhlIGxpbmVzIGJldHdlZW4gdGhlIHNwZWNpZmllZCByYW5nZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEIoJHN0YXJ0PTAsICRlbmQ9bnVsbCkKCXsKCQlpZigkc3RhcnQgPT0gMCAmJiAkZW5kID09PSBudWxsKSB7CgkJCXJldHVybiAkdGhpcy0+YjsKCQl9CgoJCWlmKCRlbmQgPT09IG51bGwpIHsKCQkJJGxlbmd0aCA9IDE7CgkJfQoJCWVsc2UgewoJCQkkbGVuZ3RoID0gJGVuZCAtICRzdGFydDsKCQl9CgoJCXJldHVybiBhcnJheV9zbGljZSgkdGhpcy0+YiwgJHN0YXJ0LCAkbGVuZ3RoKTsKCX0KCgkvKioKCSAqIEdlbmVyYXRlIGEgbGlzdCBvZiB0aGUgY29tcGlsZWQgYW5kIGdyb3VwZWQgb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCgkgKiB0d28gc3RyaW5ncy4gR2VuZXJhbGx5IGNhbGxlZCBieSB0aGUgcmVuZGVyZXIsIHRoaXMgY2xhc3MgaW5zdGFudGlhdGVzIHRoZSBzZXF1ZW5jZQoJICogbWF0Y2hlciBhbmQgcGVyZm9ybXMgdGhlIGFjdHVhbCBkaWZmIGdlbmVyYXRpb24gYW5kIHJldHVybiBhbiBhcnJheSBvZiB0aGUgb3Bjb2RlcwoJICogZm9yIGl0LiBPbmNlIGdlbmVyYXRlZCwgdGhlIHJlc3VsdHMgYXJlIGNhY2hlZCBpbiB0aGUgZGlmZiBjbGFzcyBpbnN0YW5jZS4KCSAqCgkgKiBAcmV0dXJuIGFycmF5IEFycmF5IG9mIHRoZSBncm91cGVkIG9wY29kZXMgZm9yIHRoZSBnZW5lcmF0ZWQgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEdyb3VwZWRPcGNvZGVzKCkKCXsKCQlpZighaXNfbnVsbCgkdGhpcy0+Z3JvdXBlZENvZGVzKSkgewoJCQlyZXR1cm4gJHRoaXMtPmdyb3VwZWRDb2RlczsKCQl9CgoJCXJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL0RpZmYvU2VxdWVuY2VNYXRjaGVyLnBocCc7CgkJJHNlcXVlbmNlTWF0Y2hlciA9IG5ldyBEaWZmX1NlcXVlbmNlTWF0Y2hlcigkdGhpcy0+YSwgJHRoaXMtPmIsIG51bGwsICR0aGlzLT5vcHRpb25zKTsKCQkkdGhpcy0+Z3JvdXBlZENvZGVzID0gJHNlcXVlbmNlTWF0Y2hlci0+Z2V0R3JvdXBlZE9wY29kZXMoKTsKCQlyZXR1cm4gJHRoaXMtPmdyb3VwZWRDb2RlczsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.RevisionsUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogSm9uYXRoYW4gU2NobWlkLCA8aGlAam9uYXRoYW5zY2htaWQuZGU+CiMgV2ViOiB3d3cuam9uYXRoYW5zY2htaWQuZGUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgUmV2aXNpb25zIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGxvZ3MgY2hhbmdlcyBpbiBjb250ZW50LCBDU1MsCiMgR0NCcyBhbmQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byByZXZlcnQgdG8gZWFybGllciB2ZXJzaW9ucyBvZiBpdC4gCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIFJldmlzaW9uc1V0aWxzIHsKCglwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gJmFycmF5X3RvX29iamVjdCgkYXJyYXkpCgl7CgkJJG9iaiA9IG5ldyBTdGRDbGFzcygpOwoJCWZvcmVhY2goJGFycmF5IGFzICRrZXk9PiR2YWx1ZSkgewoJCQoJCQkkb2JqLT4ka2V5ID0gJHZhbHVlOwoJCX0KCQkKCQlyZXR1cm4gJG9iajsKCX0KCglzdGF0aWMgZmluYWwgcHVibGljIGZ1bmN0aW9uIGFycmF5X2luc2VydCgmJHNyYywgJHBvcywgJGlucywgJHJlcD0wKQoJeyAKCQlhcnJheV9zcGxpY2UoJHNyYywgJHBvcywgJHJlcCwgJGlucyk7IAoJCXJldHVybiB0cnVlOwoJfQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXROdW1iZXIoJGlkLCAkbmFtZSwgJHZhbHVlPScnLCAkYWRkdHRleHQ9JycpCgl7CgkJJHZhbHVlID0gY21zX2h0bWxlbnRpdGllcygkdmFsdWUpOwoJCSRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKCQkkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwoKCQkkdmFsdWUgPSBzdHJfcmVwbGFjZSgnIicsICcmcXVvdDsnLCAkdmFsdWUpOwoKCQkkdGV4dCA9ICc8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0iY21zX251bWJlcmZpZWxkIiBuYW1lPSInLiRpZC4kbmFtZS4nIiBpZD0iJy4kaWQuJG5hbWUuJyIgdmFsdWU9IicuJHZhbHVlLiciJzsKCQlpZiAoJGFkZHR0ZXh0ICE9ICcnKQoJCXsKCQkJJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwoJCX0KCQkkdGV4dCAuPSAiIC8+XG4iOwoJCXJldHVybiAkdGV4dDsKCX0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Abstract.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFic3RyYWN0IGNsYXNzIGZvciBkaWZmIHJlbmRlcmVycyBpbiBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgphYnN0cmFjdCBjbGFzcyBEaWZmX1JlbmRlcmVyX0Fic3RyYWN0CnsKCS8qKgoJICogQHZhciBvYmplY3QgSW5zdGFuY2Ugb2YgdGhlIGRpZmYgY2xhc3MgdGhhdCB0aGlzIHJlbmRlcmVyIGlzIGdlbmVyYXRpbmcgdGhlIHJlbmRlcmVkIGRpZmYgZm9yLgoJICovCglwdWJsaWMgJGRpZmY7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IG9mIHRoZSBkZWZhdWx0IG9wdGlvbnMgdGhhdCBhcHBseSB0byB0aGlzIHJlbmRlcmVyLgoJICovCglwcm90ZWN0ZWQgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkgQXJyYXkgY29udGFpbmluZyB0aGUgdXNlciBhcHBsaWVkIGFuZCBtZXJnZWQgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgcmVuZGVyZXIuCgkgKi8KCXByb3RlY3RlZCAkb3B0aW9ucyA9IGFycmF5KCk7CgoJLyoqCgkgKiBUaGUgY29uc3RydWN0b3IuIEluc3RhbnRpYXRlcyB0aGUgcmVuZGVyaW5nIGVuZ2luZSBhbmQgaWYgb3B0aW9ucyBhcmUgcGFzc2VkLAoJICogc2V0cyB0aGUgb3B0aW9ucyBmb3IgdGhlIHJlbmRlcmVyLgoJICoKCSAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25hbGx5LCBhbiBhcnJheSBvZiB0aGUgb3B0aW9ucyBmb3IgdGhlIHJlbmRlcmVyLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJG9wdGlvbnMgPSBhcnJheSgpKQoJewoJCSR0aGlzLT5zZXRPcHRpb25zKCRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgb3B0aW9ucyBvZiB0aGUgcmVuZGVyZXIgdG8gdGhvc2Ugc3VwcGxpZWQgaW4gdGhlIHBhc3NlZCBpbiBhcnJheS4KCSAqIE9wdGlvbnMgYXJlIG1lcmdlZCB3aXRoIHRoZSBkZWZhdWx0IHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgbWlzc2luZwoJICogb3B0aW9ucy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byBzZXQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRPcHRpb25zKGFycmF5ICRvcHRpb25zKQoJewoJCSR0aGlzLT5vcHRpb25zID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRlZmF1bHRPcHRpb25zLCAkb3B0aW9ucyk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Array.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEJhc2UgcmVuZGVyZXIgZm9yIHJlbmRlcmluZyBIVE1MIGJhc2VkIGRpZmZzIGZvciBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9BYnN0cmFjdC5waHAnOwoKY2xhc3MgRGlmZl9SZW5kZXJlcl9IdG1sX0FycmF5IGV4dGVuZHMgRGlmZl9SZW5kZXJlcl9BYnN0cmFjdAp7CgkvKioKCSAqIEB2YXIgYXJyYXkgQXJyYXkgb2YgdGhlIGRlZmF1bHQgb3B0aW9ucyB0aGF0IGFwcGx5IHRvIHRoaXMgcmVuZGVyZXIuCgkgKi8KCXByb3RlY3RlZCAkZGVmYXVsdE9wdGlvbnMgPSBhcnJheSgKCQkndGFiU2l6ZScgPT4gNAoJKTsKCgkvKioKCSAqIFJlbmRlciBhbmQgcmV0dXJuIGFuIGFycmF5IHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgZ2VuZXJhdGluZyBIVE1MCgkgKiBiYXNlZCBkaWZmZXJlbmNlcy4gR2VuZXJhbGx5IGNhbGxlZCBieSBzdWJjbGFzc2VzIHRoYXQgZ2VuZXJhdGUgYQoJICogSFRNTCBiYXNlZCBkaWZmIGFuZCByZXR1cm4gYW4gYXJyYXkgb2YgdGhlIGNoYW5nZXMgdG8gc2hvdyBpbiB0aGUgZGlmZi4KCSAqCgkgKiBAcmV0dXJuIGFycmF5IEFuIGFycmF5IG9mIHRoZSBnZW5lcmF0ZWQgY2hhbmNlcywgc3VpdGFibGUgZm9yIHByZXNlbnRhdGlvbiBpbiBIVE1MLgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkKCXsKCQkvLyBBcyB3ZSdsbCBiZSBtb2RpZnlpbmcgYSAmIGIgdG8gaW5jbHVkZSBvdXIgY2hhbmdlIG1hcmtlcnMsCgkJLy8gd2UgbmVlZCB0byBnZXQgdGhlIGNvbnRlbnRzIGFuZCBzdG9yZSB0aGVtIGhlcmUuIFRoYXQgd2F5CgkJLy8gd2UncmUgbm90IGdvaW5nIHRvIGRlc3Ryb3kgdGhlIG9yaWdpbmFsIGRhdGEKCQkkYSA9ICR0aGlzLT5kaWZmLT5nZXRBKCk7CgkJJGIgPSAkdGhpcy0+ZGlmZi0+Z2V0QigpOwoKCQkkY2hhbmdlcyA9IGFycmF5KCk7CgkJJG9wQ29kZXMgPSAkdGhpcy0+ZGlmZi0+Z2V0R3JvdXBlZE9wY29kZXMoKTsKCQlmb3JlYWNoKCRvcENvZGVzIGFzICRncm91cCkgewoJCQkkYmxvY2tzID0gYXJyYXkoKTsKCQkJJGxhc3RUYWcgPSBudWxsOwoJCQkkbGFzdEJsb2NrID0gMDsKCQkJZm9yZWFjaCgkZ3JvdXAgYXMgJGNvZGUpIHsKCQkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRjb2RlOwoKCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnICYmICRpMiAtICRpMSA9PSAkajIgLSAkajEpIHsKCQkJCQlmb3IoJGkgPSAwOyAkaSA8ICgkaTIgLSAkaTEpOyArKyRpKSB7CgkJCQkJCSRmcm9tTGluZSA9ICRhWyRpMSArICRpXTsKCQkJCQkJJHRvTGluZSA9ICRiWyRqMSArICRpXTsKCgkJCQkJCWxpc3QoJHN0YXJ0LCAkZW5kKSA9ICR0aGlzLT5nZXRDaGFuZ2VFeHRlbnQoJGZyb21MaW5lLCAkdG9MaW5lKTsKCQkJCQkJaWYoJHN0YXJ0ICE9IDAgfHwgJGVuZCAhPSAwKSB7CgkJCQkJCQkkbGFzdCA9ICRlbmQgKyBzdHJsZW4oJGZyb21MaW5lKTsKCQkJCQkJCSRmcm9tTGluZSA9IHN1YnN0cl9yZXBsYWNlKCRmcm9tTGluZSwgIlwwIiwgJHN0YXJ0LCAwKTsKCQkJCQkJCSRmcm9tTGluZSA9IHN1YnN0cl9yZXBsYWNlKCRmcm9tTGluZSwgIlwxIiwgJGxhc3QgKyAxLCAwKTsKCQkJCQkJCSRsYXN0ID0gJGVuZCArIHN0cmxlbigkdG9MaW5lKTsKCQkJCQkJCSR0b0xpbmUgPSBzdWJzdHJfcmVwbGFjZSgkdG9MaW5lLCAiXDAiLCAkc3RhcnQsIDApOwoJCQkJCQkJJHRvTGluZSA9IHN1YnN0cl9yZXBsYWNlKCR0b0xpbmUsICJcMSIsICRsYXN0ICsgMSwgMCk7CgkJCQkJCQkkYVskaTEgKyAkaV0gPSAkZnJvbUxpbmU7CgkJCQkJCQkkYlskajEgKyAkaV0gPSAkdG9MaW5lOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCWlmKCR0YWcgIT0gJGxhc3RUYWcpIHsKCQkJCQkkYmxvY2tzW10gPSBhcnJheSgKCQkJCQkJJ3RhZycgPT4gJHRhZywKCQkJCQkJJ2Jhc2UnID0+IGFycmF5KAoJCQkJCQkJJ29mZnNldCcgPT4gJGkxLAoJCQkJCQkJJ2xpbmVzJyA9PiBhcnJheSgpCgkJCQkJCSksCgkJCQkJCSdjaGFuZ2VkJyA9PiBhcnJheSgKCQkJCQkJCSdvZmZzZXQnID0+ICRqMSwKCQkJCQkJCSdsaW5lcycgPT4gYXJyYXkoKQoJCQkJCQkpCgkJCQkJKTsKCQkJCQkkbGFzdEJsb2NrID0gY291bnQoJGJsb2NrcyktMTsKCQkJCX0KCgkJCQkkbGFzdFRhZyA9ICR0YWc7CgoJCQkJaWYoJHRhZyA9PSAnZXF1YWwnKSB7CgkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGEsICRpMSwgKCRpMiAtICRpMSkpOwoJCQkJCSRibG9ja3NbJGxhc3RCbG9ja11bJ2Jhc2UnXVsnbGluZXMnXSArPSAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCQkkbGluZXMgPSBhcnJheV9zbGljZSgkYiwgJGoxLCAoJGoyIC0gJGoxKSk7CgkJCQkJJGJsb2Nrc1skbGFzdEJsb2NrXVsnY2hhbmdlZCddWydsaW5lcyddICs9ICAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2RlbGV0ZScpIHsKCQkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGEsICRpMSwgKCRpMiAtICRpMSkpOwoJCQkJCQkkbGluZXMgPSAkdGhpcy0+Zm9ybWF0TGluZXMoJGxpbmVzKTsKCQkJCQkJJGxpbmVzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlwwIiwgIlwxIiksIGFycmF5KCc8ZGVsPicsICc8L2RlbD4nKSwgJGxpbmVzKTsKCQkJCQkJJGJsb2Nrc1skbGFzdEJsb2NrXVsnYmFzZSddWydsaW5lcyddICs9ICRsaW5lczsKCQkJCQl9CgoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2luc2VydCcpIHsKCQkJCQkJJGxpbmVzID0gYXJyYXlfc2xpY2UoJGIsICRqMSwgKCRqMiAtICRqMSkpOwoJCQkJCQkkbGluZXMgPSAgJHRoaXMtPmZvcm1hdExpbmVzKCRsaW5lcyk7CgkJCQkJCSRsaW5lcyA9IHN0cl9yZXBsYWNlKGFycmF5KCJcMCIsICJcMSIpLCBhcnJheSgnPGlucz4nLCAnPC9pbnM+JyksICRsaW5lcyk7CgkJCQkJCSRibG9ja3NbJGxhc3RCbG9ja11bJ2NoYW5nZWQnXVsnbGluZXMnXSArPSAkbGluZXM7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCSRjaGFuZ2VzW10gPSAkYmxvY2tzOwoJCX0KCQlyZXR1cm4gJGNoYW5nZXM7Cgl9CgoJLyoqCgkgKiBHaXZlbiB0d28gc3RyaW5ncywgZGV0ZXJtaW5lIHdoZXJlIHRoZSBjaGFuZ2VzIGluIHRoZSB0d28gc3RyaW5ncwoJICogYmVnaW4sIGFuZCB3aGVyZSB0aGUgY2hhbmdlcyBpbiB0aGUgdHdvIHN0cmluZ3MgZW5kLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZyb21MaW5lIFRoZSBmaXJzdCBzdHJpbmcuCgkgKiBAcGFyYW0gc3RyaW5nICR0b0xpbmUgVGhlIHNlY29uZCBzdHJpbmcuCgkgKiBAcmV0dXJuIGFycmF5IEFycmF5IGNvbnRhaW5pbmcgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uICgwIGJ5IGRlZmF1bHQpIGFuZCB0aGUgZW5kaW5nIHBvc2l0aW9uICgtMSBieSBkZWZhdWx0KQoJICovCglwcml2YXRlIGZ1bmN0aW9uIGdldENoYW5nZUV4dGVudCgkZnJvbUxpbmUsICR0b0xpbmUpCgl7CgkJJHN0YXJ0ID0gMDsKCQkkbGltaXQgPSBtaW4oc3RybGVuKCRmcm9tTGluZSksIHN0cmxlbigkdG9MaW5lKSk7CgkJd2hpbGUoJHN0YXJ0IDwgJGxpbWl0ICYmICRmcm9tTGluZXskc3RhcnR9ID09ICR0b0xpbmV7JHN0YXJ0fSkgewoJCQkrKyRzdGFydDsKCQl9CgkJJGVuZCA9IC0xOwoJCSRsaW1pdCA9ICRsaW1pdCAtICRzdGFydDsKCQl3aGlsZSgtJGVuZCA8PSAkbGltaXQgJiYgc3Vic3RyKCRmcm9tTGluZSwgJGVuZCwgMSkgPT0gc3Vic3RyKCR0b0xpbmUsICRlbmQsIDEpKSB7CgkJCS0tJGVuZDsKCQl9CgkJcmV0dXJuIGFycmF5KAoJCQkkc3RhcnQsCgkJCSRlbmQgKyAxCgkJKTsKCX0KCgkvKioKCSAqIEZvcm1hdCBhIHNlcmllcyBvZiBsaW5lcyBzdWl0YWJsZSBmb3Igb3V0cHV0IGluIGEgSFRNTCByZW5kZXJlZCBkaWZmLgoJICogVGhpcyBpbnZvbHZlcyByZXBsYWNpbmcgdGFiIGNoYXJhY3RlcnMgd2l0aCBzcGFjZXMsIG1ha2luZyB0aGUgSFRNTCBzYWZlCgkgKiBmb3Igb3V0cHV0LCBlbnN1cmluZyB0aGF0IGRvdWJsZSBzcGFjZXMgYXJlIHJlcGxhY2VkIHdpdGggJm5ic3A7IGV0Yy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGxpbmVzIEFycmF5IG9mIGxpbmVzIHRvIGZvcm1hdC4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgdGhlIGZvcm1hdHRlZCBsaW5lcy4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBmb3JtYXRMaW5lcygkbGluZXMpCgl7CgkJaWYoZ2V0X2NsYXNzKCR0aGlzKSA9PSAnRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUnKXsKCQkJJGxpbmVzID0gYXJyYXlfbWFwKGFycmF5KCR0aGlzLCAnRXhwYW5kVGFicycpLCAkbGluZXMpOwoJCQkkbGluZXMgPSBhcnJheV9tYXAoYXJyYXkoJHRoaXMsICdIdG1sU2FmZScpLCAkbGluZXMpOwoJCQlmb3JlYWNoKCRsaW5lcyBhcyAmJGxpbmUpIHsKCQkJCSRsaW5lID0gcHJlZ19yZXBsYWNlKCcjICggKyl8XiAjZScsICJcJHRoaXMtPmZpeFNwYWNlcygnXFwxJykiLCAkbGluZSk7CgkJCX0KCQl9CgkJcmV0dXJuICRsaW5lczsKCX0KCgkvKioKCSAqIFJlcGxhY2UgYSBzdHJpbmcgY29udGFpbmluZyBzcGFjZXMgd2l0aCBhIEhUTUwgcmVwcmVzZW50YXRpb24gdXNpbmcgJm5ic3A7LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHNwYWNlcyBUaGUgc3RyaW5nIG9mIHNwYWNlcy4KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBIVE1MIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uIGZpeFNwYWNlcygkc3BhY2VzPScnKQoJewoJCSRjb3VudCA9IHN0cmxlbigkc3BhY2VzKTsKCQlpZigkY291bnQgPT0gMCkgewoJCQlyZXR1cm4gJyc7CgkJfQoKCQkkZGl2ID0gZmxvb3IoJGNvdW50IC8gMik7CgkJJG1vZCA9ICRjb3VudCAlIDI7CgkJcmV0dXJuIHN0cl9yZXBlYXQoJyZuYnNwOyAnLCAkZGl2KS5zdHJfcmVwZWF0KCcmbmJzcDsnLCAkbW9kKTsKCX0KCgkvKioKCSAqIFJlcGxhY2UgdGFicyBpbiBhIHNpbmdsZSBsaW5lIHdpdGggYSBudW1iZXIgb2Ygc3BhY2VzIGFzIGRlZmluZWQgYnkgdGhlIHRhYlNpemUgb3B0aW9uLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGxpbmUgVGhlIGNvbnRhaW5pbmcgdGFicyB0byBjb252ZXJ0LgoJICogQHJldHVybiBzdHJpbmcgVGhlIGxpbmUgd2l0aCB0aGUgdGFicyBjb252ZXJ0ZWQgdG8gc3BhY2VzLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGV4cGFuZFRhYnMoJGxpbmUpCgl7CgkJcmV0dXJuIHN0cl9yZXBsYWNlKCJcdCIsIHN0cl9yZXBlYXQoJyAnLCAkdGhpcy0+b3B0aW9uc1sndGFiU2l6ZSddKSwgJGxpbmUpOwoJfQoKCS8qKgoJICogTWFrZSBhIHN0cmluZyBjb250YWluaW5nIEhUTUwgc2FmZSBmb3Igb3V0cHV0IG9uIGEgcGFnZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZy4KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBzdHJpbmcgd2l0aCB0aGUgSFRNTCBjaGFyYWN0ZXJzIHJlcGxhY2VkIGJ5IGVudGl0aWVzLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGh0bWxTYWZlKCRzdHJpbmcpCgl7CgkJcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMoJHN0cmluZywgRU5UX05PUVVPVEVTLCAnVVRGLTgnKTsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/SideBySide.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNpZGUgYnkgU2lkZSBIVE1MIGRpZmYgZ2VuZXJhdG9yIGZvciBQSFAgRGlmZkxpYi4KICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICogCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIAogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSAKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSAKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgCiAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSAKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiAKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgCiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIAogKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmZMaWIKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykuJy9BcnJheS5waHAnOwoKY2xhc3MgRGlmZl9SZW5kZXJlcl9IdG1sX1NpZGVCeVNpZGUgZXh0ZW5kcyBEaWZmX1JlbmRlcmVyX0h0bWxfQXJyYXkKewoKCXByaXZhdGUgJHJldmlzaW9uX2lkOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmV2aXNpb25faWQgPSAwKQoJewoJCSR0aGlzLT5yZXZpc2lvbl9pZCA9ICRyZXZpc2lvbl9pZDsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoJLyoqCgkgKiBSZW5kZXIgYSBhbmQgcmV0dXJuIGRpZmYgd2l0aCBjaGFuZ2VzIGJldHdlZW4gdGhlIHR3byBzZXF1ZW5jZXMKCSAqIGRpc3BsYXllZCBzaWRlIGJ5IHNpZGUuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIGdlbmVyYXRlZCBzaWRlIGJ5IHNpZGUgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcigpCgl7CgkJJGNoYW5nZXMgPSBwYXJlbnQ6OnJlbmRlcigpOwoKCQkkaHRtbCA9ICcnOwoJCWlmKGVtcHR5KCRjaGFuZ2VzKSkgewoJCQlyZXR1cm4gJGh0bWw7CgkJfQoKCQkkaHRtbCAuPSAnPHRhYmxlIGNsYXNzPSJEaWZmZXJlbmNlcyBEaWZmZXJlbmNlc1NpZGVCeVNpZGUiPic7CgkJJGh0bWwgLj0gJzx0aGVhZD4nOwoJCSRodG1sIC49ICc8dHI+JzsKCQkkaHRtbCAuPSAnPHRoIGNvbHNwYW49IjIiPlJldmlzaW9uICcgLiAkdGhpcy0+cmV2aXNpb25faWQgLiAnPC90aD4nOwoJCSRodG1sIC49ICc8dGggY29sc3Bhbj0iMiI+Q3VycmVudCBWZXJzaW9uPC90aD4nOwoJCSRodG1sIC49ICc8L3RyPic7CgkJJGh0bWwgLj0gJzwvdGhlYWQ+JzsKCQlmb3JlYWNoKCRjaGFuZ2VzIGFzICRpID0+ICRibG9ja3MpIHsKCQkJaWYoJGkgPiAwKSB7CgkJCQkkaHRtbCAuPSAnPHRib2R5IGNsYXNzPSJTa2lwcGVkIj4nOwoJCQkJJGh0bWwgLj0gJzx0aD4maGVsbGlwOzwvdGg+PHRkPiZuYnNwOzwvdGQ+JzsKCQkJCSRodG1sIC49ICc8dGg+JmhlbGxpcDs8L3RoPjx0ZD4mbmJzcDs8L3RkPic7CgkJCQkkaHRtbCAuPSAnPC90Ym9keT4nOwoJCQl9CgoJCQlmb3JlYWNoKCRibG9ja3MgYXMgJGNoYW5nZSkgewoJCQkJJGh0bWwgLj0gJzx0Ym9keSBjbGFzcz0iQ2hhbmdlJy51Y2ZpcnN0KCRjaGFuZ2VbJ3RhZyddKS4nIj4nOwoJCQkJLy8gRXF1YWwgY2hhbmdlcyBzaG91bGQgYmUgc2hvd24gb24gYm90aCBzaWRlcyBvZiB0aGUgZGlmZgoJCQkJaWYoJGNoYW5nZVsndGFnJ10gPT0gJ2VxdWFsJykgewoJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkkZnJvbUxpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJHRvTGluZSA9ICRjaGFuZ2VbJ2NoYW5nZWQnXVsnb2Zmc2V0J10gKyAkbm8gKyAxOwoJCQkJCQkkaHRtbCAuPSAnPHRyPic7CgkJCQkJCSRodG1sIC49ICc8dGg+Jy4kZnJvbUxpbmUuJzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+PHNwYW4+Jy4kbGluZS4nPC9zcGFuPiZuYnNwOzwvc3Bhbj48L3RkPic7CgkJCQkJCSRodG1sIC49ICc8dGg+Jy4kdG9MaW5lLic8L3RoPic7CgkJCQkJCSRodG1sIC49ICc8dGQgY2xhc3M9IlJpZ2h0Ij48c3Bhbj4nLiRsaW5lLic8L3NwYW4+Jm5ic3A7PC9zcGFuPjwvdGQ+JzsKCQkJCQkJJGh0bWwgLj0gJzwvdHI+JzsKCQkJCQl9CgkJCQl9CgkJCQkvLyBBZGRlZCBsaW5lcyBvbmx5IG9uIHRoZSByaWdodCBzaWRlCgkJCQllbHNlIGlmKCRjaGFuZ2VbJ3RhZyddID09ICdpbnNlcnQnKSB7CgkJCQkJZm9yZWFjaCgkY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ10gYXMgJG5vID0+ICRsaW5lKSB7CgkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydjaGFuZ2VkJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPiZuYnNwOzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+Jm5ic3A7PC90ZD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPicuJHRvTGluZS4nPC90aD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJSaWdodCI+PGlucz4nLiRsaW5lLic8L2lucz4mbmJzcDs8L3RkPic7CgkJCQkJCSRodG1sIC49ICc8L3RyPic7CgkJCQkJfQoJCQkJfQoJCQkJLy8gU2hvdyBkZWxldGVkIGxpbmVzIG9ubHkgb24gdGhlIGxlZnQgc2lkZQoJCQkJZWxzZSBpZigkY2hhbmdlWyd0YWcnXSA9PSAnZGVsZXRlJykgewoJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkkZnJvbUxpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPicuJGZyb21MaW5lLic8L3RoPic7CgkJCQkJCSRodG1sIC49ICc8dGQgY2xhc3M9IkxlZnQiPjxkZWw+Jy4kbGluZS4nPC9kZWw+Jm5ic3A7PC90ZD4nOwoJCQkJCQkkaHRtbCAuPSAnPHRoPiZuYnNwOzwvdGg+JzsKCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iUmlnaHQiPiZuYnNwOzwvdGQ+JzsKCQkJCQkJJGh0bWwgLj0gJzwvdHI+JzsKCQkJCQl9CgkJCQl9CgkJCQkvLyBTaG93IG1vZGlmaWVkIGxpbmVzIG9uIGJvdGggc2lkZXMKCQkJCWVsc2UgaWYoJGNoYW5nZVsndGFnJ10gPT0gJ3JlcGxhY2UnKSB7CgkJCQkJaWYoY291bnQoJGNoYW5nZVsnYmFzZSddWydsaW5lcyddKSA+PSBjb3VudCgkY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ10pKSB7CgkJCQkJCWZvcmVhY2goJGNoYW5nZVsnYmFzZSddWydsaW5lcyddIGFzICRubyA9PiAkbGluZSkgewoJCQkJCQkJJGZyb21MaW5lID0gJGNoYW5nZVsnYmFzZSddWydvZmZzZXQnXSArICRubyArIDE7CgkJCQkJCQkkaHRtbCAuPSAnPHRyPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRoPicuJGZyb21MaW5lLic8L3RoPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJMZWZ0Ij48c3Bhbj4nLiRsaW5lLic8L3NwYW4+Jm5ic3A7PC90ZD4nOwoJCQkJCQkJaWYoIWlzc2V0KCRjaGFuZ2VbJ2NoYW5nZWQnXVsnbGluZXMnXVskbm9dKSkgewoJCQkJCQkJCSR0b0xpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCQkkY2hhbmdlZExpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgewoJCQkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydiYXNlJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJCQkkY2hhbmdlZExpbmUgPSAnPHNwYW4+Jy4kY2hhbmdlWydjaGFuZ2VkJ11bJ2xpbmVzJ11bJG5vXS4nPC9zcGFuPic7CgkJCQkJCQl9CgkJCQkJCQkkaHRtbCAuPSAnPHRoPicuJHRvTGluZS4nPC90aD4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iUmlnaHQiPicuJGNoYW5nZWRMaW5lLic8L3RkPic7CgkJCQkJCQkkaHRtbCAuPSAnPC90cj4nOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlmb3JlYWNoKCRjaGFuZ2VbJ2NoYW5nZWQnXVsnbGluZXMnXSBhcyAkbm8gPT4gJGNoYW5nZWRMaW5lKSB7CgkJCQkJCQlpZighaXNzZXQoJGNoYW5nZVsnYmFzZSddWydsaW5lcyddWyRub10pKSB7CgkJCQkJCQkJJGZyb21MaW5lID0gJyZuYnNwOyc7CgkJCQkJCQkJJGxpbmUgPSAnJm5ic3A7JzsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgewoJCQkJCQkJCSRmcm9tTGluZSA9ICRjaGFuZ2VbJ2Jhc2UnXVsnb2Zmc2V0J10gKyAkbm8gKyAxOwoJCQkJCQkJCSRsaW5lID0gJzxzcGFuPicuJGNoYW5nZVsnYmFzZSddWydsaW5lcyddWyRub10uJzwvc3Bhbj4nOwoJCQkJCQkJfQoJCQkJCQkJJGh0bWwgLj0gJzx0cj4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0aD4nLiRmcm9tTGluZS4nPC90aD4nOwoJCQkJCQkJJGh0bWwgLj0gJzx0ZCBjbGFzcz0iTGVmdCI+PHNwYW4+Jy4kbGluZS4nPC9zcGFuPiZuYnNwOzwvdGQ+JzsKCQkJCQkJCSR0b0xpbmUgPSAkY2hhbmdlWydjaGFuZ2VkJ11bJ29mZnNldCddICsgJG5vICsgMTsKCQkJCQkJCSRodG1sIC49ICc8dGg+Jy4kdG9MaW5lLic8L3RoPic7CgkJCQkJCQkkaHRtbCAuPSAnPHRkIGNsYXNzPSJSaWdodCI+Jy4kY2hhbmdlZExpbmUuJzwvdGQ+JzsKCQkJCQkJCSRodG1sIC49ICc8L3RyPic7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkkaHRtbCAuPSAnPC90Ym9keT4nOwoJCQl9CgkJfQoJCSRodG1sIC49ICc8L3RhYmxlPic7CgkJcmV0dXJuICRodG1sOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/Renderer/Unified.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFVuaWZpZWQgZGlmZiBnZW5lcmF0b3IgZm9yIFBIUCBEaWZmTGliLgogKgogKiBQSFAgdmVyc2lvbiA1CiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiAKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAqCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAgLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBDaHJpcyBCb3VsdG9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyAKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIAogKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIAogKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIAogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSAKICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIAogKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIAogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIAogKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIAogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICoKICogQHBhY2thZ2UgRGlmZkxpYgogKiBAYXV0aG9yIENocmlzIEJvdWx0b24gPGNocmlzLmJvdWx0b25AaW50ZXJzcGlyZS5jb20+CiAqIEBjb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbgogKiBAbGljZW5zZSBOZXcgQlNEIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKICogQHZlcnNpb24gMS4xCiAqIEBsaW5rIGh0dHA6Ly9naXRodWIuY29tL2NocmlzYm91bHRvbi9waHAtZGlmZgogKi8KCnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nL0Fic3RyYWN0LnBocCc7CgpjbGFzcyBEaWZmX1JlbmRlcmVyX1VuaWZpZWQgZXh0ZW5kcyBEaWZmX1JlbmRlcmVyX0Fic3RyYWN0CnsKCS8qKgoJICogUmVuZGVyIGFuZCByZXR1cm4gYSB1bmlmaWVkIGRpZmYuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIHVuaWZpZWQgZGlmZi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcigpCgl7CgkJJGRpZmYgPSAnJzsKCQkkb3BDb2RlcyA9ICR0aGlzLT5kaWZmLT5nZXRHcm91cGVkT3Bjb2RlcygpOwoJCWZvcmVhY2goJG9wQ29kZXMgYXMgJGdyb3VwKSB7CgkJCSRsYXN0SXRlbSA9IGNvdW50KCRncm91cCktMTsKCQkJJGkxID0gJGdyb3VwWzBdWzFdOwoJCQkkaTIgPSAkZ3JvdXBbJGxhc3RJdGVtXVsyXTsKCQkJJGoxID0gJGdyb3VwWzBdWzNdOwoJCQkkajIgPSAkZ3JvdXBbJGxhc3RJdGVtXVs0XTsKCgkJCWlmKCRpMSA9PSAwICYmICRpMiA9PSAwKSB7CgkJCQkkaTEgPSAtMTsKCQkJCSRpMiA9IC0xOwoJCQl9CgoJCQkkZGlmZiAuPSAnQEAgLScuKCRpMSArIDEpLicsJy4oJGkyIC0gJGkxKS4nICsnLigkajEgKyAxKS4nLCcuKCRqMiAtICRqMSkuIiBAQFxuIjsKCQkJZm9yZWFjaCgkZ3JvdXAgYXMgJGNvZGUpIHsKCQkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRjb2RlOwoJCQkJaWYoJHRhZyA9PSAnZXF1YWwnKSB7CgkJCQkJJGRpZmYgLj0gJyAnLmltcGxvZGUoIlxuICIsICR0aGlzLT5kaWZmLT5HZXRBKCRpMSwgJGkyKSkuIlxuIjsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2RlbGV0ZScpIHsKCQkJCQkJJGRpZmYgLj0gJy0nLmltcGxvZGUoIlxuLSIsICR0aGlzLT5kaWZmLT5HZXRBKCRpMSwgJGkyKSkuIlxuIjsKCQkJCQl9CgoJCQkJCWlmKCR0YWcgPT0gJ3JlcGxhY2UnIHx8ICR0YWcgPT0gJ2luc2VydCcpIHsKCQkJCQkJJGRpZmYgLj0gJysnLmltcGxvZGUoIlxuKyIsICR0aGlzLT5kaWZmLT5HZXRCKCRqMSwgJGoyKSkuIlxuIjsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRkaWZmOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/Diff/SequenceMatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNlcXVlbmNlIG1hdGNoZXIgZm9yIERpZmYKICoKICogUEhQIHZlcnNpb24gNQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDkgQ2hyaXMgQm91bHRvbiA8Y2hyaXMuYm91bHRvbkBpbnRlcnNwaXJlLmNvbT4KICoKICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgogKgogKiAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICogICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgogKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgQ2hyaXMgQm91bHRvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQogKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgogKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAqCiAqIEBwYWNrYWdlIERpZmYKICogQGF1dGhvciBDaHJpcyBCb3VsdG9uIDxjaHJpcy5ib3VsdG9uQGludGVyc3BpcmUuY29tPgogKiBAY29weXJpZ2h0IChjKSAyMDA5IENocmlzIEJvdWx0b24KICogQGxpY2Vuc2UgTmV3IEJTRCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwCiAqIEB2ZXJzaW9uIDEuMQogKiBAbGluayBodHRwOi8vZ2l0aHViLmNvbS9jaHJpc2JvdWx0b24vcGhwLWRpZmYKICovCgpjbGFzcyBEaWZmX1NlcXVlbmNlTWF0Y2hlcgp7CgkvKioKCSAqIEB2YXIgc3RyaW5nfGFycmF5IEVpdGhlciBhIHN0cmluZyBvciBhbiBhcnJheSBjb250YWluaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgbGluZSBpcyAianVuayIgb3Igbm90LgoJICovCglwcml2YXRlICRqdW5rQ2FsbGJhY2sgPSBudWxsOwoKCS8qKgoJICogQHZhciBhcnJheSBUaGUgZmlyc3Qgc2VxdWVuY2UgdG8gY29tcGFyZSBhZ2FpbnN0LgoJICovCglwcml2YXRlICRhID0gbnVsbDsKCgkvKioKCSAqIEB2YXIgYXJyYXkgVGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqLwoJcHJpdmF0ZSAkYiA9IG51bGw7CgoJLyoqCgkgKiBAdmFyIGFycmF5IEFycmF5IG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgY29uc2lkZXJlZCBqdW5rIGZyb20gdGhlIHNlY29uZCBzZXF1ZW5jZS4gQ2hhcmFjdGVycyBhcmUgdGhlIGFycmF5IGtleS4KCSAqLwoJcHJpdmF0ZSAkanVua0RpY3QgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheSBBcnJheSBvZiBpbmRpY2VzIHRoYXQgZG8gbm90IGNvbnRhaW4ganVuayBlbGVtZW50cy4KCSAqLwoJcHJpdmF0ZSAkYjJqID0gYXJyYXkoKTsKCglwcml2YXRlICRvcHRpb25zID0gYXJyYXkoKTsKCglwcml2YXRlICRkZWZhdWx0T3B0aW9ucyA9IGFycmF5KAoJCSdpZ25vcmVOZXdMaW5lcycgPT4gZmFsc2UsCgkJJ2lnbm9yZVdoaXRlc3BhY2UnID0+IGZhbHNlLAoJCSdpZ25vcmVDYXNlJyA9PiBmYWxzZQoJKTsKCgkvKioKCSAqIFRoZSBjb25zdHJ1Y3Rvci4gV2l0aCB0aGUgc2VxdWVuY2VzIGJlaW5nIHBhc3NlZCwgdGhleSdsbCBiZSBzZXQgZm9yIHRoZQoJICogc2VxdWVuY2UgbWF0Y2hlciBhbmQgaXQgd2lsbCBwZXJmb3JtIGEgYmFzaWMgY2xlYW51cCAmIGNhbGN1bGF0ZSBqdW5rCgkgKiBlbGVtZW50cy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRhIEEgc3RyaW5nIG9yIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIHRvIGNvbXBhcmUgYWdhaW5zdC4KCSAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGIgQSBzdHJpbmcgb3IgYXJyYXkgY29udGFpbmluZyB0aGUgbGluZXMgdG8gY29tcGFyZS4KCSAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGp1bmtDYWxsYmFjayBFaXRoZXIgYW4gYXJyYXkgb3Igc3RyaW5nIHRoYXQgcmVmZXJlbmNlcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIChpZiB0aGVyZSBpcyBvbmUpIHRvIGRldGVybWluZSAnanVuaycgY2hhcmFjdGVycy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhLCAkYiwgJGp1bmtDYWxsYmFjaz1udWxsLCAkb3B0aW9ucykKCXsKCQkkdGhpcy0+YSA9IG51bGw7CgkJJHRoaXMtPmIgPSBudWxsOwoJCSR0aGlzLT5qdW5rQ2FsbGJhY2sgPSAkanVua0NhbGxiYWNrOwoJCSR0aGlzLT5zZXRPcHRpb25zKCRvcHRpb25zKTsKCQkkdGhpcy0+c2V0U2VxdWVuY2VzKCRhLCAkYik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldE9wdGlvbnMoJG9wdGlvbnMpCgl7CgkJJHRoaXMtPm9wdGlvbnMgPSBhcnJheV9tZXJnZSgkdGhpcy0+ZGVmYXVsdE9wdGlvbnMsICRvcHRpb25zKTsKCX0KCgkvKioKCSAqIFNldCB0aGUgZmlyc3QgYW5kIHNlY29uZCBzZXF1ZW5jZXMgdG8gdXNlIHdpdGggdGhlIHNlcXVlbmNlIG1hdGNoZXIuCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYSBBIHN0cmluZyBvciBhcnJheSBjb250YWluaW5nIHRoZSBsaW5lcyB0byBjb21wYXJlIGFnYWluc3QuCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRiIEEgc3RyaW5nIG9yIGFycmF5IGNvbnRhaW5pbmcgdGhlIGxpbmVzIHRvIGNvbXBhcmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRTZXF1ZW5jZXMoJGEsICRiKQoJewoJCSR0aGlzLT5zZXRTZXExKCRhKTsKCQkkdGhpcy0+c2V0U2VxMigkYik7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGZpcnN0IHNlcXVlbmNlICgkYSkgYW5kIHJlc2V0IGFueSBpbnRlcm5hbCBjYWNoZXMgdG8gaW5kaWNhdGUgdGhhdAoJICogd2hlbiBjYWxsaW5nIHRoZSBjYWxjdWxhdGlvbiBtZXRob2RzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZW0uCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYSBUaGUgc2VxdWVuY2UgdG8gc2V0IGFzIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldFNlcTEoJGEpCgl7CgkJaWYoIWlzX2FycmF5KCRhKSkgewoJCQkkYSA9IHN0cl9zcGxpdCgkYSk7CgkJfQoJCWlmKCRhID09ICR0aGlzLT5hKSB7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5hPSAkYTsKCQkkdGhpcy0+bWF0Y2hpbmdCbG9ja3MgPSBudWxsOwoJCSR0aGlzLT5vcENvZGVzID0gbnVsbDsKCX0KCgkvKioKCSAqIFNldCB0aGUgc2Vjb25kIHNlcXVlbmNlICgkYikgYW5kIHJlc2V0IGFueSBpbnRlcm5hbCBjYWNoZXMgdG8gaW5kaWNhdGUgdGhhdAoJICogd2hlbiBjYWxsaW5nIHRoZSBjYWxjdWxhdGlvbiBtZXRob2RzLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZW0uCgkgKgoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkYiBUaGUgc2VxdWVuY2UgdG8gc2V0IGFzIHRoZSBzZWNvbmQgc2VxdWVuY2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRTZXEyKCRiKQoJewoJCWlmKCFpc19hcnJheSgkYikpIHsKCQkJJGIgPSBzdHJfc3BsaXQoJGIpOwoJCX0KCQlpZigkYiA9PSAkdGhpcy0+YikgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+YiA9ICRiOwoJCSR0aGlzLT5tYXRjaGluZ0Jsb2NrcyA9IG51bGw7CgkJJHRoaXMtPm9wQ29kZXMgPSBudWxsOwoJCSR0aGlzLT5mdWxsQkNvdW50ID0gbnVsbDsKCQkkdGhpcy0+Y2hhaW5CKCk7Cgl9CgoJLyoqCgkgKiBHZW5lcmF0ZSB0aGUgaW50ZXJuYWwgYXJyYXlzIGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YganVuayBhbmQgbm9uLWp1bmsKCSAqIGNoYXJhY3RlcnMgZm9yIHRoZSBzZWNvbmQgKCRiKSBzZXF1ZW5jZS4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBjaGFpbkIoKQoJewoJCSRsZW5ndGggPSBjb3VudCAoJHRoaXMtPmIpOwoJCSR0aGlzLT5iMmogPSBhcnJheSgpOwoJCSRwb3B1bGFyRGljdCA9IGFycmF5KCk7CgoJCWZvcigkaSA9IDA7ICRpIDwgJGxlbmd0aDsgKyskaSkgewoJCQkkY2hhciA9ICR0aGlzLT5iWyRpXTsKCQkJaWYoaXNzZXQoJHRoaXMtPmIyalskY2hhcl0pKSB7CgkJCQlpZigkbGVuZ3RoID49IDIwMCAmJiBjb3VudCgkdGhpcy0+YjJqWyRjaGFyXSkgKiAxMDAgPiAkbGVuZ3RoKSB7CgkJCQkJJHBvcHVsYXJEaWN0WyRjaGFyXSA9IDE7CgkJCQkJdW5zZXQoJHRoaXMtPmIyalskY2hhcl0pOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJJHRoaXMtPmIyalskY2hhcl1bXSA9ICRpOwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJJHRoaXMtPmIyalskY2hhcl0gPSBhcnJheSgKCQkJCQkkaQoJCQkJKTsKCQkJfQoJCX0KCgkJLy8gUmVtb3ZlIGxlZnRvdmVycwoJCWZvcmVhY2goYXJyYXlfa2V5cygkcG9wdWxhckRpY3QpIGFzICRjaGFyKSB7CgkJCXVuc2V0KCR0aGlzLT5iMmpbJGNoYXJdKTsKCQl9CgoJCSR0aGlzLT5qdW5rRGljdCA9IGFycmF5KCk7CgkJaWYoaXNfY2FsbGFibGUoJHRoaXMtPmp1bmtDYWxsYmFjaykpIHsKCQkJZm9yZWFjaChhcnJheV9rZXlzKCRwb3B1bGFyRGljdCkgYXMgJGNoYXIpIHsKCQkJCWlmKGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5qdW5rQ2FsbGJhY2ssICRjaGFyKSkgewoJCQkJCSR0aGlzLT5qdW5rRGljdFskY2hhcl0gPSAxOwoJCQkJCXVuc2V0KCRwb3B1bGFyRGljdFskY2hhcl0pOwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoKGFycmF5X2tleXMoJHRoaXMtPmIyaikgYXMgJGNoYXIpIHsKCQkJCWlmKGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5qdW5rQ2FsbGJhY2ssICRjaGFyKSkgewoJCQkJCSR0aGlzLT5qdW5rRGljdFskY2hhcl0gPSAxOwoJCQkJCXVuc2V0KCR0aGlzLT5iMmpbJGNoYXJdKTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIENoZWNrcyBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGlzIGluIHRoZSBqdW5rIGRpY3Rpb25hcnkKCSAqIGZvciB0aGUgbGlzdCBvZiBqdW5rIGNoYXJhY3RlcnMuCgkgKgoJICogQHJldHVybiBib29sZWFuICRiIFRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGp1bmsuIEZhbHNlIGlmIG5vdC4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0JKdW5rKCRiKQoJewoJCWlmKGlzc2V0KCR0aGlzLT5qdW5jRGljdFskYl0pKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBibG9jayBpbiB0aGUgdHdvIHNlcXVlbmNlcywgYXMgZGVmaW5lZCBieSB0aGUKCSAqIGxvd2VyIGFuZCB1cHBlciBjb25zdHJhaW50cyBmb3IgZWFjaCBzZXF1ZW5jZS4gKGZvciB0aGUgZmlyc3Qgc2VxdWVuY2UsCgkgKiAkYWxvIC0gJGFoaSBhbmQgZm9yIHRoZSBzZWNvbmQgc2VxdWVuY2UsICRibG8gLSAkYmhpKQoJICoKCSAqIEVzc2VudGlhbGx5LCBvZiBhbGwgb2YgdGhlIG1heGltYWwgbWF0Y2hpbmcgYmxvY2tzLCByZXR1cm4gdGhlIG9uZSB0aGF0CgkgKiBzdGFydGVzdCBlYXJsaWVzdCBpbiAkYSwgYW5kIGFsbCBvZiB0aG9zZSBtYXhpbWFsIG1hdGNoaW5nIGJsb2NrcyB0aGF0CgkgKiBzdGFydCBlYXJsaWVzdCBpbiAkYSwgcmV0dXJuIHRoZSBvbmUgdGhhdCBzdGFydHMgZWFybGllc3QgaW4gJGIuCgkgKgoJICogSWYgdGhlIGp1bmsgY2FsbGJhY2sgaXMgZGVmaW5lZCwgZG8gdGhlIGFib3ZlIGJ1dCB3aXRoIHRoZSByZXN0cmljdGlvbgoJICogdGhhdCB0aGUganVuayBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGJsb2NrLiBFeHRlbmQgaXQgYXMgZmFyIGFzIHBvc3NpYmxlCgkgKiBieSBtYXRjaGluZyBvbmx5IGp1bmsgZWxlbWVudHMgaW4gYm90aCAkYSBhbmQgJGIuCgkgKgoJICogQHBhcmFtIGludCAkYWxvIFRoZSBsb3dlciBjb25zdHJhaW50IGZvciB0aGUgZmlyc3Qgc2VxdWVuY2UuCgkgKiBAcGFyYW0gaW50ICRhaGkgVGhlIHVwcGVyIGNvbnN0cmFpbnQgZm9yIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqIEBwYXJhbSBpbnQgJGJsbyBUaGUgbG93ZXIgY29uc3RyYWludCBmb3IgdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIEBwYXJhbSBpbnQgJGJoaSBUaGUgdXBwZXIgY29uc3RyYWludCBmb3IgdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgY29udGFpbmluZyB0aGUgbG9uZ2VzdCBtYXRjaCB0aGF0IGluY2x1ZGVzIHRoZSBzdGFydGluZyBwb3NpdGlvbiBpbiAkYSwgc3RhcnQgaW4gJGIgYW5kIHRoZSBsZW5ndGgvc2l6ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZpbmRMb25nZXN0TWF0Y2goJGFsbywgJGFoaSwgJGJsbywgJGJoaSkKCXsKCQkkYSA9ICR0aGlzLT5hOwoJCSRiID0gJHRoaXMtPmI7CgoJCSRiZXN0SSA9ICRhbG87CgkJJGJlc3RKID0gJGJsbzsKCQkkYmVzdFNpemUgPSAwOwoKCQkkajJMZW4gPSBhcnJheSgpOwoJCSRub3RoaW5nID0gYXJyYXkoKTsKCgkJZm9yKCRpID0gJGFsbzsgJGkgPCAkYWhpOyArKyRpKSB7CgkJCSRuZXdKMkxlbiA9IGFycmF5KCk7CgkJCSRqRGljdCA9ICR0aGlzLT5hcnJheUdldERlZmF1bHQoJHRoaXMtPmIyaiwgJGFbJGldLCAkbm90aGluZyk7CgkJCWZvcmVhY2goJGpEaWN0IGFzICRqS2V5ID0+ICRqKSB7CgkJCQlpZigkaiA8ICRibG8pIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCWVsc2UgaWYoJGogPj0gJGJoaSkgewoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCSRrID0gJHRoaXMtPmFycmF5R2V0RGVmYXVsdCgkajJMZW4sICRqIC0xLCAwKSArIDE7CgkJCQkkbmV3SjJMZW5bJGpdID0gJGs7CgkJCQlpZigkayA+ICRiZXN0U2l6ZSkgewoJCQkJCSRiZXN0SSA9ICRpIC0gJGsgKyAxOwoJCQkJCSRiZXN0SiA9ICRqIC0gJGsgKyAxOwoJCQkJCSRiZXN0U2l6ZSA9ICRrOwoJCQkJfQoJCQl9CgoJCQkkajJMZW4gPSAkbmV3SjJMZW47CgkJfQoKCQl3aGlsZSgkYmVzdEkgPiAkYWxvICYmICRiZXN0SiA+ICRibG8gJiYgISR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiAtIDFdKSAmJgoJCQkhJHRoaXMtPmxpbmVzQXJlRGlmZmVyZW50KCRiZXN0SSAtIDEsICRiZXN0SiAtIDEpKSB7CgkJCQktLSRiZXN0STsKCQkJCS0tJGJlc3RKOwoJCQkJKyskYmVzdFNpemU7CgkJfQoKCQl3aGlsZSgkYmVzdEkgKyAkYmVzdFNpemUgPCAkYWhpICYmICgkYmVzdEogKyAkYmVzdFNpemUpIDwgJGJoaSAmJgoJCQkhJHRoaXMtPmlzQkp1bmsoJGJbJGJlc3RKICsgJGJlc3RTaXplXSkgJiYgISR0aGlzLT5saW5lc0FyZURpZmZlcmVudCgkYmVzdEkgKyAkYmVzdFNpemUsICRiZXN0SiArICRiZXN0U2l6ZSkpIHsKCQkJCSsrJGJlc3RTaXplOwoJCX0KCgkJd2hpbGUoJGJlc3RJID4gJGFsbyAmJiAkYmVzdEogPiAkYmxvICYmICR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiAtIDFdKSAmJgoJCQkhJHRoaXMtPmlzTGluZURpZmZlcmVudCgkYmVzdEkgLSAxLCAkYmVzdEogLSAxKSkgewoJCQkJLS0kYmVzdEk7CgkJCQktLSRiZXN0SjsKCQkJCSsrJGJlc3RTaXplOwoJCX0KCgkJd2hpbGUoJGJlc3RJICsgJGJlc3RTaXplIDwgJGFoaSAmJiAkYmVzdEogKyAkYmVzdFNpemUgPCAkYmhpICYmCgkJCSR0aGlzLT5pc0JKdW5rKCRiWyRiZXN0SiArICRiZXN0U2l6ZV0pICYmICEkdGhpcy0+bGluZXNBcmVEaWZmZXJlbnQoJGJlc3RJICsgJGJlc3RTaXplLCAkYmVzdEogKyAkYmVzdFNpemUpKSB7CgkJCQkJKyskYmVzdFNpemU7CgkJfQoKCQlyZXR1cm4gYXJyYXkoCgkJCSRiZXN0SSwKCQkJJGJlc3RKLAoJCQkkYmVzdFNpemUKCQkpOwoJfQoKCS8qKgoJICogQ2hlY2sgaWYgdGhlIHR3byBsaW5lcyBhdCB0aGUgZ2l2ZW4gaW5kZXhlcyBhcmUgZGlmZmVyZW50IG9yIG5vdC4KCSAqCgkgKiBAcGFyYW0gaW50ICRhSW5kZXggTGluZSBudW1iZXIgdG8gY2hlY2sgYWdhaW5zdCBpbiBhLgoJICogQHBhcmFtIGludCAkYkluZGV4IExpbmUgbnVtYmVyIHRvIGNoZWNrIGFnYWluc3QgaW4gYi4KCSAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIHRoZSBsaW5lcyBhcmUgZGlmZmVyZW50IGFuZCBmYWxzZSBpZiBub3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBsaW5lc0FyZURpZmZlcmVudCgkYUluZGV4LCAkYkluZGV4KQoJewoJCSRsaW5lQSA9ICR0aGlzLT5hWyRhSW5kZXhdOwoJCSRsaW5lQiA9ICR0aGlzLT5iWyRiSW5kZXhdOwoKCQlpZigkdGhpcy0+b3B0aW9uc1snaWdub3JlV2hpdGVzcGFjZSddKSB7CgkJCSRyZXBsYWNlID0gYXJyYXkoIlx0IiwgJyAnKTsKCQkJJGxpbmVBID0gc3RyX3JlcGxhY2UoJHJlcGxhY2UsICcnLCAkbGluZUEpOwoJCQkkbGluZUIgPSBzdHJfcmVwbGFjZSgkcmVwbGFjZSwgJycsICRsaW5lQik7CgkJfQoKCQlpZigkdGhpcy0+b3B0aW9uc1snaWdub3JlQ2FzZSddKSB7CgkJCSRsaW5lQSA9IHN0cnRvbG93ZXIoJGxpbmVBKTsKCQkJJGxpbmVCID0gc3RydG9sb3dlcigkbGluZUIpOwoJCX0KCgkJaWYoJGxpbmVBICE9ICRsaW5lQikgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFJldHVybiBhIG5lc3RlZCBzZXQgb2YgYXJyYXlzIGZvciBhbGwgb2YgdGhlIG1hdGNoaW5nIHN1Yi1zZXF1ZW5jZXMKCSAqIGluIHRoZSBzdHJpbmdzICRhIGFuZCAkYi4KCSAqCgkgKiBFYWNoIGJsb2NrIGNvbnRhaW5zIHRoZSBsb3dlciBjb25zdHJhaW50IG9mIHRoZSBibG9jayBpbiAkYSwgdGhlIGxvd2VyCgkgKiBjb25zdHJhaW50IG9mIHRoZSBibG9jayBpbiAkYiBhbmQgZmluYWxseSB0aGUgbnVtYmVyIG9mIGxpbmVzIHRoYXQgdGhlCgkgKiBibG9jayBjb250aW51ZXMgZm9yLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgTmVzdGVkIGFycmF5IG9mIHRoZSBtYXRjaGluZyBibG9ja3MsIGFzIGRlc2NyaWJlZCBieSB0aGUgZnVuY3Rpb24uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRNYXRjaGluZ0Jsb2NrcygpCgl7CgkJaWYoIWVtcHR5KCR0aGlzLT5tYXRjaGluZ0Jsb2NrcykpIHsKCQkJcmV0dXJuICR0aGlzLT5tYXRjaGluZ0Jsb2NrczsKCQl9CgoJCSRhTGVuZ3RoID0gY291bnQoJHRoaXMtPmEpOwoJCSRiTGVuZ3RoID0gY291bnQoJHRoaXMtPmIpOwoKCQkkcXVldWUgPSBhcnJheSgKCQkJYXJyYXkoCgkJCQkwLAoJCQkJJGFMZW5ndGgsCgkJCQkwLAoJCQkJJGJMZW5ndGgKCQkJKQoJCSk7CgoJCSRtYXRjaGluZ0Jsb2NrcyA9IGFycmF5KCk7CgkJd2hpbGUoIWVtcHR5KCRxdWV1ZSkpIHsKCQkJbGlzdCgkYWxvLCAkYWhpLCAkYmxvLCAkYmhpKSA9IGFycmF5X3BvcCgkcXVldWUpOwoJCQkkeCA9ICR0aGlzLT5maW5kTG9uZ2VzdE1hdGNoKCRhbG8sICRhaGksICRibG8sICRiaGkpOwoJCQlsaXN0KCRpLCAkaiwgJGspID0gJHg7CgkJCWlmKCRrKSB7CgkJCQkkbWF0Y2hpbmdCbG9ja3NbXSA9ICR4OwoJCQkJaWYoJGFsbyA8ICRpICYmICRibG8gPCAkaikgewoJCQkJCSRxdWV1ZVtdID0gYXJyYXkoCgkJCQkJCSRhbG8sCgkJCQkJCSRpLAoJCQkJCQkkYmxvLAoJCQkJCQkkagoJCQkJCSk7CgkJCQl9CgoJCQkJaWYoJGkgKyAkayA8ICRhaGkgJiYgJGogKyAkayA8ICRiaGkpIHsKCQkJCQkkcXVldWVbXSA9IGFycmF5KAoJCQkJCQkkaSArICRrLAoJCQkJCQkkYWhpLAoJCQkJCQkkaiArICRrLAoJCQkJCQkkYmhpCgkJCQkJKTsKCQkJCX0KCQkJfQoJCX0KCgkJdXNvcnQoJG1hdGNoaW5nQmxvY2tzLCBhcnJheSgkdGhpcywgJ3R1cGxlU29ydCcpKTsKCgkJJGkxID0gMDsKCQkkajEgPSAwOwoJCSRrMSA9IDA7CgkJJG5vbkFkamFjZW50ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRtYXRjaGluZ0Jsb2NrcyBhcyAkYmxvY2spIHsKCQkJbGlzdCgkaTIsICRqMiwgJGsyKSA9ICRibG9jazsKCQkJaWYoJGkxICsgJGsxID09ICRpMiAmJiAkajEgKyAkazEgPT0gJGoyKSB7CgkJCQkkazEgKz0gJGsyOwoJCQl9CgkJCWVsc2UgewoJCQkJaWYoJGsxKSB7CgkJCQkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJCQkJJGkxLAoJCQkJCQkkajEsCgkJCQkJCSRrMQoJCQkJCSk7CgkJCQl9CgoJCQkJJGkxID0gJGkyOwoJCQkJJGoxID0gJGoyOwoJCQkJJGsxID0gJGsyOwoJCQl9CgkJfQoKCQlpZigkazEpIHsKCQkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJCSRpMSwKCQkJCSRqMSwKCQkJCSRrMQoJCQkpOwoJCX0KCgkJJG5vbkFkamFjZW50W10gPSBhcnJheSgKCQkJJGFMZW5ndGgsCgkJCSRiTGVuZ3RoLAoJCQkwCgkJKTsKCgkJJHRoaXMtPm1hdGNoaW5nQmxvY2tzID0gJG5vbkFkamFjZW50OwoJCXJldHVybiAkdGhpcy0+bWF0Y2hpbmdCbG9ja3M7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBvZiB0aGUgb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCgkgKiB0d28gc3RyaW5ncy4KCSAqCgkgKiBUaGUgbmVzdGVkIGFycmF5IHJldHVybmVkIGNvbnRhaW5zIGFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIG9wY29kZQoJICogd2hpY2ggaW5jbHVkZXM6CgkgKiAwIC0gVGhlIHR5cGUgb2YgdGFnIChhcyBkZXNjcmliZWQgYmVsb3cpIGZvciB0aGUgb3Bjb2RlLgoJICogMSAtIFRoZSBiZWdpbm5pbmcgbGluZSBpbiB0aGUgZmlyc3Qgc2VxdWVuY2UuCgkgKiAyIC0gVGhlIGVuZCBsaW5lIGluIHRoZSBmaXJzdCBzZXF1ZW5jZS4KCSAqIDMgLSBUaGUgYmVnaW5uaW5nIGxpbmUgaW4gdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqIDQgLSBUaGUgZW5kIGxpbmUgaW4gdGhlIHNlY29uZCBzZXF1ZW5jZS4KCSAqCgkgKiBUaGUgZGlmZmVyZW50IHR5cGVzIG9mIHRhZ3MgaW5jbHVkZToKCSAqIHJlcGxhY2UgLSBUaGUgc3RyaW5nIGZyb20gJGkxIHRvICRpMiBpbiAkYSBzaG91bGQgYmUgcmVwbGFjZWQgYnkKCSAqICAgICAgICAgICB0aGUgc3RyaW5nIGluICRiIGZyb20gJGoxIHRvICRqMi4KCSAqIGRlbGV0ZSAtICBUaGUgc3RyaW5nIGluICRhIGZyb20gJGkxIHRvICRqMiBzaG91bGQgYmUgZGVsZXRlZC4KCSAqIGluc2VydCAtICBUaGUgc3RyaW5nIGluICRiIGZyb20gJGoxIHRvICRqMiBzaG91bGQgYmUgaW5zZXJ0ZWQgYXQKCSAqICAgICAgICAgICAkaTEgaW4gJGEuCgkgKiBlcXVhbCAgLSAgVGhlIHR3byBzdHJpbmdzIHdpdGggdGhlIHNwZWNpZmllZCByYW5nZXMgYXJlIGVxdWFsLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgQXJyYXkgb2YgdGhlIG9wY29kZXMgZGVzY3JpYmluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgc3RyaW5ncy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldE9wQ29kZXMoKQoJewoJCWlmKCFlbXB0eSgkdGhpcy0+b3BDb2RlcykpIHsKCQkJcmV0dXJuICR0aGlzLT5vcENvZGVzOwoJCX0KCgkJJGkgPSAwOwoJCSRqID0gMDsKCQkkdGhpcy0+b3BDb2RlcyA9IGFycmF5KCk7CgoJCSRibG9ja3MgPSAkdGhpcy0+Z2V0TWF0Y2hpbmdCbG9ja3MoKTsKCQlmb3JlYWNoKCRibG9ja3MgYXMgJGJsb2NrKSB7CgkJCWxpc3QoJGFpLCAkYmosICRzaXplKSA9ICRibG9jazsKCQkJJHRhZyA9ICcnOwoJCQlpZigkaSA8ICRhaSAmJiAkaiA8ICRiaikgewoJCQkJJHRhZyA9ICdyZXBsYWNlJzsKCQkJfQoJCQllbHNlIGlmKCRpIDwgJGFpKSB7CgkJCQkkdGFnID0gJ2RlbGV0ZSc7CgkJCX0KCQkJZWxzZSBpZigkaiA8ICRiaikgewoJCQkJJHRhZyA9ICdpbnNlcnQnOwoJCQl9CgoJCQlpZigkdGFnKSB7CgkJCQkkdGhpcy0+b3BDb2Rlc1tdID0gYXJyYXkoCgkJCQkJJHRhZywKCQkJCQkkaSwKCQkJCQkkYWksCgkJCQkJJGosCgkJCQkJJGJqCgkJCQkpOwoJCQl9CgoJCQkkaSA9ICRhaSArICRzaXplOwoJCQkkaiA9ICRiaiArICRzaXplOwoKCQkJaWYoJHNpemUpIHsKCQkJCSR0aGlzLT5vcENvZGVzW10gPSBhcnJheSgKCQkJCQknZXF1YWwnLAoJCQkJCSRhaSwKCQkJCQkkaSwKCQkJCQkkYmosCgkJCQkJJGoKCQkJCSk7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5vcENvZGVzOwoJfQoKCS8qKgoJICogUmV0dXJuIGEgc2VyaWVzIG9mIG5lc3RlZCBhcnJheXMgY29udGFpbmluZyBkaWZmZXJlbnQgZ3JvdXBzIG9mIGdlbmVyYXRlZAoJICogb3Bjb2RlcyBmb3IgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHN0cmluZ3Mgd2l0aCB1cCB0byAkY29udGV4dCBsaW5lcwoJICogb2Ygc3Vycm91bmRpbmcgY29udGVudC4KCSAqCgkgKiBFc3NlbnRpYWxseSB3aGF0IGhhcHBlbnMgaGVyZSBpcyBhbnkgYmlnIGVxdWFsIGJsb2NrcyBvZiBzdHJpbmdzIGFyZSBzdHJpcHBlZAoJICogb3V0LCB0aGUgc21hbGxlciBzdWJzZXRzIG9mIGNoYW5nZXMgYXJlIHRoZW4gYXJyYW5nZWQgaW4gdG8gdGhlaXIgZ3JvdXBzLgoJICogVGhpcyBtZWFucyB0aGF0IHRoZSBzZXF1ZW5jZSBtYXRjaGVyIGFuZCBkaWZmcyBkbyBub3QgbmVlZCB0byBpbmNsdWRlIHRoZSBmdWxsCgkgKiBjb250ZW50IG9mIHRoZSBkaWZmZXJlbnQgZmlsZXMgYnV0IGNhbiBzdGlsbCBwcm92aWRlIGNvbnRleHQgYXMgdG8gd2hlcmUgdGhlCgkgKiBjaGFuZ2VzIGFyZS4KCSAqCgkgKiBAcGFyYW0gaW50ICRjb250ZXh0IFRoZSBudW1iZXIgb2YgbGluZXMgb2YgY29udGV4dCB0byBwcm92aWRlIGFyb3VuZCB0aGUgZ3JvdXBzLgoJICogQHJldHVybiBhcnJheSBOZXN0ZWQgYXJyYXkgb2YgYWxsIG9mIHRoZSBncm91cGVkIG9wY29kZXMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRHcm91cGVkT3Bjb2RlcygkY29udGV4dD0zKQoJewoJCSRvcENvZGVzID0gJHRoaXMtPmdldE9wQ29kZXMoKTsKCQlpZihlbXB0eSgkb3BDb2RlcykpIHsKCQkJJG9wQ29kZXMgPSBhcnJheSgKCQkJCWFycmF5KAoJCQkJCSdlcXVhbCcsCgkJCQkJMCwKCQkJCQkxLAoJCQkJCTAsCgkJCQkJMQoJCQkJKQoJCQkpOwoJCX0KCgkJaWYoJG9wQ29kZXNbMF1bMF0gPT0gJ2VxdWFsJykgewoJCQkkb3BDb2Rlc1swXSA9IGFycmF5KAoJCQkJJG9wQ29kZXNbMF1bMF0sCgkJCQltYXgoJG9wQ29kZXNbMF1bMV0sICRvcENvZGVzWzBdWzJdIC0gJGNvbnRleHQpLAoJCQkJJG9wQ29kZXNbMF1bMl0sCgkJCQltYXgoJG9wQ29kZXNbMF1bM10sICRvcENvZGVzWzBdWzRdIC0gJGNvbnRleHQpLAoJCQkJJG9wQ29kZXNbMF1bNF0KCQkJKTsKCQl9CgoJCSRsYXN0SXRlbSA9IGNvdW50KCRvcENvZGVzKSAtIDE7CgkJaWYoJG9wQ29kZXNbJGxhc3RJdGVtXVswXSA9PSAnZXF1YWwnKSB7CgkJCWxpc3QoJHRhZywgJGkxLCAkaTIsICRqMSwgJGoyKSA9ICRvcENvZGVzWyRsYXN0SXRlbV07CgkJCSRvcENvZGVzWyRsYXN0SXRlbV0gPSBhcnJheSgKCQkJCSR0YWcsCgkJCQkkaTEsCgkJCQltaW4oJGkyLCAkaTEgKyAkY29udGV4dCksCgkJCQkkajEsCgkJCQltaW4oJGoyLCAkajEgKyAkY29udGV4dCkKCQkJKTsKCQl9CgoJCSRtYXhSYW5nZSA9ICRjb250ZXh0ICogMjsKCQkkZ3JvdXBzID0gYXJyYXkoKTsKCQkkZ3JvdXAgPSBhcnJheSgpOwoJCWZvcmVhY2goJG9wQ29kZXMgYXMgJGNvZGUpIHsKCQkJbGlzdCgkdGFnLCAkaTEsICRpMiwgJGoxLCAkajIpID0gJGNvZGU7CgkJCWlmKCR0YWcgPT0gJ2VxdWFsJyAmJiAkaTIgLSAkaTEgPiAkbWF4UmFuZ2UpIHsKCQkJCSRncm91cFtdID0gYXJyYXkoCgkJCQkJJHRhZywKCQkJCQkkaTEsCgkJCQkJbWluKCRpMiwgJGkxICsgJGNvbnRleHQpLAoJCQkJCSRqMSwKCQkJCQltaW4oJGoyLCAkajEgKyAkY29udGV4dCkKCQkJCSk7CgkJCQkkZ3JvdXBzW10gPSAkZ3JvdXA7CgkJCQkkZ3JvdXAgPSBhcnJheSgpOwoJCQkJJGkxID0gbWF4KCRpMSwgJGkyIC0gJGNvbnRleHQpOwoJCQkJJGoxID0gbWF4KCRqMSwgJGoyIC0gJGNvbnRleHQpOwoJCQl9CgkJCSRncm91cFtdID0gYXJyYXkoCgkJCQkkdGFnLAoJCQkJJGkxLAoJCQkJJGkyLAoJCQkJJGoxLAoJCQkJJGoyCgkJCSk7CgkJfQoKCQlpZighZW1wdHkoJGdyb3VwKSAmJiAhKGNvdW50KCRncm91cCkgPT0gMSAmJiAkZ3JvdXBbMF1bMF0gPT0gJ2VxdWFsJykpIHsKCQkJJGdyb3Vwc1tdID0gJGdyb3VwOwoJCX0KCgkJcmV0dXJuICRncm91cHM7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBtZWFzdXJlIG9mIHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gdGhlIHR3byBzZXF1ZW5jZXMuCgkgKiBUaGlzIHdpbGwgYmUgYSBmbG9hdCB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuCgkgKgoJICogT3V0IG9mIGFsbCBvZiB0aGUgcmF0aW8gY2FsY3VsYXRpb24gZnVuY3Rpb25zLCB0aGlzIGlzIHRoZSBtb3N0CgkgKiBleHBlbnNpdmUgdG8gY2FsbCBpZiBnZXRNYXRjaGluZ0Jsb2NrcyBvciBnZXRPcENvZGVzIGlzIHlldCB0byBiZQoJICogY2FsbGVkLiBUaGUgb3RoZXIgY2FsY3VsYXRpb24gbWV0aG9kcyAocXVpY2tSYXRpbyBhbmQgcmVhbHF1aWNrUmF0aW8pCgkgKiBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIHF1aWNrZXIgY2FsY3VsYXRpb25zIGJ1dCBtYXkgYmUgbGVzcyBhY2N1cmF0ZS4KCSAqCgkgKiBUaGUgcmF0aW8gaXMgY2FsY3VsYXRlZCBhcyAoMiAqIG51bWJlciBvZiBtYXRjaGVzKSAvIHRvdGFsIG51bWJlciBvZgoJICogZWxlbWVudHMgaW4gYm90aCBzZXF1ZW5jZXMuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIFJhdGlvKCkKCXsKCQkkbWF0Y2hlcyA9IGFycmF5X3JlZHVjZSgkdGhpcy0+Z2V0TWF0Y2hpbmdCbG9ja3MoKSwgYXJyYXkoJHRoaXMsICdyYXRpb1JlZHVjZScpLCAwKTsKCQlyZXR1cm4gJHRoaXMtPmNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCBjb3VudCAoJHRoaXMtPmEpICsgY291bnQgKCR0aGlzLT5iKSk7Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmb3IgUmF0aW8oKS4KCSAqCgkgKiBAcGFyYW0gaW50ICRzdW0gVGhlIHJ1bm5pbmcgdG90YWwgZm9yIHRoZSBudW1iZXIgb2YgbWF0Y2hlcy4KCSAqIEBwYXJhbSBhcnJheSAkdHJpcGxlIEFycmF5IGNvbnRhaW5pbmcgdGhlIG1hdGNoaW5nIGJsb2NrIHRyaXBsZSB0byBhZGQgdG8gdGhlIHJ1bm5pbmcgdG90YWwuCgkgKiBAcmV0dXJuIGludCBUaGUgbmV3IHJ1bm5pbmcgdG90YWwgZm9yIHRoZSBudW1iZXIgb2YgbWF0Y2hlcy4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiByYXRpb1JlZHVjZSgkc3VtLCAkdHJpcGxlKQoJewoJCXJldHVybiAkc3VtICsgKCR0cmlwbGVbY291bnQoJHRyaXBsZSkgLSAxXSk7Cgl9CgoJLyoqCgkgKiBRdWlja2x5IHJldHVybiBhbiB1cHBlciBib3VuZCByYXRpbyBmb3IgdGhlIHNpbWlsYXJpdHkgb2YgdGhlIHN0cmluZ3MuCgkgKiBUaGlzIGlzIHF1aWNrZXIgdG8gY29tcHV0ZSB0aGFuIFJhdGlvKCkuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBxdWlja1JhdGlvKCkKCXsKCQlpZigkdGhpcy0+ZnVsbEJDb3VudCA9PT0gbnVsbCkgewoJCQkkdGhpcy0+ZnVsbEJDb3VudCA9IGFycmF5KCk7CgkJCSRiTGVuZ3RoID0gY291bnQgKCRiKTsKCQkJZm9yKCRpID0gMDsgJGkgPCAkYkxlbmd0aDsgKyskaSkgewoJCQkJJGNoYXIgPSAkdGhpcy0+YlskaV07CgkJCQkkdGhpcy0+ZnVsbEJDb3VudFskY2hhcl0gPSAkdGhpcy0+YXJyYXlHZXREZWZhdWx0KCR0aGlzLT5mdWxsQkNvdW50LCAkY2hhciwgMCkgKyAxOwoJCQl9CgkJfQoKCQkkYXZhaWwgPSBhcnJheSgpOwoJCSRtYXRjaGVzID0gMDsKCQkkYUxlbmd0aCA9IGNvdW50ICgkdGhpcy0+YSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkYUxlbmd0aDsgKyskaSkgewoJCQkkY2hhciA9ICR0aGlzLT5hWyRpXTsKCQkJaWYoaXNzZXQoJGF2YWlsWyRjaGFyXSkpIHsKCQkJCSRudW1iID0gJGF2YWlsWyRjaGFyXTsKCQkJfQoJCQllbHNlIHsKCQkJCSRudW1iID0gJHRoaXMtPmFycmF5R2V0RGVmYXVsdCgkdGhpcy0+ZnVsbEJDb3VudCwgJGNoYXIsIDApOwoJCQl9CgkJCSRhdmFpbFskY2hhcl0gPSAkbnVtYiAtIDE7CgkJCWlmKCRudW1iID4gMCkgewoJCQkJKyskbWF0Y2hlczsKCQkJfQoJCX0KCgkJJHRoaXMtPmNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCBjb3VudCAoJHRoaXMtPmEpICsgY291bnQgKCR0aGlzLT5iKSk7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYW4gdXBwZXIgYm91bmQgcmF0aW8gcmVhbGx5IHF1aWNrbHkgZm9yIHRoZSBzaW1pbGFyaXR5IG9mIHRoZSBzdHJpbmdzLgoJICogVGhpcyBpcyBxdWlja2VyIHRvIGNvbXB1dGUgdGhhbiBSYXRpbygpIGFuZCBxdWlja1JhdGlvKCkuCgkgKgoJICogQHJldHVybiBmbG9hdCBUaGUgY2FsY3VsYXRlZCByYXRpby4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiByZWFscXVpY2tSYXRpbygpCgl7CgkJJGFMZW5ndGggPSBjb3VudCAoJHRoaXMtPmEpOwoJCSRiTGVuZ3RoID0gY291bnQgKCR0aGlzLT5iKTsKCgkJcmV0dXJuICR0aGlzLT5jYWxjdWxhdGVSYXRpbyhtaW4oJGFMZW5ndGgsICRiTGVuZ3RoKSwgJGFMZW5ndGggKyAkYkxlbmd0aCk7Cgl9CgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0aW5nIHRoZSByYXRpbyB0byBtZWFzdXJlIHNpbWlsYXJpdHkgZm9yIHRoZSBzdHJpbmdzLgoJICogVGhlIHJhdGlvIGlzIGRlZmluZWQgYXMgYmVpbmcgMiAqIChudW1iZXIgb2YgbWF0Y2hlcyAvIHRvdGFsIGxlbmd0aCkKCSAqCgkgKiBAcGFyYW0gaW50ICRtYXRjaGVzIFRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbiB0aGUgdHdvIHN0cmluZ3MuCgkgKiBAcGFyYW0gaW50ICRsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgdHdvIHN0cmluZ3MuCgkgKiBAcmV0dXJuIGZsb2F0IFRoZSBjYWxjdWxhdGVkIHJhdGlvLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZVJhdGlvKCRtYXRjaGVzLCAkbGVuZ3RoPTApCgl7CgkJaWYoJGxlbmd0aCkgewoJCQlyZXR1cm4gMiAqICgkbWF0Y2hlcyAvICRsZW5ndGgpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIDE7CgkJfQoJfQoKCS8qKgoJICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcmV0dXJuIHRoZSB2YWx1ZSBmb3IgYSBrZXkKCSAqIGluIGFuIGFycmF5IG9mIGl0IGV4aXN0cywgb3IgaWYgaXQgZG9lc24ndCB0aGVuIHJldHVybiBhIGRlZmF1bHQgdmFsdWUuCgkgKiBFc3NlbnRpYWxseSBjbGVhbmVyIHRoYW4gZG9pbmcgYSBzZXJpZXMgb2YgaWYoaXNzZXQoKSkge30gZWxzZSB7fSBjYWxscy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5IFRoZSBhcnJheSB0byBzZWFyY2guCgkgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleSB0byBjaGVjayB0aGF0IGV4aXN0cy4KCSAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBUaGUgdmFsdWUgdG8gcmV0dXJuIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdC4KCSAqIEByZXR1cm4gbWl4ZWQgVGhlIHZhbHVlIGZyb20gdGhlIGFycmF5IGlmIHRoZSBrZXkgZXhpc3RzIG9yIG90aGVyd2lzZSB0aGUgZGVmYXVsdC4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBhcnJheUdldERlZmF1bHQoJGFycmF5LCAka2V5LCAkZGVmYXVsdCkKCXsKCQlpZihpc3NldCgkYXJyYXlbJGtleV0pKSB7CgkJCXJldHVybiAkYXJyYXlbJGtleV07CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJGRlZmF1bHQ7CgkJfQoJfQoKCS8qKgoJICogU29ydCBhbiBhcnJheSBieSB0aGUgbmVzdGVkIGFycmF5cyBpdCBjb250YWlucy4gSGVscGVyIGZ1bmN0aW9uIGZvciBnZXRNYXRjaGluZ0Jsb2NrcwoJICoKCSAqIEBwYXJhbSBhcnJheSAkYSBGaXJzdCBhcnJheSB0byBjb21wYXJlLgoJICogQHBhcmFtIGFycmF5ICRiIFNlY29uZCBhcnJheSB0byBjb21wYXJlLgoJICogQHJldHVybiBpbnQgLTEsIDAgb3IgMSwgYXMgZXhwZWN0ZWQgYnkgdGhlIHVzb3J0IGZ1bmN0aW9uLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHR1cGxlU29ydCgkYSwgJGIpCgl7CgkJJG1heCA9IG1heChjb3VudCgkYSksIGNvdW50KCRiKSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkbWF4OyArKyRpKSB7CgkJCWlmKCRhWyRpXSA8ICRiWyRpXSkgewoJCQkJcmV0dXJuIC0xOwoJCQl9CgkJCWVsc2UgaWYoJGFbJGldID4gJGJbJGldKSB7CgkJCQlyZXR1cm4gMTsKCQkJfQoJCX0KCgkJaWYoY291bnQoJGEpID09ICRjb3VudCgkYikpIHsKCQkJcmV0dXJuIDA7CgkJfQoJCWVsc2UgaWYoY291bnQoJGEpIDwgY291bnQoJGIpKSB7CgkJCXJldHVybiAtMTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiAxOwoJCX0KCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXRhYmFzZSB0YWJsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkUgTXlJU0FNIENIQVJBQ1RFUiBTRVQgdXRmOCBDT0xMQVRFIHV0ZjhfZ2VuZXJhbF9jaScsICdteXNxbGknID0+ICdFTkdJTkUgTXlJU0FNIENIQVJBQ1RFUiBTRVQgdXRmOCBDT0xMQVRFIHV0ZjhfZ2VuZXJhbF9jaScpOwoKLy8gQ1JFQVRFIFJFVklTSU9OUyBUQUJMRQokZmllbGRzID0gJwoJcmV2aXNpb25faWQgSSBLRVkgTk9UTlVMTCBVTlNJR05FRCwKCXJldmlzaW9uX25yIEkgTk9UTlVMTCBVTlNJR05FRCwKCW1vZHVsZV9uYW1lIEMoMjU1KSBOT1ROVUxMLAoJY29udGVudF9pZCBJIE5PVE5VTEwgVU5TSUdORUQsCgljb250ZW50IFhMIE5PVE5VTEwsIAoJY29udGVudGJsb2NrcyBYIE5VTEwsCgljcmVhdGVfdGltZSBEVCBOT1ROVUxMLAoJdXNlcl9pZCBJIE5PVE5VTEwgVU5TSUdORUQKJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zJywgJGZpZWxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3NlcScpOwoKCi8vLy8gQ1JFQVRFIFJFVklTSU9OU19ESUZGIFRBQkxFCi8vJGZpZWxkcyA9ICcKLy8JaWQgSSBLRVkgQVVUTyBVTlNJR05FRCwKLy8JcmV2aXNpb25faWQgSSBOT1ROVUxMIFVOU0lHTkVELAovLwlibG9ja19uYW1lIEMoMjU1KSBOT1ROVUxMLAovLwliYXNlX29mZnNldCBJIE5PVE5VTEwgVU5TSUdORUQsCi8vCWNoYW5nZWRfb2Zmc2V0IEkgTk9UTlVMTCBVTlNJR05FRCwKLy8JYmFzZSBYIE5PVE5VTEwsCi8vCWNoYW5nZWQgWCBOT1ROVUxMCi8vJzsKLy8kc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfZGlmZicsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7Ci8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gQUREIElOREVYIHJldmlzaW9uX2lkCi8vJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdyZXZpc2lvbl9pZCcsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX2RpZmYnLCBhcnJheSgncmV2aXNpb25faWQnKSk7Ci8vJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8KLy8gQ1JFQVRFIFJFVklTSU9OU19SRUNZQ0xFIFRBQkxFCiRmaWVsZHMgPSAnCglpZCBJIEtFWSBBVVRPIFVOU0lHTkVELAoJbW9kdWxlX25hbWUgQygyNTUpIE5PVE5VTEwsCgljb250ZW50X2lkIEkgTk9UTlVMTCBVTlNJR05FRCwKCWNvbnRlbnRfbmFtZSBDKDI1NSkgTk9UTlVMTCwKCWhpZXJhcmNoeSBDKDI1NSkgTlVMTCwKCWRlcHRoIEkgTlVMTCwKCWNvbnRlbnRfb2JqZWN0IFggTk9UTlVMTCwKCWNyZWF0ZV90aW1lIERUIE5PVE5VTEwsCgl1c2VyX2lkIEkgTk9UTlVMTCBVTlNJR05FRAonOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZScsICRmaWVsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIEFERCBVTklRVUUgKE1PRFVMRV9OQU1FLCBDT05URU5UX0lEKQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ3VuaXF1ZV9jb250ZW50JywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZScsIGFycmF5KCdtb2R1bGVfbmFtZScsICdjb250ZW50X2lkJyksIGFycmF5KCdVTklRVUUnID0+IHRydWUpKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByZWZlcmVuY2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdG9yZV9yZXZpc2lvbnNfY291bnQnLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVsZXRlX3JldmlzaW9uc193aXRoX2NvbnRlbnQnLCAnMCcpOwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFBlcm1pc3Npb25zCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdyZXZpc2lvbnNfdXNlJywgJ1JldmlzaW9uczogVXNlJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdyZXZpc2lvbnNfb3B0aW9ucycsICdSZXZpc2lvbnM6IFNldCBPcHRpb25zJyk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRXZlbnRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQ29udGVudEVkaXRQcmUnLCBmYWxzZSk7CiR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQ29udGVudERlbGV0ZVByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0R2xvYmFsQ29udGVudFByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFByZScsIGZhbHNlKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVTdHlsZXNoZWV0UHJlJywgZmFsc2UpOwoKCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmNoCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwgQ1NTLAojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoIWlzX29iamVjdChjbXNtcygpKSkgZXhpdDsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXRhYmFzZSB0YWJsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3NlcScpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUZW1wbGF0ZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQkKCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByZWZlcmVuY2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUGVybWlzc2lvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ3JldmlzaW9uc19vcHRpb25zJyk7CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRXZlbnRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0JywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnREZWxldGVQcmUnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdEdsb2JhbENvbnRlbnRQb3N0JywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZUdsb2JhbENvbnRlbnRQcmUnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUG9zdCcsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFBvc3QnLCBmYWxzZSk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRGVsZXRlU3R5bGVzaGVldFByZScsIGZhbHNlKTsKCgokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRFZGl0UHJlJywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRUZW1wbGF0ZVByZScsIGZhbHNlKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFByZScsIGZhbHNlKTsK]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPg0KIyBXZWI6IHd3dy5ibGF0dGVydGVjaC5jaA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgUmV2aXNpb25zIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGxvZ3MgY2hhbmdlcyBpbiBjb250ZW50LCBDU1MsDQojIEdDQnMgYW5kIGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gcmV2ZXJ0IHRvIGVhcmxpZXIgdmVyc2lvbnMgb2YgaXQuIA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7DQoNCi8vIEdldCB2ZXJzaW9uDQokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247DQoNCi8vIEdldCBkYiBoYW5kbGUNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFTkdJTkUgTXlJU0FNIENIQVJBQ1RFUiBTRVQgdXRmOCBDT0xMQVRFIHV0ZjhfZ2VuZXJhbF9jaScsICdteXNxbGknID0+ICdFTkdJTkUgTXlJU0FNIENIQVJBQ1RFUiBTRVQgdXRmOCBDT0xMQVRFIHV0ZjhfZ2VuZXJhbF9jaScpOw0KDQpzd2l0Y2ggKCRjdXJyZW50X3ZlcnNpb24pIHsNCgljYXNlICcxLjAtQmV0YSc6DQoJCQ0KCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlJywnaGllcmFyY2h5IEMoMjU1KSBOVUxMLCBkZXB0aCBJIE5VTEwnKTsNCgkJJHJldHVybiA9ICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIFNldCBuZXcgY3VycmVudCB2ZXJzaW9uDQoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMS4wLUJldGExJzsNCn0NCg0KLy8gV3JpdGUgbWVzc2FnZSB0byBhZG1pbiBsb2cNCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBkYXRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQoNCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/Revisions.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEF1dGhvcjogTHVrYXMgQmxhdHRlciwgPGxiQGJsYXR0ZXJ0ZWNoLmNoPgojIFdlYjogd3d3LmJsYXR0ZXJ0ZWNoLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFJldmlzaW9ucyBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBsb2dzIGNoYW5nZXMgaW4gY29udGVudCwKIyB0ZW1wbGF0ZXMsIENTUywgR0NCcyBhbmQgZW5hYmxlcyB0aGUgd2ViIGRldmVsb3BlciB0byB2aWV3IGRpZmYgb3IgcmV2ZXJ0IHRvIGFuIGVhcmxpZXIKIyB2ZXJzaW9uIG9mIGl0LiAKIwojIAojIFRPRE86IHdoYXQgaGFwcGVucyBpZiB1c2VyIHRoYXQgY3JlYXRlZCBhIHJldmlzaW9uIGlzIGRlbGV0ZWQ/CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CgpyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10sImVkaXRjb250ZW50X2V4dHJhLnBocCIpKTsKCmNsYXNzIFJldmlzaW9ucyBleHRlbmRzIENNU01vZHVsZQp7CgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIEF0dHJpYnV0ZXMKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglwcml2YXRlICRfcGVybXM7Cglwcml2YXRlICRfbG9nOwoJcHJvdGVjdGVkICRfZXJyb3JzOwoJcHJvdGVjdGVkICRfZG9uYXRlOwoKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSMgTWFnaWMgbWV0aG9kcwoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXB1YmxpYyBmdW5jdGlvbiAmX19nZXQoJGtleSkKCXsKCSAgICBpZiAoJGtleSA9PSAndXNlcmlkJykKCQl7CgkJCSR1c2VyaWQgPSBnZXRfdXNlcmlkKCk7CgkgICAgICAgIHJldHVybiAkdXNlcmlkOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gcGFyZW50OjpfX2dldCgka2V5KTsKCQl9Cgl9CgkKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKCXsKLy8JCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnQ29udGVudEVkaXRQcmUnLCBmYWxzZSk7Ci8vCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnREZWxldGVQcmUnLCBmYWxzZSk7Ci8vCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0VkaXRHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdEZWxldGVHbG9iYWxDb250ZW50UHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0VGVtcGxhdGVQcmUnLCBmYWxzZSk7Ci8vCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZVRlbXBsYXRlUHJlJywgZmFsc2UpOwovLwkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdFZGl0U3R5bGVzaGVldFByZScsIGZhbHNlKTsKLy8JCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRGVsZXRlU3R5bGVzaGVldFByZScsIGZhbHNlKTsKCQkKCQkkdGhpcy0+X2RvbmF0ZSA9ICc8ZGl2IHN0eWxlPSJmbG9hdDogcmlnaHQiPgoJCQk8Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSJSSlQ5WkdHNTc2NjZFIj4KCQkJPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbG9iamVjdHMuY29tL2RlX0RFL0NIL2kvYnRuL2J0bl9kb25hdGVfU00uZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJFbnR3aWNrbHVuZyB2b24gUmV2aXNpb25zIHVudGVyc3TDvHR6ZW4iPgoJCQk8aW1nIGFsdD0iIiBib3JkZXI9IjAiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsb2JqZWN0cy5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KCQkJPC9mb3JtPjwvZGl2PgoJCSc7CgoJCWlmICgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSA9PSAiMTI3LjAuMC4xIikgJHRoaXMtPl9kb25hdGUgPSAiIjsKCQkKCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CgkJaWYgKCRjb25maWdbJ2RlYnVnJ10pIHsKCQkJaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAxKTsKCQkJZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsKCQl9CgkJCgoJCSR0aGlzLT5TZXRFdmVudE9yZGVyKCk7CgkJcGFyZW50OjpDTVNNb2R1bGUoKTsKCX0KCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIE1vZHVsZSBhcGkgbWV0aG9kcwoJIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCglwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpCgl7CgkJcmV0dXJuICdSZXZpc2lvbnMnOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKQoJewoJCXJldHVybiAnMS4wLUJldGEyJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCgkJJHNtYXJ0eS0+YXNzaWduKCdyb290dXJsJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkdGhpcyk7CgkJJHNtYXJ0eS0+YXNzaWduKCdwYWdlYmFja191cmwnLCAkdGhpcy0+Q3JlYXRlQmFja1VSTCgnJykpOwoJCSRzbWFydHktPmFzc2lnbigncGFnZWJhY2tfdGV4dCcsICR0aGlzLT5MYW5nKCJiYWNrIikpOwoJCSRzbWFydHktPmFzc2lnbignZG9uYXRlJywgJHRoaXMtPl9kb25hdGUpOwoJCgkJZWNobyAkdGhpcy0+R2V0SGVhZGVySFRNTCgpOwoJCQoJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdoZWxwLnRwbCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQoJewoJCXJldHVybiAnTHVrYXMgQmxhdHRlcic7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKCXsKCQlyZXR1cm4gJ2xiQGJsYXR0ZXJ0ZWNoLmNoJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gSXNBZG1pbk9ubHkoKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKCXsKCQlyZXR1cm4gJ2NvbnRlbnQnOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCgl7CgkJJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsKCQlyZXR1cm4gKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ3JldmlzaW9uc191c2UnKSAmJiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbigncmV2aXNpb25zX29wdGlvbnMnKSB8fCAkdGhpcy0+SGFzUGVybSgncGFnZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2h0bWxQZXJtcycpIHx8ICR0aGlzLT5IYXNQZXJtKCd0ZW1wbGF0ZVBlcm1zJykgfHwgJHRoaXMtPkhhc1Blcm0oJ2Nzc1Blcm1zJykpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAnMS4xMC4zJzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKCXsKCQlyZXR1cm4gYXJyYXkoKTsKCQkvL3JldHVybiBhcnJheSgnQWNlRWRpdG9yJyA9PiAnMC4yLjMuMicpOwoJfQoKCQoJcHJpdmF0ZSBmdW5jdGlvbiBMb2coJGxvZ3R4dCkgCgl7CgkJaWYgKGlzX29iamVjdCgkdGhpcy0+X2xvZykpIHsKCQkJJHRoaXMtPl9sb2ctPmx3cml0ZSgkbG9ndHh0KTsKCQl9CgkJZWxzZSB7CQkKCQkJJGxvZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVG9vbEJveCcpOwoJCQlpZiAoaXNfb2JqZWN0KCRsb2cpKSB7CgkJCQkkbG9nLT5zZXRMb2dGaWxlKCd0YlJldmlzaW9ucycpOyAvLyBPcHRpb25hbC4gSGllciBrYW5uIGRlciBOYW1lIGRlcyBMb2dmaWxlcyBmZXN0Z2VsZWd0IHdlcmRlbgoJCQkJJHRoaXMtPl9sb2cgPSAkbG9nOwoJCQkJJHRoaXMtPl9sb2ctPmx3cml0ZSgkbG9ndHh0KTsKCQkJfQoJCX0KCX0KCQoJCglwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCgl7CgkJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwoJCSRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCgkJJHNtYXJ0eS0+YXNzaWduKCdhZG1pbmRpcicsICRjb25maWdbJ2FkbWluX3VybCddKTsKCQkkc21hcnR5LT5hc3NpZ24oJ21vZHVsZWRpcicsICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwoJCSRzbWFydHktPmFzc2lnbigndXNlcmtleScsIGdldF9zZWN1cmVfcGFyYW0oKSk7CgkJaWYodmVyc2lvbl9jb21wYXJlKENNU19WRVJTSU9OLCAnMS4xMS1hbHBoYScpIDwgMSkKCQl7CgkJCSRzbWFydHktPmFzc2lnbignanF1ZXJ5X2NzcycsICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2xpYi9qcXVlcnkvY3NzL3Ntb290aG5lc3MvanF1ZXJ5LXVpLTEuOC4xMi5jdXN0b20uY3NzIiAvPicpOwoJCX0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlYWRlci50cGwnKTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gJycpCgl7CgkJJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwoKCQkkc21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtb2QnLCAkdGhpcyk7CgkJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignYWN0aW9uaWQnLCAkaWQpOwoJCSRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ3JldHVybmlkJywgJHJldHVybmlkKTsKCgkJcGFyZW50OjpEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBEb0V2ZW50KCRvcmlnaW5hdG9yLCAkZXZlbnRuYW1lLCAmJHBhcmFtcykKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREQigpOwoJCSRyZXZpc2lvbl9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcmV2aXNpb25zX3NlcSIpOwoJCQoJCXN3aXRjaCgkb3JpZ2luYXRvciAuICc6JyAuICRldmVudG5hbWUpCgkJewoJCQljYXNlICdDb3JlOkNvbnRlbnRFZGl0UHJlJzoKCQkJCSRjb250ZW50ID0gJHBhcmFtc1snY29udGVudCddOwoJCQkJCgkJCQkvLyBXZW5uIGRpZSBGdW5rdGlvbiBnZXRfY29udGVudF9ibG9ja3MgbmljaHQgZXhpc3RpZXJ0LCB3aXJkIGFiZ2Vicm9jaGVuCgkJCQlpZiAoIW1ldGhvZF9leGlzdHMoJGNvbnRlbnQsICdnZXRfY29udGVudF9ibG9ja3MnKSkgYnJlYWs7CgkJCQkKCQkJCS8vIE5PIE5FVyBQQUdFUwoJCQkJaWYoJGNvbnRlbnQtPklkKCkgPT0gLTEpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJCQoJCQkJJGNvbnRlbnRfYmxvY2tzID0gYXJyYXlfa2V5cygkY29udGVudC0+Z2V0X2NvbnRlbnRfYmxvY2tzKCkpOwoJCQkJJHBhcm0gPSBhcnJheSgpOwoJCQkJJGlzSWRlbnRpY2FsID0gdHJ1ZTsKCQkJCS8vIGFsdGUgSW5oYWx0ZSBhdXNsZXNlbgoJCQkJZm9yZWFjaCgkY29udGVudF9ibG9ja3MgYXMgJHByb3BlcnR5KQoJCQkJewoJCQkJCSRuZXcgPSAkY29udGVudC0+R2V0UHJvcGVydHlWYWx1ZSgkcHJvcGVydHkpOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGNvbnRlbnQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ID8gQU5EIHByb3BfbmFtZSA9ID8gTElNSVQgMScsIGFycmF5KCRjb250ZW50LT5JZCgpLCAkcHJvcGVydHkpKTsKCQkJCQkkcGFybVskcHJvcGVydHldID0gJG9sZCA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQkKCQkJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQkJaWYgKGlzX2FycmF5KCRuZXcpIGFuZCBpc3NldCgkbmV3Wydjb250ZW50J10pKSAkbmV3ID0gJG5ld1snY29udGVudCddOwkKCQkJCQkvLyB2ZXJnbGVpY2huZSBvYiBldHdhcyBnZcOkbmRlcnQgaGF0CgkJCQkJaWYgKCRuZXcgIT0gJG9sZCkgJGlzSWRlbnRpY2FsID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJCWlmICgkaXNJZGVudGljYWwpIGJyZWFrOwoJCQkJCgkJCQkkY29udGVudG9iaiA9IGNsb25lICRjb250ZW50OwoJCQkJZm9yZWFjaCAoJHBhcm0gYXMgJHByb3AgPT4gJHZhbHVlKSB7CgkJCQkJJGNvbnRlbnRvYmotPlNldFByb3BlcnR5VmFsdWUoJHByb3AsJHZhbHVlKTsKCQkJCX0KCQkJCQoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICdjb250ZW50JywgJGNvbnRlbnQtPklkKCksICRjb250ZW50b2JqLCAkY29udGVudC0+Z2V0X2NvbnRlbnRfYmxvY2tzKCksICRjb250ZW50b2JqLT5HZXRNb2RpZmllZERhdGUoKSk7CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICdDb3JlOkNvbnRlbnREZWxldGVQcmUnOgoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JykgPT0gMCkgewoJCQkJCQoJCQkJCSRjb250ZW50b3BzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQkJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkcGFyYW1zWydjb250ZW50J10tPklkKCksIHRydWUpOwoJCQkJCQoJCQkJCSRjb250ZW50X2Jsb2NrcyA9IGFycmF5X2tleXMoJGNvbnRlbnRvYmotPmdldF9jb250ZW50X2Jsb2NrcygpKTsKCQkJCQkkcGFybSA9IGFycmF5KCk7CgkJCQkJLy8gYWx0ZSBJbmhhbHRlIGF1c2xlc2VuCgkJCQkJZm9yZWFjaCgkY29udGVudF9ibG9ja3MgYXMgJHByb3BlcnR5KQoJCQkJCXsKCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgY29udGVudCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkID0gPyBBTkQgcHJvcF9uYW1lID0gPyBMSU1JVCAxJywgYXJyYXkoJGNvbnRlbnRvYmotPklkKCksICRwcm9wZXJ0eSkpOwoJCQkJCQkkb2xkID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQkJCSRjb250ZW50b2JqLT5TZXRQcm9wZXJ0eVZhbHVlKCRwcm9wZXJ0eSwkb2xkKTsKCQkJCQl9CgkJCQkJCgkJCQkJJHRoaXMtPlJlY3ljbGVDb250ZW50KCdjb250ZW50JywgJHBhcmFtc1snY29udGVudCddLT5JZCgpLCAkcGFyYW1zWydjb250ZW50J10tPk1lbnVUZXh0KCksICRjb250ZW50b2JqLCAkcGFyYW1zWydjb250ZW50J10tPkdldE1vZGlmaWVkRGF0ZSgpKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJ2NvbnRlbnQnLCAkcGFyYW1zWydjb250ZW50J10tPklkKCkpOwoJCQkJfQoJCQkJYnJlYWs7CgoJCQljYXNlICdDb3JlOkVkaXRHbG9iYWxDb250ZW50UHJlJzoKCQkJCSRnY2JfbmV3ID0gJHBhcmFtc1snZ2xvYmFsX2NvbnRlbnQnXTsKCQkJCWlmICgkZ2NiX25ldy0+aWQgPT0gLTEpIGJyZWFrOyAKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGh0bWwgQVMgY29udGVudCwgbW9kaWZpZWRfZGF0ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnaHRtbGJsb2JzIFdIRVJFIGh0bWxibG9iX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJGdjYl9uZXctPmlkKSk7CgkJCQkkZ2NiID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICdnY2InLCAkZ2NiX25ldy0+aWQsICRnY2JbJ2NvbnRlbnQnXSwgIiIsIHN0cnRvdGltZSgkZ2NiWydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAnQ29yZTpEZWxldGVHbG9iYWxDb250ZW50UHJlJzoKCQkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpID09IDApIHsKCQkJCQkkdGhpcy0+UmVjeWNsZUNvbnRlbnQoJ2djYicsICRwYXJhbXNbJ2dsb2JhbF9jb250ZW50J10tPmlkLCAkcGFyYW1zWydnbG9iYWxfY29udGVudCddLT5uYW1lLCAkcGFyYW1zWydnbG9iYWxfY29udGVudCddLCAkcGFyYW1zWydnbG9iYWxfY29udGVudCddLT5tb2RpZmllZF9kYXRlKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJ2djYicsICRwYXJhbXNbJ2dsb2JhbF9jb250ZW50J10tPmlkKTsKCQkJCX0KCQkJCWJyZWFrOwoKCQkJY2FzZSAnQ29yZTpFZGl0VGVtcGxhdGVQcmUnOgoJCQkJJHRlbXBsYXRlX25ldyA9ICRwYXJhbXNbJ3RlbXBsYXRlJ107CgkJCQlpZiAoJHRlbXBsYXRlX25ldy0+aWQgPT0gLTEpIGJyZWFrOyAKCQkJCQoJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgdGVtcGxhdGVfY29udGVudCBBUyBjb250ZW50LCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICd0ZW1wbGF0ZXMgV0hFUkUgdGVtcGxhdGVfaWQgPSA/IExJTUlUIDEnLCBhcnJheSgkdGVtcGxhdGVfbmV3LT5pZCkpOwoJCQkJJHRlbXBsYXRlID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICd0ZW1wbGF0ZScsICR0ZW1wbGF0ZV9uZXctPmlkLCAkdGVtcGxhdGVbJ2NvbnRlbnQnXSwgIiIsIHN0cnRvdGltZSgkdGVtcGxhdGVbJ21vZGlmaWVkX2RhdGUnXSkpOwoJCQkJYnJlYWs7CgoJCQljYXNlICdDb3JlOkRlbGV0ZVRlbXBsYXRlUHJlJzoKCQkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpID09IDApCXsKCQkJCQkkdGhpcy0+UmVjeWNsZUNvbnRlbnQoJ3RlbXBsYXRlJywgJHBhcmFtc1sndGVtcGxhdGUnXS0+aWQsICRwYXJhbXNbJ3RlbXBsYXRlJ10tPm5hbWUsICRwYXJhbXNbJ3RlbXBsYXRlJ10sICRwYXJhbXNbJ3RlbXBsYXRlJ10tPm1vZGlmaWVkX2RhdGUpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJJHRoaXMtPkRlbGV0ZVJldmlzaW9ucygndGVtcGxhdGUnLCAkcGFyYW1zWyd0ZW1wbGF0ZSddLT5pZCk7CgkJCQl9CgkJCQlicmVhazsKCgkJCWNhc2UgJ0NvcmU6RWRpdFN0eWxlc2hlZXRQcmUnOgoJCQkJJHN0eWxlc2hlZXRfbmV3ID0gJHBhcmFtc1snc3R5bGVzaGVldCddOwoJCQkJaWYgKCRzdHlsZXNoZWV0X25ldy0+aWQgPT0gLTEpIGJyZWFrOyAKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGNzc190ZXh0IEFTIGNvbnRlbnQsIG1vZGlmaWVkX2RhdGUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NzcyBXSEVSRSBjc3NfaWQgPSA/IExJTUlUIDEnLCBhcnJheSgkc3R5bGVzaGVldF9uZXctPmlkKSk7CgkJCQkkc3R5bGVzaGVldCA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAnc3R5bGVzaGVldCcsICRzdHlsZXNoZWV0X25ldy0+aWQsICRzdHlsZXNoZWV0Wydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJHN0eWxlc2hlZXRbJ21vZGlmaWVkX2RhdGUnXSkpOwoJCQkJYnJlYWs7CgoJCQljYXNlICdDb3JlOkRlbGV0ZVN0eWxlc2hlZXRQcmUnOgoJCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlbGV0ZV9yZXZpc2lvbnNfd2l0aF9jb250ZW50JykgPT0gMCkJewoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIG1vZGlmaWVkX2RhdGUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ2NzcyBXSEVSRSBjc3NfaWQgPSA/JywgYXJyYXkoJHBhcmFtc1snc3R5bGVzaGVldCddLT5pZCkpOwoJCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkJJHRoaXMtPlJlY3ljbGVDb250ZW50KCdzdHlsZXNoZWV0JywgJHBhcmFtc1snc3R5bGVzaGVldCddLT5pZCwgJHBhcmFtc1snc3R5bGVzaGVldCddLT5uYW1lLCAkcGFyYW1zWydzdHlsZXNoZWV0J10sIHN0cnRvdGltZSgkcm93Wydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJ3N0eWxlc2hlZXQnLCAkcGFyYW1zWydzdHlsZXNoZWV0J10tPmlkKTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCX0KCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkjIEludGVybmFsIG1ldGhvZHMKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZvaWRSZWN5Y2xlQmluKCkKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREQigpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIG1vZHVsZV9uYW1lLCBjb250ZW50X2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX3JlY3ljbGUnKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJHJvd1snbW9kdWxlX25hbWUnXSwgJHJvd1snY29udGVudF9pZCddKTsKCQl9CgkJJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZScpOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBEZWxldGVBbGxSZXZpc2lvbnNCdXQoJHJldGFpbikKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIG1vZHVsZV9uYW1lLCBjb250ZW50X2lkLCBDT1VOVChyZXZpc2lvbl9pZCkgQVMgY291bnQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnMgR1JPVVAgQlkgbW9kdWxlX25hbWUsIGNvbnRlbnRfaWQnKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRsaW1pdCA9ICRyb3dbJ2NvdW50J10gLSAkcmV0YWluOwoJCQlpZigkbGltaXQgPiAwKQoJCQl7CgkJCQkkdGhpcy0+RGVsZXRlUmV2aXNpb25zKCRyb3dbJ21vZHVsZV9uYW1lJ10sICRyb3dbJ2NvbnRlbnRfaWQnXSwgJGxpbWl0KTsKCQkJfQoJCX0KCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gRGVsZXRlUmV2aXNpb25zKCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQsICRsaW1pdCA9IGZhbHNlKQoJewoJCSRkYiA9IGNtc21zKCktPkdldERCKCk7CgkJJHF1ZXJ5ID0gJ1NFTEVDVCByZXZpc2lvbl9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JzsKCQlpZigkbGltaXQgIT09IGZhbHNlKQoJCXsKCQkJJHF1ZXJ5IC49ICcgT1JERVIgQlkgY3JlYXRlX3RpbWUgQVNDIExJTUlUICcgLiAkbGltaXQ7CgkJfQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRkYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zX2RpZmYgV0hFUkUgcmV2aXNpb25faWQgPSA/JywgYXJyYXkoJHJvd1sncmV2aXNpb25faWQnXSkpOwoJCX0KCQkkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8nOwoJCWlmKCRsaW1pdCAhPT0gZmFsc2UpCgkJewoJCQkkcXVlcnkgLj0gJyBPUkRFUiBCWSBjcmVhdGVfdGltZSBBU0MgTElNSVQgJyAuICRsaW1pdDsKCQl9CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBEZWxldGVSZXZpc2lvbigkcmV2aXNpb25faWQpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCQkkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSByZXZpc2lvbl9pZCA9ID8nLCBhcnJheSgkcmV2aXNpb25faWQpKTsKCQkkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19kaWZmIFdIRVJFIHJldmlzaW9uX2lkID0gPycsIGFycmF5KCRyZXZpc2lvbl9pZCkpOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBSZXN0b3JlUmVjeWNsZWRDb250ZW50KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpCgl7CgkJZ2xvYmFsICRpZDsKCQkKCQkkZ0NtcyA9IGNtc21zKCk7CgkJCgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgY29udGVudF9vYmplY3QgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/JywgYXJyYXkoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJJGNvbnRlbnRvYmogPSBVbnNlcmlhbGl6ZU9iamVjdCgkcm93Wydjb250ZW50X29iamVjdCddKTsKCQkKCQlpZiAoJG1vZHVsZV9uYW1lID09ICJjb250ZW50IikgewoJCQkKCQkJJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkJJGZyb21vYmogPSAkY29udGVudG9iajsKCQkJJGZyb21vYmotPkdldEFkZGl0aW9uYWxFZGl0b3JzKCk7CgkJCSRmcm9tb2JqLT5Qcm9wZXJ0aWVzKCk7CgkJCSRwYXJlbnRvYmogPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQoJGZyb21vYmotPlBhcmVudElkKCkpOwoJCQkKCQkJJHRvX3VybCA9ICRjb250ZW50b2JqLT5VUkwoKTsKCQkJJHRvX2FsaWFzID0gJGNvbnRlbnRvYmotPkFsaWFzKCk7CgkJCSR0b190aXRsZSA9ICRjb250ZW50b2JqLT5OYW1lKCk7CgkJCSR0b19tZW51dGV4dCA9ICRjb250ZW50b2JqLT5NZW51VGV4dCgpOwoJCQkkdG9fcGFyZW50aWQgPSAtMTsKCQkJaWYgKGlzX29iamVjdCgkcGFyZW50b2JqKSkgewoJCQkJJHRvX3BhcmVudGlkID0gJGZyb21vYmotPlBhcmVudElkKCk7CgkJCX0KCQkJJHRvX2FjY2Vzc2tleSA9ICRjb250ZW50b2JqLT5BY2Nlc3NLZXkoKTsKCQkJCgkJCS8vIGtvcGllcmUgZGFzIE9iamVrdCAKCQkJJHRtcG9iaiA9IGNsb25lICRmcm9tb2JqOwoJCQkJCgkJCS8vIEbDvGxsdCBkaWUgbm90d2VuZGlnZW4gSW5oYWx0ZSBpbSBrb3BpZXJ0ZW4gT2JqZWt0IHdpZWRlcgoJCQkkdG1wb2JqLT5TZXRVUkwoJHRvX3VybCk7CgkJCSR0bXBvYmotPlNldE5hbWUoJHRvX3RpdGxlKTsKCQkJJHRtcG9iai0+U2V0TWVudVRleHQoJHRvX21lbnV0ZXh0KTsKCQkJJHRtcG9iai0+U2V0QWxpYXMoJHRvX2FsaWFzKTsKCQkJJHRtcG9iai0+U2V0UGFyZW50SWQoJHRvX3BhcmVudGlkKTsKCQkJJHRtcG9iai0+U2V0T2xkUGFyZW50SWQoJHRvX3BhcmVudGlkKTsKCQkJCgkJCSR0bXBvYmotPlNldERlZmF1bHRDb250ZW50KDApOwoJCQkkdG1wb2JqLT5TZXRPd25lcihnZXRfdXNlcmlkKCkpOwoJCQkkdG1wb2JqLT5TZXRMYXN0TW9kaWZpZWRCeShnZXRfdXNlcmlkKCkpOwoJCQkJCgkJCS8vIFRoaXMgc2hvdWxkbid0IGJlIG5lZWRlZCBiZWNhdXNlIHRoZSBvYmplY3Qgd2FzIGNvcGllZAoJCQkkdG1wb2JqLT5TZXRTaG93SW5NZW51KCRjb250ZW50b2JqLT5TaG93SW5NZW51KCkpOwoJCQkkdG1wb2JqLT5TZXRBZGRpdGlvbmFsRWRpdG9ycygkY29udGVudG9iai0+R2V0QWRkaXRpb25hbEVkaXRvcnMoKSk7CgkJCSR0bXBvYmotPlNldEFjdGl2ZSgkY29udGVudG9iai0+QWN0aXZlKCkpOwoJCQkKCQkJLy8gTm93IG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIG9rYXksIGFuZCBtb3ZlIGZvcndhcmQuCgkJCSRyZXMgPSAkdG1wb2JqLT5WYWxpZGF0ZURhdGEoKTsKCQkJaWYoICRyZXMgPT09IEZBTFNFICkKCQkJewoJCQkJLy8gZXZlcnl0aGluZyBpcyBva2F5Li4uIHNhdmUgaXQKCQkJCS8vIGFuZCBtYWtlIHN1cmUgdGhlIGhpZXJhcmNoeSBzdHVmZiB3b3Jrcy4KCQkJCSR0bXBvYmotPlNhdmUoKTsKCQkJCSRjb250ZW50b3BzLT5TZXRBbGxIaWVyYXJjaHlQb3NpdGlvbnMoKTsKCQkJCQoJCQkJcmV0dXJuICR0bXBvYmo7CgkJCX0KCQkJZWxzZSB7CgkJCQkkdGhpcy0+X2Vycm9ycyA9ICRyZXM7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJZWxzZSB7CgkJCSRjb250ZW50b2JqLT5pZCA9IC0xOwoJCQkkY29udGVudG9iai0+U2F2ZSgpOwoJCX0KCQlyZXR1cm4gJGNvbnRlbnRvYmo7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBSZWN5Y2xlQ29udGVudCgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkY29udGVudF9uYW1lLCAkY29udGVudF9vYmosICRjcmVhdGVfdHMpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCQkkY291bnRfcmV2aXNpb24gPSAkZGItPkdldE9uZSgnc2VsZWN0IGNvdW50KHJldmlzaW9uX2lkKSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/ICcsYXJyYXkoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoJCQoJCS8vIFJldmlzaW9uIGRlcyBha3R1ZWxsZW4gQ29udGVudHMgZXJzdGVsbGVuCgkJCgkJJGhpZXJhcmNoeSA9ICcnOwoJCSRkZXB0aCA9IDA7CgkJCgkJJHJldmlzaW9uX2lkID0gJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9yZXZpc2lvbnNfc2VxIik7CgkJc3dpdGNoKCRtb2R1bGVfbmFtZSkKCQl7CgkJCWNhc2UgJ2NvbnRlbnQnOgoJCQkJCgkJCQkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkY29udGVudF9pZCwgdHJ1ZSk7CgkJCQkkY29udGVudF9ibG9ja3MgPSBhcnJheV9rZXlzKCRjb250ZW50b2JqLT5nZXRfY29udGVudF9ibG9ja3MoKSk7CgkJCQkKCQkJCWZvcmVhY2goJGNvbnRlbnRfYmxvY2tzIGFzICRwcm9wZXJ0eSkKCQkJCXsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjb250ZW50X3Byb3BzIFdIRVJFIGNvbnRlbnRfaWQgPSA/IEFORCBwcm9wX25hbWUgPSA/IExJTUlUIDEnLCBhcnJheSgkY29udGVudG9iai0+SWQoKSwgJHByb3BlcnR5KSk7CgkJCQkJJG9sZCA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCQlpZiAoaXNfYXJyYXkoJG9sZCkgYW5kIGlzc2V0KCRvbGRbJ2NvbnRlbnQnXSkpICRvbGQgPSAkb2xkWydjb250ZW50J107CgkJCQkJJGNvbnRlbnRvYmotPlNldFByb3BlcnR5VmFsdWUoJHByb3BlcnR5LCRvbGQpOwoJCQkJfQoJCQkJCgkJCQkkcXVlcnkgPSAnU0VMRUNUIGhpZXJhcmNoeSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnY29udGVudCB3aGVyZSBjb250ZW50X2lkID0gPyc7CgkJCQkkaGllcmFyY2h5ID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCRjb250ZW50X2lkKSk7CgkJCQkKCQkJCSRoaWVyYXJjaHkgPSAkY29udGVudG9wcy0+Q3JlYXRlRnJpZW5kbHlIaWVyYXJjaHlQb3NpdGlvbigkaGllcmFyY2h5KTsKCQkJCSRkZXB0aCA9IHN1YnN0cl9jb3VudCgkaGllcmFyY2h5LCAnLicpOwoJCQkJCgkJCQkkdGhpcy0+U2F2ZVJldmlzaW9uKCRyZXZpc2lvbl9pZCwgJ2NvbnRlbnQnLCAkY29udGVudF9pZCwgJGNvbnRlbnRfb2JqLCAkY29udGVudF9vYmotPmdldF9jb250ZW50X2Jsb2NrcygpLCAkY29udGVudG9iai0+R2V0TW9kaWZpZWREYXRlKCkpOwoJCQkJYnJlYWs7CgkJCQkKCQkJY2FzZSAnZ2NiJzoKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIGh0bWwgQVMgY29udGVudCwgbW9kaWZpZWRfZGF0ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnaHRtbGJsb2JzIFdIRVJFIGh0bWxibG9iX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJGNvbnRlbnRfaWQpKTsKCQkJCSRnY2IgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkdGhpcy0+U2F2ZVJldmlzaW9uKCRyZXZpc2lvbl9pZCwgJ2djYicsICRjb250ZW50X2lkLCAkZ2NiWydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJGdjYlsnbW9kaWZpZWRfZGF0ZSddKSk7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIHRlbXBsYXRlX2NvbnRlbnQgQVMgY29udGVudCwgbW9kaWZpZWRfZGF0ZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAndGVtcGxhdGVzIFdIRVJFIHRlbXBsYXRlX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJGNvbnRlbnRfaWQpKTsKCQkJCSR0ZW1wbGF0ZSA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSR0aGlzLT5TYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAndGVtcGxhdGUnLCAkY29udGVudF9pZCwgJHRlbXBsYXRlWydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJHRlbXBsYXRlWydtb2RpZmllZF9kYXRlJ10pKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAnc3R5bGVzaGVldCc6CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjc3NfdGV4dCBBUyBjb250ZW50LCBtb2RpZmllZF9kYXRlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjc3MgV0hFUkUgY3NzX2lkID0gPyBMSU1JVCAxJywgYXJyYXkoJGNvbnRlbnRfaWQpKTsKCQkJCSRzdHlsZXNoZWV0ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJHRoaXMtPlNhdmVSZXZpc2lvbigkcmV2aXNpb25faWQsICdzdHlsZXNoZWV0JywgJGNvbnRlbnRfaWQsICRzdHlsZXNoZWV0Wydjb250ZW50J10sICIiLCBzdHJ0b3RpbWUoJHN0eWxlc2hlZXRbJ21vZGlmaWVkX2RhdGUnXSkpOwoJCQkJYnJlYWs7CgkJfQkJCQoJCgkJJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSAobW9kdWxlX25hbWUsIGNvbnRlbnRfaWQsIGNvbnRlbnRfbmFtZSwgY29udGVudF9vYmplY3QsIGhpZXJhcmNoeSwgZGVwdGgsIGNyZWF0ZV90aW1lLCB1c2VyX2lkKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8pJywKCQkJYXJyYXkoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCwgJGNvbnRlbnRfbmFtZSwgU2VyaWFsaXplT2JqZWN0KCRjb250ZW50X29iaiksICRoaWVyYXJjaHksICRkZXB0aCwgZGF0ZSgnWS1tLWQgSDppOnMnLCAkY3JlYXRlX3RzKSwgJHRoaXMtPnVzZXJpZCkpOwoJfQoJCglwcm90ZWN0ZWQgZnVuY3Rpb24gU2V0RXZlbnRPcmRlcigpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkKCQkkcmV2ZXZlbnRzID0gYXJyYXkoJ2NvcmU6Q29udGVudEVkaXRQcmUnLCdjb3JlOkVkaXRHbG9iYWxDb250ZW50UHJlJywnY29yZTpFZGl0VGVtcGxhdGVQcmUnLCdjb3JlOkVkaXRTdHlsZXNoZWV0UHJlJyk7CgkJCgkJZm9yZWFjaCgkcmV2ZXZlbnRzIGFzICRyZXZldmVudCkgewoJCQoJCQkkZSA9IGV4cGxvZGUoIjoiLCRyZXZldmVudCk7CgkJCQoJCQkvLyBHZXQgdGhlIGV2ZW50IGlkCgkJCSRxID0gIlNFTEVDVCBldmVudF9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidldmVudHMgV0hFUkUgb3JpZ2luYXRvciA9ID8gYW5kIGV2ZW50X25hbWUgPSA/JzsKCQkJJGV2ZW50X2lkID0gJGRiLT5HZXRPbmUoJHEsYXJyYXkoJGVbMF0sJGVbMV0pKTsKCQkJCgkJCSRxID0gIlNFTEVDVCBoYW5kbGVyX29yZGVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuJ2V2ZW50X2hhbmRsZXJzIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBhbmQgZXZlbnRfaWQgPSA/JzsKCQkJJGN1cl9vcmRlciA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCJSZXZpc2lvbnMiLCRldmVudF9pZCkpOwoJCQkKCQkJJHEgPSAiU0VMRUNUIGhhbmRsZXJfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nZXZlbnRfaGFuZGxlcnMgV0hFUkUgbW9kdWxlX25hbWUgPSA/IGFuZCBldmVudF9pZCA9ID8nOwoJCQkkaGFuZGxlciA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCJSZXZpc2lvbnMiLCRldmVudF9pZCkpOwoKCQkJCgkJCS8vIEdldCB0aGUgbmV4dCBoYW5kbGVyIGlkCgkJCSRxID0gJ1NFTEVDVCBoYW5kbGVyX2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2V2ZW50X2hhbmRsZXJzIFdIRVJFIGhhbmRsZXJfb3JkZXIgPSA/CgkgICAgICAgICAgICAgICAgICAgIEFORCBldmVudF9pZCA9ID8nOwoJCQkkbmV4dF9pZCA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCRjdXJfb3JkZXIgKyAxLCRldmVudF9pZCkpOwoJCQkKCQkJaWYoJG5leHRfaWQpIHsKCQkJCS8vIEdldCB0aGUgbmV4dCBoYW5kbGVyIGlkCgkJCQkkcSA9ICdTRUxFQ1QgaGFuZGxlcl9pZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidldmVudF9oYW5kbGVycyBXSEVSRSBoYW5kbGVyX29yZGVyID0gPwoJCSAgICAgICAgICAgICAgICAgICAgQU5EIGV2ZW50X2lkID0gPyc7CgkJCQkkbmV4dF9pZCA9ICRkYi0+R2V0T25lKCRxLGFycmF5KCRjdXJfb3JkZXIgKyAxLCRldmVudF9pZCkpOwoJCQkJaWYoICRuZXh0X2lkICkKCQkJCXsKCQkJCQkkcSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImV2ZW50X2hhbmRsZXJzIFNFVCBoYW5kbGVyX29yZGVyID0gKGhhbmRsZXJfb3JkZXIgKyAxKQoJCQkJCQkJd2hlcmUgaGFuZGxlcl9pZCA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaGFuZGxlciApICk7CgkJCgkJCQkJJHEgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJldmVudF9oYW5kbGVycyBTRVQgaGFuZGxlcl9vcmRlciA9IChoYW5kbGVyX29yZGVyIC0gMSkKCQkJCQkJCXdoZXJlIGhhbmRsZXJfaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5leHRfaWQgKSApOwoJCQkJfQoJCQkKCQkJfQkJCgkJfQkKCX0KCQoJCgkvLyBUT0RPOiBGdW5rdGlvbiBDb21wYXJlQ29udGVudE9iaiBzY2hyZWliZW4KCXByb3RlY3RlZCBmdW5jdGlvbiBDb21wYXJlQ29udGVudE9iaigkbmV3Y29udGVudG9iaiwgJGNvbnRlbnRibG9ja3MsICRvbGRjb250ZW50b2JqKQoJewoJCWlmIChnZXRfY2xhc3MoJG5ld2NvbnRlbnRvYmopICE9IGdldF9jbGFzcygkb2xkY29udGVudG9iaikpIHJldHVybiBmYWxzZTsKCQkKCQkkY29udGVudGJsb2NrczEgPSBhcnJheSgpOwoJCSRjb250ZW50YmxvY2tzMiA9IGFycmF5KCk7CgkJCgkJZm9yZWFjaCAoJGNvbnRlbnRibG9ja3MgYXMgJGJsb2NrKSB7CgkJCSRjb250ZW50YmxvY2tzMVskYmxvY2tdID0gJG5ld2NvbnRlbnRvYmotPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrKTsKCQkJJGNvbnRlbnRibG9ja3MyWyRibG9ja10gPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2spOwoJCX0KCgkJaWYgKCRjb250ZW50YmxvY2tzMSAhPSAkY29udGVudGJsb2NrczIpIHJldHVybiBmYWxzZTsKCQkKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoKCXByb3RlY3RlZCBmdW5jdGlvbiBTYXZlUmV2aXNpb24oJHJldmlzaW9uX2lkLCAkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkY29udGVudCwgJGNvbnRlbnRibG9ja3MsICRjcmVhdGVfdHMpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0REIoKTsKCQkKCQkvLyBLb250cm9sbGUgb2IgSW5oYWx0IGdlw6RuZGVydCBoYXQKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50LCByZXZpc2lvbl9pZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIGNvbnRlbnRfaWQgPSA/IG9yZGVyIGJ5IGNyZWF0ZV90aW1lIGRlc2MgTElNSVQgMScsIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkkbGFzdHJldmlzaW9uID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQoJCWlmICgkbW9kdWxlX25hbWUgPT0gImNvbnRlbnQiKSB7CgkJCQoJCQlpZiAoaXNzZXQoJGxhc3RyZXZpc2lvblsnY29udGVudCddKSBhbmQgJGxhc3RyZXZpc2lvblsnY29udGVudCddICE9ICIiKSB7CgkJCQkkb2xkY29udGVudG9iaiA9IFVuc2VyaWFsaXplT2JqZWN0KCRsYXN0cmV2aXNpb25bJ2NvbnRlbnQnXSk7CgkJCQkkaXNJZGVuZGljYWwgPSB0cnVlOwoJCQkJZm9yZWFjaCAoYXJyYXlfa2V5cygkY29udGVudGJsb2NrcykgYXMgJGtleSkgewoJCQkJCSRvbGQgPSAkb2xkY29udGVudG9iai0+R2V0UHJvcGVydHlWYWx1ZSgka2V5KTsKCQkJCQkkbmV3ID0gJGNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGtleSk7CgkJCQkJCgkJCQkJaWYgKGlzX2FycmF5KCRvbGQpIGFuZCBpc3NldCgkb2xkWydjb250ZW50J10pKSAkb2xkID0gJG9sZFsnY29udGVudCddOwoJCQkJCWlmIChpc19hcnJheSgkbmV3KSBhbmQgaXNzZXQoJG5ld1snY29udGVudCddKSkgJG5ldyA9ICRuZXdbJ2NvbnRlbnQnXTsJCgkJCQkJCgkJCQkJaWYgKCRuZXcgIT0gJG9sZCkgJGlzSWRlbmRpY2FsID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJCS8vIFNpbmQgZGllIEluaGFsdGUgaWRlbnRpc2NoLCB3aXJkIGhpZXIgYWJnZWJyb2NoZW4KCQkJCWlmICgkaXNJZGVuZGljYWwpIHJldHVybjsKCQkJfQoJCQkKCQkJJGNvbnRlbnQgPSBTZXJpYWxpemVPYmplY3QoJGNvbnRlbnQpOwoJCQkkY29udGVudGJsb2NrcyA9IFNlcmlhbGl6ZU9iamVjdCgkY29udGVudGJsb2Nrcyk7CgkJCQoJCX0KCQkvLyBXZW5uIG5pY2h0IGdlw6RuZGVydCBoYXQsIGRpZSBSZXZpc2lvbiBuaWNodCBzcGVpY2hlcm4KCQllbHNlIGlmICgkbGFzdHJldmlzaW9uWydjb250ZW50J10gPT0gJGNvbnRlbnQpIHsKCQkJcmV0dXJuOwoJCQkKCQl9CgkJCgkJJHJldmlzaW9uX25yID0gJGRiLT5HZXRPbmUoJ3NlbGVjdCBtYXgocmV2aXNpb25fbnIpIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8gJyxhcnJheSgkbW9kdWxlX25hbWUsICRjb250ZW50X2lkKSk7CgkJJHJldmlzaW9uX25yICs9IDE7CgoJCS8vIMOEbHRlcmUgUmV2aXNpb25zIGzDtnNjaGVuIGZhbGxzIGVpbmdlc3RlbGx0CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCdTRUxFQ1QgQ09VTlQoRElTVElOQ1QgcmV2aXNpb25faWQpIEFTIGNvdW50IEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfcmV2aXNpb25zIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8gTElNSVQgMScsIGFycmF5KCRtb2R1bGVfbmFtZSwgJGNvbnRlbnRfaWQpKTsKCQkkcmV2aXNpb25zID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCSRzdG9yZV9yZXZpc2lvbnNfY291bnQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RvcmVfcmV2aXNpb25zX2NvdW50Jyk7CgkJaWYoJHN0b3JlX3JldmlzaW9uc19jb3VudCA+IDAgJiYgJHJldmlzaW9uc1snY291bnQnXSA+PSAkc3RvcmVfcmV2aXNpb25zX2NvdW50KQoJCXsKCQkJJGRlbGV0ZWNvdW50ID0gJHJldmlzaW9uc1snY291bnQnXSAtICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdG9yZV9yZXZpc2lvbnNfY291bnQnKSArIDE7CgkJCSR0aGlzLT5EZWxldGVSZXZpc2lvbnMoJG1vZHVsZV9uYW1lLCAkY29udGVudF9pZCwgJGRlbGV0ZWNvdW50KTsKCQl9CgoJCS8vIHJldmlzaW9uIGVpbmbDvGdlbgoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ0lOU0VSVCBJTlRPICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyAocmV2aXNpb25faWQsIG1vZHVsZV9uYW1lLCByZXZpc2lvbl9uciwgY29udGVudF9pZCwgY29udGVudCwgY29udGVudGJsb2NrcywgY3JlYXRlX3RpbWUsIHVzZXJfaWQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPyknLAoJCQlhcnJheSgkcmV2aXNpb25faWQsICRtb2R1bGVfbmFtZSwgJHJldmlzaW9uX25yLCAkY29udGVudF9pZCwgJGNvbnRlbnQsICRjb250ZW50YmxvY2tzLCBkYXRlKCdZLW0tZCBIOmk6cycsICRjcmVhdGVfdHMpLCAkdGhpcy0+dXNlcmlkKSk7CgoJCXJldHVybiB0cnVlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRSZXZpc2lvbkNvbnRlbnQoJHJldmlzaW9uX2lkKSAKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRjb250ZW50aW5mbyA9ICR0aGlzLT5HZXRDb250ZW50SW5mb0Zyb21SZXZpc2lvbigkcmV2aXNpb25faWQpOwoJCSRjb250ZW50ID0gIiI7CgkJCgkJJHF1ZXJ5ID0gJ3NlbGVjdCAqIGZyb20gJy5jbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyB3aGVyZSByZXZpc2lvbl9pZCA9ID8nOwoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmV2aXNpb25faWQpKTsKCQkKCQlpZiggJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCApCXsKCQkJJGRhdGEgPSAkcmVzdWx0LT5GZXRjaFJvdygpOwoJCX0KCQkKCQlyZXR1cm4gJGRhdGFbJ2NvbnRlbnQnXTsKCX0KCQoJCglwcm90ZWN0ZWQgZnVuY3Rpb24gUmVidWlsZFJldmlzaW9uKCRjb250ZW50LCAkcmV2aXNpb25faWQpCgl7CgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCQkkY29udGVudGluZm8gPSAkdGhpcy0+R2V0Q29udGVudEluZm9Gcm9tUmV2aXNpb24oJHJldmlzaW9uX2lkKTsKCQkKCQkvLyBHRVQgQUxMIFJFVklTSU9OUwoJCSRxdWVyeSA9ICdTRUxFQ1QgZC5yZXZpc2lvbl9pZCwgZC5ibG9ja19uYW1lLCBkLmJhc2Vfb2Zmc2V0LCBkLmNoYW5nZWRfb2Zmc2V0LCBkLmJhc2UsIGQuY2hhbmdlZCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19kaWZmIGQsICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyByIFdIRVJFIGQucmV2aXNpb25faWQgPSByLnJldmlzaW9uX2lkIEFORCByLm1vZHVsZV9uYW1lID0gPyBBTkQgci5jb250ZW50X2lkID0gPyBBTkQgci5yZXZpc2lvbl9pZCA+PSA/IE9SREVSIEJZIHIucmV2aXNpb25faWQgREVTQyc7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbnRlbnRpbmZvWydtb2R1bGVfbmFtZSddLCAkY29udGVudGluZm9bJ2NvbnRlbnRfaWQnXSwgJHJldmlzaW9uX2lkKSk7CgkJJHJldmlzaW9ucyA9IGFycmF5KCk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkcmV2aXNpb25zW10gPSAkcm93OwoJCX0KCgkJLy8gUkVWRVJUCgkJLy8gJGlzX2FycmF5ID0gKGJvb2wpIGlzX2FycmF5KCRjb250ZW50KTsKCQlmb3JlYWNoKCRyZXZpc2lvbnMgYXMgJHJldmlzaW9uKQoJCXsKCQkJJHBhdGNoID0gJHJldmlzaW9uOwoJCQkkcGF0Y2hbJ2Jhc2UnXSA9IHVuc2VyaWFsaXplKCRwYXRjaFsnYmFzZSddKTsKCQkJJHBhdGNoWydjaGFuZ2VkJ10gPSB1bnNlcmlhbGl6ZSgkcGF0Y2hbJ2NoYW5nZWQnXSk7CgkJCWZvcmVhY2goJHBhdGNoWydiYXNlJ10gYXMgJGtleSA9PiAkdmFsdWUpewoJCQkJJHBhdGNoWydiYXNlJ11bJGtleV0gPSBzdHJfcmVwbGFjZShhcnJheSgnPGRlbD4nLCAnPC9kZWw+JywgJzxpbnM+JywgJzwvaW5zPicpLCAnJywgJHZhbHVlKTsKCQkJfQoJCQlmb3JlYWNoKCRwYXRjaFsnY2hhbmdlZCddIGFzICRrZXkgPT4gJHZhbHVlKXsKCQkJCSRwYXRjaFsnY2hhbmdlZCddWyRrZXldID0gc3RyX3JlcGxhY2UoYXJyYXkoJzxkZWw+JywgJzwvZGVsPicsICc8aW5zPicsICc8L2lucz4nKSwgJycsICR2YWx1ZSk7CgkJCX0KCQkJJGNvbnRlbnQgPSAkdGhpcy0+QXBwbHlQYXRjaCgkY29udGVudCwgJHBhdGNoKTsKCgkJCS8vICRkaWZmID0gYXJyYXlfcmV2ZXJzZSh1bnNlcmlhbGl6ZSgkcmV2aXNpb25bJ2RpZmYnXSkpOwoJCQkvLyBpZigkaXNfYXJyYXkpCgkJCS8vIHsKCQkJCS8vIGZvcmVhY2goJGNvbnRlbnQgYXMgJGtleSA9PiAkdmFsdWUpCgkJCQkvLyB7CgkJCQkJLy8gJGNvbnRlbnRbJGtleV0gPSAkdGhpcy0+QXBwbHlQYXRjaCgkdmFsdWUsICRkaWZmKTsKCQkJCS8vIH0KCQkJLy8gfQoJCQkvLyBlbHNlCgkJCS8vIHsKCQkJCS8vICRjb250ZW50ID0gJHRoaXMtPkFwcGx5UGF0Y2goJGNvbnRlbnQsICRkaWZmKTsKCQkJLy8gfQoJCX0KCQlyZXR1cm4gJGNvbnRlbnQ7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIEdldENvbnRlbnRJbmZvRnJvbVJldmlzaW9uKCRyZXZpc2lvbl9pZCkKCXsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRxdWVyeSA9ICdTRUxFQ1QgYS5yZXZpc2lvbl9pZCwgYS5tb2R1bGVfbmFtZSwgYS5yZXZpc2lvbl9uciwgYS5jb250ZW50X2lkLCBhLmNvbnRlbnQsIGEuY29udGVudGJsb2NrcywgYi5jb250ZW50X25hbWUsIENPVU5UKGIuY29udGVudF9pZCkgQVMgcmVjeWNsZSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9ucyBhIExFRlQgSk9JTiAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9yZXZpc2lvbnNfcmVjeWNsZSBiIE9OIGEuY29udGVudF9pZCA9IGIuY29udGVudF9pZCBXSEVSRSBhLnJldmlzaW9uX2lkID0gPyBncm91cCBieSBhLnJldmlzaW9uX2lkLCBhLm1vZHVsZV9uYW1lLCBhLnJldmlzaW9uX25yLCBhLmNvbnRlbnRfaWQsIGEuY29udGVudCwgYS5jb250ZW50YmxvY2tzLCBiLmNvbnRlbnRfbmFtZSc7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJldmlzaW9uX2lkKSk7CgkJcmV0dXJuICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIEFwcGx5UGF0Y2goJGNvbnRlbnQsICRwYXRjaCkKCXsKCQkkY29udGVudF9saW5lcyA9IGV4cGxvZGUoIlxuIiwgJGNvbnRlbnQpOwoJCS8vIERFTEVURSBMSU5FUwoJCWZvcigkbiA9ICRwYXRjaFsnY2hhbmdlZF9vZmZzZXQnXTsgJG4gPCAkcGF0Y2hbJ2NoYW5nZWRfb2Zmc2V0J10gKyBjb3VudCgkcGF0Y2hbJ2NoYW5nZWQnXSk7ICRuKyspewoJCQl1bnNldCgkY29udGVudF9saW5lc1skbl0pOwoJCX0KCQkvLyBJTlNFUlQgTElORVMKCQlmb3JlYWNoKCRwYXRjaFsnYmFzZSddIGFzICRvcF9vZmZzZXQgPT4gJG5ld3ZhbCkKCQl7CgkJCSRrZXkgPSAkcGF0Y2hbJ2Jhc2Vfb2Zmc2V0J10gKyAkb3Bfb2Zmc2V0OwoJCQlpZighaXNzZXQoJGNvbnRlbnRfbGluZXNbJGtleV0pKXsKCQkJCSRjb250ZW50X2xpbmVzWyRrZXldID0gJG5ld3ZhbDsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCVJldmlzaW9uc1V0aWxzOjphcnJheV9pbnNlcnQoJGNvbnRlbnRfbGluZXMsICRrZXksICRuZXd2YWwpOwoJCQl9CgkJfQoJCWtzb3J0KCRjb250ZW50X2xpbmVzKTsKCQlyZXR1cm4gaW1wbG9kZSgiXG4iLCAkY29udGVudF9saW5lcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIExpc3RDb250ZW50KCRxdWVyeSwgJGlkLCAkcmV0dXJuaWQsICRyZWN5Y2xlID0gZmFsc2UpCgl7CgkJJGFkbWludGhlbWUgPSBjbXNtcygpLT5nZXRfdmFyaWFibGUoJ2FkbWludGhlbWUnKTsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCQkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgoJCSRkYnJlc3VsdCA9ICRkYi0+cXVlcnkoJHF1ZXJ5KTsKCQkkcGFnZXMgPSBhcnJheSgpOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJaWYoaXNzZXQoJHJvd1snaGllcmFyY2h5J10pIGFuZCAkcmVjeWNsZSkKCQkJewoJCQkJLyogRGF0ZW4gd2VyZGVuIGJlcmVpdHMga29ycmVrdCBhdXMgZGVyIERCIGdlbGVzZW4gKEhpZXJhcmNoeSB6dW0gWmVpdHB1bmt0IGRlcyBMw7ZzY2hlbnMpICovCgkJCX0KCQkJZWxzZSBpZihpc3NldCgkcm93WydoaWVyYXJjaHknXSkpCgkJCXsKCQkJCSRyb3dbJ2hpZXJhcmNoeSddID0gJGNvbnRlbnRvcHMtPkNyZWF0ZUZyaWVuZGx5SGllcmFyY2h5UG9zaXRpb24oJHJvd1snaGllcmFyY2h5J10pOwoJCQkJJHJvd1snZGVwdGgnXSA9IHN1YnN0cl9jb3VudCgkcm93WydoaWVyYXJjaHknXSwgJy4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRyb3dbJ2hpZXJhcmNoeSddID0gJyc7CgkJCQkkcm93WydkZXB0aCddID0gMDsKCQkJfQoJCQkkcm93WydyZWN5Y2xlX21vZHVsZV9uYW1lJ10gPSAnJzsKCQkJaWYoJHJlY3ljbGUpCgkJCXsKCQkJCSRyb3dbJ3JlY3ljbGVfbW9kdWxlX25hbWUnXSA9ICRyb3dbJ21vZHVsZV9uYW1lJ107CgkJCQkkcm93Wydtb2R1bGVfbmFtZSddID0gJ3JlY3ljbGUnOwoJCQl9CgkJCSRyb3dbJ25hbWVsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZG1pbl9kZXRhaWxzJywgJHJldHVybmlkLCAkcm93WyduYW1lJ10sIGFycmF5KAoJCQkJJ21vZHVsZV9uYW1lJyA9PiAkcm93Wydtb2R1bGVfbmFtZSddLAoJCQkJJ3JlY3ljbGVfbW9kdWxlX25hbWUnID0+ICRyb3dbJ3JlY3ljbGVfbW9kdWxlX25hbWUnXSwKCQkJCSdjb250ZW50X2lkJyA9PiAkcm93Wydjb250ZW50X2lkJ10KCQkJKSk7CgkJCSRyb3dbJ2RldGFpbGxpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2RldGFpbHMnLCAkcmV0dXJuaWQsICRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbmZvLmdpZicsICR0aGlzLT5MYW5nKCdzaG93ZGV0YWlscycpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KAoJCQkJJ21vZHVsZV9uYW1lJyA9PiAkcm93Wydtb2R1bGVfbmFtZSddLAoJCQkJJ3JlY3ljbGVfbW9kdWxlX25hbWUnID0+ICRyb3dbJ3JlY3ljbGVfbW9kdWxlX25hbWUnXSwKCQkJCSdjb250ZW50X2lkJyA9PiAkcm93Wydjb250ZW50X2lkJ10KCQkJKSk7CgoJCQkkcGFnZXNbXSA9IFJldmlzaW9uc1V0aWxzOjphcnJheV90b19vYmplY3QoJHJvdyk7CgkJfQoJCQoJCSRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHBhZ2VzKSk7CgkJJHNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkcGFnZXMpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdGl0ZW1zLnRwbCcpOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBHZXRDdXJyZW50VmVyc2lvbigkbW9kdWxlX25hbWUsICRjb250ZW50X2lkLCAkcmVjeWNsZV9tb2R1bGVfbmFtZSA9ICcnKQoJewoJCXN3aXRjaCgkbW9kdWxlX25hbWUpCgkJewoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuIGZhbHNlOwoKCQkJY2FzZSAnY29udGVudCc6CgkJCQkkY29udGVudG9wcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJCQkkY29udGVudG9iaiA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCgkY29udGVudF9pZCwgdHJ1ZSk7CgkJCQkKCQkJCSRjb250ZW50ID0gJGNvbnRlbnRvYmo7CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICdzdHlsZXNoZWV0JzoKCQkJCSRzdHlsZXNoZWV0b3BzID0gY21zbXMoKS0+R2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKTsKCQkJCSRzdHlsZXNoZWV0ID0gJHN0eWxlc2hlZXRvcHMtPkxvYWRTdHlsZXNoZWV0QnlJRCgkY29udGVudF9pZCk7CgkJCQkkY29udGVudCA9ICRzdHlsZXNoZWV0LT52YWx1ZTsKCQkJCWJyZWFrOwoKCQkJY2FzZSAndGVtcGxhdGUnOgoJCQkJJHRlbXBsYXRlb3BzID0gY21zbXMoKS0+R2V0VGVtcGxhdGVPcGVyYXRpb25zKCk7CgkJCQkkdGVtcGxhdGUgPSAkdGVtcGxhdGVvcHMtPkxvYWRUZW1wbGF0ZUJ5SUQoJGNvbnRlbnRfaWQpOwoJCQkJJGNvbnRlbnQgPSAkdGVtcGxhdGUtPmNvbnRlbnQ7CgkJCQlicmVhazsKCgkJCWNhc2UgJ2djYic6CgkJCQkkZ2Nib3BzID0gY21zbXMoKS0+R2V0R2xvYmFsQ29udGVudE9wZXJhdGlvbnMoKTsKCQkJCSRnY2IgPSAkZ2Nib3BzLT5Mb2FkSHRtbEJsb2JCeUlEKCRjb250ZW50X2lkKTsKCQkJCSRjb250ZW50ID0gJGdjYi0+Y29udGVudDsKCQkJCWJyZWFrOwoKCQkJY2FzZSAncmVjeWNsZSc6CgkJCQkKCQkJCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJ1NFTEVDVCBjb250ZW50X29iamVjdCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3JldmlzaW9uc19yZWN5Y2xlIFdIRVJFIG1vZHVsZV9uYW1lID0gPyBBTkQgY29udGVudF9pZCA9ID8nLAoJCQkJCWFycmF5KCRyZWN5Y2xlX21vZHVsZV9uYW1lLCAkY29udGVudF9pZCkpOwoJCQkJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCQkJCSRjb250ZW50X29iaiA9IFVuc2VyaWFsaXplT2JqZWN0KCRyb3dbJ2NvbnRlbnRfb2JqZWN0J10pOwoJCQkJc3dpdGNoKCRyZWN5Y2xlX21vZHVsZV9uYW1lKQoJCQkJewoJCQkJCWRlZmF1bHQ6CgkJCQkJCXJldHVybiBmYWxzZTsKCgkJCQkJY2FzZSAnY29udGVudCc6CgkJCQkJCSRjb250ZW50ID0gJGNvbnRlbnRfb2JqOwoJCQkJCQlicmVhazsKCgkJCQkJY2FzZSAnc3R5bGVzaGVldCc6CgkJCQkJCSRjb250ZW50ID0gJGNvbnRlbnRfb2JqLT52YWx1ZTsKCQkJCQkJYnJlYWs7CgoJCQkJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJCQljYXNlICdnY2InOgoJCQkJCQkkY29udGVudCA9ICRjb250ZW50X29iai0+Y29udGVudDsKCQkJCQkJYnJlYWs7CgkJCQkJCQoJCQkJCQkKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCQlyZXR1cm4gJGNvbnRlbnQ7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBTZXRBZ2dyZWdhdGVQZXJtaXNzaW9ucygkZm9yY2UgPSBGQUxTRSkKCXsKCQlpZiAoaXNfYXJyYXkoJHRoaXMtPl9wZXJtcyAmJiAkZm9yY2UgPT0gRkFMU0UpKQoJCQlyZXR1cm47CgoJCSR0aGlzLT5fcGVybXMgPSBhcnJheSgpOwoKCQkvLyBDb250ZW50IFBlcm1pc3Npb25zCgkJJHRoaXMtPl9wZXJtc1snaHRtbFBlcm1zJ10gPSBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdBZGQgR2xvYmFsIENvbnRlbnQgQmxvY2tzJykgfCBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdNb2RpZnkgR2xvYmFsIENvbnRlbnQgQmxvY2tzJykgfCBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdEZWxldGUgR2xvYmFsIENvbnRlbnQgQmxvY2tzJyk7CgoJCSRnY2JvcHMgPSBjbXNtcygpLT5HZXRHbG9iYWxDb250ZW50T3BlcmF0aW9ucygpOwoKCQkkdGhpc1VzZXJCbG9icyA9ICRnY2JvcHMtPkF1dGhvckJsb2JzKCR0aGlzLT51c2VyaWQpOwoJCWlmIChjb3VudCgkdGhpc1VzZXJCbG9icykgPiAwKSB7CgkJCSR0aGlzLT5fcGVybXNbJ2h0bWxQZXJtcyddID0gdHJ1ZTsKCQl9CgkJJHRoaXMtPl9wZXJtc1sncGFnZVBlcm1zJ10gPSAoY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnTW9kaWZ5IEFueSBQYWdlJykgfHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnQWRkIFBhZ2VzJykgfHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnUmVtb3ZlIFBhZ2VzJykgfHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnTWFuYWdlIEFsbCBDb250ZW50JykpOwoJCSR0aGlzVXNlclBhZ2VzID0gYXV0aG9yX3BhZ2VzKCR0aGlzLT51c2VyaWQpOwoJCWlmIChjb3VudCgkdGhpc1VzZXJQYWdlcykgPiAwKSB7CgkJCSR0aGlzLT5fcGVybXNbJ3BhZ2VQZXJtcyddID0gdHJ1ZTsKCQl9CgkJJHRoaXMtPl9wZXJtc1snY29udGVudFBlcm1zJ10gPSAkdGhpcy0+X3Blcm1zWydwYWdlUGVybXMnXSB8ICR0aGlzLT5fcGVybXNbJ2h0bWxQZXJtcyddIHwgKGlzc2V0KCR0aGlzLT5fc2VjdGlvbkNvdW50Wydjb250ZW50J10pICYmICR0aGlzLT5fc2VjdGlvbkNvdW50Wydjb250ZW50J10gPiAwKTsKCgkJLy8gbGF5b3V0ICAgICAgICAKCQkkdGhpcy0+X3Blcm1zWyd0ZW1wbGF0ZVBlcm1zJ10gPSBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdBZGQgVGVtcGxhdGVzJykgfCBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdNb2RpZnkgVGVtcGxhdGVzJykgfCBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdSZW1vdmUgVGVtcGxhdGVzJyk7CgkJJHRoaXMtPl9wZXJtc1snY3NzUGVybXMnXSA9IGNoZWNrX3Blcm1pc3Npb24oJHRoaXMtPnVzZXJpZCwgJ0FkZCBTdHlsZXNoZWV0cycpIHwgY2hlY2tfcGVybWlzc2lvbigkdGhpcy0+dXNlcmlkLCAnTW9kaWZ5IFN0eWxlc2hlZXRzJykgfCBjaGVja19wZXJtaXNzaW9uKCR0aGlzLT51c2VyaWQsICdSZW1vdmUgU3R5bGVzaGVldHMnKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gSGFzUGVybSgkcGVybWlzc2lvbikKCXsKCSAgICAkdGhpcy0+U2V0QWdncmVnYXRlUGVybWlzc2lvbnMoKTsKCgkgICAgaWYgKGlzc2V0KCR0aGlzLT5fcGVybXNbJHBlcm1pc3Npb25dKSAmJiAkdGhpcy0+X3Blcm1zWyRwZXJtaXNzaW9uXSkgewoJICAgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9IGVsc2UgewoJICAgICAgICByZXR1cm4gZmFsc2U7CgkgICAgfQoJfQoKCSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSMgSGVscCBtZXRob2RzCgkjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJcHJvdGVjdGVkIGZ1bmN0aW9uIENyZWF0ZUJhY2tVUkwoJHRhYikKCXsKCQkkc2VjdXJlcGFyYW0gPSBDTVNfU0VDVVJFX1BBUkFNX05BTUUgLiAnPScgLiAkX1NFU1NJT05bQ01TX1VTRVJfS0VZXTsKCQlyZXR1cm4gJ21vZHVsZWludGVyZmFjZS5waHA/JyAuICRzZWN1cmVwYXJhbSAuJyZtb2R1bGU9Jy4kdGhpcy0+R2V0TmFtZSgpLicmbTFfYWN0aXZlX3RhYj0nLiR0YWI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0TnVtYmVyKCRpZCwgJG5hbWUsICR2YWx1ZT0nJywgJGFkZHR0ZXh0PScnKQoJewoJCWlmKGlzX2NhbGxhYmxlKCdwYXJlbnQ6OkNyZWF0ZUlucHV0TnVtYmVyJykpCgkJewoJCQlyZXR1cm4gcGFyZW50OjpDcmVhdGVJbnB1dE51bWJlcigkaWQsICRuYW1lLCAkdmFsdWUsICRhZGR0dGV4dCk7CgkJfQoKCQlyZXR1cm4gUmV2aXNpb25zVXRpbHM6OkNyZWF0ZUlucHV0TnVtYmVyKCRpZCwgJG5hbWUsICR2YWx1ZSwgJGFkZHR0ZXh0KTsKCX0KfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/compare.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKUEFHRUJBQ0tfVEVYVCA9ICd7JHBhZ2ViYWNrX3RleHR9JzsKPC9zY3JpcHQ+CnsqY21zX2pxdWVyeSp9CjxoMz57JGNvbnRlbnRfbmFtZX08L2gzPgp7aWYgJGRpZmYgPT0gJyd9CjxwPnskbW9kLT5MYW5nKCdyZXZpc2lvbnNfaWRlbnRpY2FsJyl9PC9wPgp7ZWxzZX0KPHA+eyRyZXN0b3JlbGlua308YnIgLz4mbmJzcDs8L3A+CnskZGlmZn0KPHA+Jm5ic3A7PGJyIC8+eyRyZXN0b3JlbGlua308L3A+CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/details.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKUEFHRUJBQ0tfVEVYVCA9ICd7JHBhZ2ViYWNrX3RleHR9JzsKPC9zY3JpcHQ+CnsqY21zX2pxdWVyeSp9CjxoMz57JGNvbnRlbnRfbmFtZX08L2gzPgoKe2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPnskbW9kLT5MYW5nKCduYW1lJyl9PC90aD4KCQkJPHRoIHdpZHRoPSIxNTAiPnskbW9kLT5MYW5nKCdyZXZpc2lvbicpfTwvdGg+CgkJCTx0aCB3aWR0aD0iMTcwIj57JG1vZC0+TGFuZygnY3JlYXRlX2RhdGUnKX08L3RoPgoJCQk8dGggd2lkdGg9IjE3MCI+eyRtb2QtPkxhbmcoJ3VzZXInKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JG1vZC0+TGFuZygndW5kbycpfTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskbW9kLT5MYW5nKCdwcmV2aWV3Jyl9PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyRtb2QtPkxhbmcoJ2NvbXBhcmUnKX08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeSBuYW1lPSJyZXZpc2lvbnMifQoJCTx0cj4KICAgICAgICAgICAgPHRkPnskZW50cnktPm5hbWV9PC90ZD4KICAgICAgICAgICAgPHRkPnskZW50cnktPnJldmlzaW9uX25yfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5jcmVhdGVfdGltZXxkYXRlX2Zvcm1hdDoiJWQuJW0uJVkgJUg6JU06JVMifTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT51c2VybmFtZX08L3RkPgogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+cmVzdG9yZWxpbmt9PC90ZD4KICAgICAgICAgICAgPHRkPnskZW50cnktPnByZXZpZXdsaW5rfTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JGVudHJ5LT5jb21wYXJlbGlua308L3RkPgoJCTwvdHI+Cgl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRqcXVlcnlfY3NzKX17JGpxdWVyeV9jc3N9ey9pZn0KPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRtb2R1bGVkaXJ9L2Nzcy9iYWNrZW5kLmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo8IS0tCnZhciBDTVNfQURNSU5fRElSID0gJ3skYWRtaW5kaXJ9JzsKdmFyIENNU19VU0VSX0tFWSA9ICd7JHVzZXJrZXl9JzsKLS0+Cjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JG1vZHVsZWRpcn0vanMvYmFja2VuZC5qcyI+PC9zY3JpcHQ+]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiBzcmM9Inskcm9vdHVybH0vbW9kdWxlcy9SZXZpc2lvbnMvanMvbHl0ZWJveC5qcyI+PC9zY3JpcHQ+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyRyb290dXJsfS9tb2R1bGVzL1JldmlzaW9ucy9jc3MvbHl0ZWJveC5jc3MiIHR5cGU9InRleHQvY3NzIiAvPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Inskcm9vdHVybH0vbW9kdWxlcy9SZXZpc2lvbnMvY3NzL2JhY2tlbmQuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKUEFHRUJBQ0tfVEVYVCA9ICd7JHBhZ2ViYWNrX3RleHR9JzsKPC9zY3JpcHQ+Cgp7JGRvbmF0ZX0KPGRpdiBpZD0icGFnZV90YWJzIj4KCTxkaXYgaWQ9ImdlbmVyYWwiPgoJCXskbW9kLT5MYW5nKCdnZW5lcmFsJyl9Cgk8L2Rpdj4KCTxkaXYgaWQ9InBlcm1pc3Npb25zIj4KCQl7JG1vZC0+TGFuZygncGVybWlzc2lvbnMnKX0KCTwvZGl2PgoJPGRpdiBpZD0iYWJvdXQiPgoJCXskbW9kLT5MYW5nKCdhYm91dCcpfQoJPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPiAgCgk8ZGl2IGlkPSJnZW5lcmFsX2MiPgoJCXskbW9kLT5MYW5nKCdoZWxwX2dlbmVyYWwnKX0KCTwvZGl2PgoJPGRpdiBpZD0icGVybWlzc2lvbnNfYyI+CgkJeyRtb2QtPkxhbmcoJ2hlbHBfcGVybWlzc2lvbnMnKX0KCTwvZGl2PgoJPGRpdiBpZD0iYWJvdXRfYyI+CgkJeyRtb2QtPkxhbmcoJ2hlbHBfYWJvdXQnKX0KCTwvZGl2PiAgCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/listitems.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCR0aXRsZSl9PGgzPnskdGl0bGV9PC9oMz57L2lmfQp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGggd2lkdGg9IjM1Ij4mbmJzcDs8L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ25hbWUnKX08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ3JldmlzaW9ucycpfTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cgl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCTx0cj4KCQkJPHRkPnskZW50cnktPmhpZXJhcmNoeX08L3RkPgogICAgICAgICAgICA8dGQ+e3JlcGVhdCBzdHJpbmc9Ii0mbmJzcDsmbmJzcDsmbmJzcDsiIHRpbWVzPSRlbnRyeS0+ZGVwdGh9eyRlbnRyeS0+bmFtZWxpbmt9PC90ZD4KICAgICAgICAgICAgPHRkPnskZW50cnktPnJldmlzaW9uc308L3RkPgogICAgICAgICAgICA8dGQ+eyRlbnRyeS0+ZGV0YWlsbGlua308L3RkPgoJCTwvdHI+Cgl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+eyRtb2QtPkxhbmcoJ25vcmV2aXNpb25zJyl9PC9wPgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/optiontab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxmaWVsZHNldD4KPGxlZ2VuZD57JG1vZC0+TGFuZygnZ2VuZXJhbF9vcHRpb25zJyl9PC9sZWdlbmQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3N0b3JlX3JldmlzaW9uc19jb3VudCcpfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdG9yZV9yZXZpc2lvbnNfY291bnR9PGJyIC8+eyRtb2QtPkxhbmcoJ3N0b3JlX3JldmlzaW9uc191bmxpbWl0ZWQnKX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudCcpfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kZWxldGVfcmV2aXNpb25zX3dpdGhfY29udGVudH08L3A+Cgk8L2Rpdj4KPC9maWVsZHNldD4KPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdkZWxldGVfcmV2aXNpb25zJyl9PC9sZWdlbmQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2RlbGV0ZV9hbGxfYnV0Jyl9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlbGV0ZV9hbGxfYnV0fSB7JHN1Ym1pdF9kZWxldGVfYWxsX2J1dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGVsZXRlX29sZGVyX3RoYW4nKX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQgZGF0ZXBpY2tlciI+eyRpbnB1dF9kZWxldGVfb2xkZXJfdGhhbn0geyRzdWJtaXRfZGVsZXRlX29sZGVyX3RoYW59PC9wPgoJPC9kaXY+CjwvZmllbGRzZXQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/preview.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpQQUdFQkFDS19VUkwgPSAneyRwYWdlYmFja191cmx9JzsKUEFHRUJBQ0tfVEVYVCA9ICd7JHBhZ2ViYWNrX3RleHR9JzsKPC9zY3JpcHQ+CnsqY21zX2pxdWVyeSp9Cgo8aDM+eyRjb250ZW50X25hbWV9PC9oMz4KPHA+eyRyZXN0b3JlbGlua308YnIgLz4mbmJzcDs8L3A+CjxwPjxiPnskbW9kLT5MYW5nKCdyZXZpc2lvbicpfSB7JHJldmlzaW9uX25yfTwvYj48YnIgLz4mbmJzcDs8L3A+Cgo8cHJlIGlkPSJwcmV2aWV3Y29kZSI+Cjxjb2RlPnskY29kZX08L2NvZGU+CjwvcHJlPgo8cD4mbmJzcDs8YnIgLz57JHJlc3RvcmVsaW5rfTwvcD4=]]></data>
	</file>
</module>
