<?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>AuthNetAim</name>
	<version>1.4</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciB5b3VyIGN1c3RvbWVycyB0byBwYXkgZm9yIHRoZWlyIHB1cmNoYXNlcyB1c2luZyB0aGVpciBjcmVkaXQgY2FyZCBkaXJlY3RseSBvbiB5b3VyIHNpdGUgdXNpbmcgdGhlIEF1dGhvcml6ZS5OZXQgc2VjdXJlIGdhdGV3YXkuPC9wPgo8aDM+V2h5IHNob3VsZCBJIHVzZSBpdD88L2gzPgo8cD5UaGlzIGdhdGV3YXkgd29ya3Mgd2l0aG91dCByZWRpcmVjdGluZyB0aGUgdXNlciB0byBhIGRpZmZlcmVudCB3ZWJzaXRlLCBhbmQgdGhlbiByZWRpcmVjdGluZyB0aGVtIGJhY2suICBJdCBhbGxvd3MgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB5b3VyIGN1c3RvbWVycyB3aXRoIGEgc2luZ2xlIHVzZXIgZXhwZXJpZW5jZS48L3A+CjxoMz5TcGVjaWFsIFJlcXVpcmVtZW50czwvaDM+CjxwPlRoaXMgbW9kdWxlIHJlcXVpcmVzIHRoYXQgeW91ciB3ZWIgYXBwbGljYXRpb24gYmUgY29uZmlndXJlZCB0byBwcm9tcHQgdGhlIHVzZXIgZm9yIGNyZWRpdCBjYXJkIGluZm9ybWF0aW9uLCBUaGUgT3JkZXJzIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZCB0byBkbyB0aGlzLjwvcD4KPHA+QWxzbyB0aGlzIG1vZHVsZSB3aWxsIHJlcXVpcmUgYSB2YWxpZGF0ZWQgc2VjdXJlIGVudmlyb25tZW50LiAgIFlvdSB3aWxsIG5lZWQgdG8gcHVyY2hhc2UgYSB2YWxpZGF0ZWQgY2VydGlmaWNhdGUgZnJvbSBhbiBhcHByb3ZkZWQgcHJvdmlkZXIsIGluc3RhbGwgdGhhdCBjZXJ0aWZpY2F0ZSBpbiB5b3VyIHdlYiBob3N0IGVudmlyb25tZW50LCBhbmQgdGhlbiBjb25maWd1cmUgQ01TIE1hZGUgU2ltcGxlIHRvIHdvcmsgcHJvcGVybHkgaW4gYSBzZWN1cmUgZW52aXJvbm1lbnQuPC9wPgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxwPlF1aXRlIHNpbXBseSwgb25jZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkLCB5b3Ugc2ltcGx5IGluc3RhbGwgdGhlIG1vZHVsZS4gIFRoZW4gY29uZmlndXJlIHRoZSBtb2R1bGUgaW4gdGhlIEF1dGhvcml6ZS5ORVQgQUlNL0FSQiBjb250cm9sIHBhbmVsIGluIHRoZSBDTVMgTWFkZSBTaW1wbGUgYWRtaW4gY29uc29sZSwgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGlkLCBhbmQgdGhlIEFQSSBMb2dpbiB0aGF0IGFyZSBwcm92aWRlZCB0byB5b3UgYnkgYXV0aG9yaXplLm5ldC4gVGhlbiBuYXZpZ2F0ZSB0byB0aGUgcHJlZmVyZW5jZXMgdGFiIGluIHRoZSBDR1BheW1lbnRHYXRld2F5IEJhc2UgbW9kdWxlIGFuZCBzZWxlY3QgdGhpcyBtb2R1bGUgYXMgeW91ciBjaG9zZW4gcGF5bWVudCBnYXRld2F5LjwvcD4KPGgzPlN1YnNjcmlwdGlvbnM6PC9oMz4KPHA+VGhpcyBtb2R1bGUgaGFzIGxpbWl0ZWQgc3VwcG9ydCBmb3Igc3Vic2NyaXB0aW9ucyAoRm9yIGV4YW1wbGUgbWVtYmVyc2hpcCBzdWJzY3JpcHRpb25zLCBvciBwcm9kdWN0IHN1YnNjcmlwdGlvbnMpLiAgSXQgd2lsbCBjcmVhdGUgYSBzdWJzY3JpcHRpb24gd2l0aGluIHRoZSBBdXRob3JpemUuTkVUIE1lcmNoYW50IGNlbnRlciBhcyBhIHVzZXIgY2hlY2tzIG91dCwgYW5kIHdpbGwgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBkZWNsaW5lZCBwYXltZW50cywgZXRjLiB0byB0aGUgT3JkZXJzIG1vZHVsZSB2aWEgdGhlIEF1dGhvcml6ZS5ORVQgU2lsZW50IFBPU1QgVVJMLiAgSG93ZXZlciwgVGhlcmUgaXMgbm8gbWVhbnMgYnkgd2hpY2ggYSB2aXNpdG9yIGNhbiBjYW5jZWwgYSBzdWJzY3JpcHRpb24gZnJvbSB3aXRoaW4gdGhlIHdlYnNpdGUsIGFuZCB0aGVyZSBpcyBubyB3YXkgdGhhdCB0aGUgb3JkZXJzIG1vZHVsZSBjYW4ga25vdyBhYm91dCBzdWJzY3JpcHRpb25zIG1hbnVhbGx5IGFkZGVkLCBlZGl0ZWQsIG9yIGRlbGV0ZWQgd2l0aGluIHRoZSBBdXRob3JpemUuTkVUIG1lcmNoYW50IGNlbnRlci48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dQYXltZW50R2F0ZXdheUJhc2UgPSZndDsgMS4wLjExPC9saT48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMjU8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS40PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEFwcmlsLCAyMDA5CiAgICA8dWw+CiAgICAgIDxsaT5Jbml0aWFsIFJlbGVhc2U8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMC4yIC0gT2N0b2JlciwgMjAwOQogICAgPHVsbD4KICAgICAgPGxpPlVwZ3JhZGUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIENHUGF5bWVudEdhdGV3YXlCYXNlIDEuMC4zPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjEgLSBPY3RvYmVyLCAyMDA5CiAgICA8cD5BZGRzIGFuIGFkdmFuY2VkIHRhYiB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBVUkxTIGZvciBnYXRld2F5cyB0aGF0IGhhdmUgQXV0aG9yaXplLk5FVCBlbXVsYXRvcnMuPC9wPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4yIC0gT2N0b2JlciwgMjAwOQogICAgPHA+Tm93IHN1cHBvcnRzIGFkZGluZyB0aGUgYmlsbGluZyBhbmQgc2hpcHBpbmcgaW5mb3JtYXRpb24uPC9wPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4yLjMgLSBBcHJpbCwgMjAxMAogICAgPHA+Tm93IHdvcmtzIHdpdGggQ0dFY29tbWVyY2VCYXNlIDEuMC41LjwvcD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMi40IC0gQXByaWwsIDIwMTAKICAgIDxwPkZpeGVzIGZvciBtdWx0aXBsZSBiYXNrZXRzIHdpdGggbXVsdGlwbGUgdGF4IGFuZCBzaGlwcGluZyBpdGVtcy48L3A+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjIuNSAtIEZlYnJ1YXJ5LCAyMDExCiAgICA8cD5GaXhlcyBmb3IgaXRlbXMgd2l0aCBuZWdhdGl2ZSBhbW91bnRzLCBhbmQgd2llcmQgY2hhcmFjdGVycyBpbiB0aGUgaXRlbSBuYW1lcy48L3A+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjMgLSBNYXksIDIwMTEKICAgIDx1bD4KICAgICAgPGxpPkFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgc3Vic2NyaXB0aW9ucyAoQVJCKS48L2xpPgogICAgICA8bGk+TnVtZXJvdXMgYnVnIGZpeGVzLjwvbGk+CiAgICAgIDxsaT5SZS1sYWJlbCwgdXBkYXRlIGRlcGVuZGVuY2llcywgYW5kIHVwZGF0ZSBoZWxwLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4zLjEgLSBKdW5lLCAyMDExCiAgICA8cD5NaW5vciBidWcgZml4IHdydCB0ZXN0IG1vZGUuPC9wPgogIDwvbGk+CjwvdWw+CjxiciAvPg==]]></about>
	<description><![CDATA[A payment gateway for the E-commerce system that uses the AIM and ARB protocols from Authorize.net]]></description>
	<requires>
	  <requiredname>CGPaymentGatewayBase</requiredname>
	  <requiredversion>1.0.11</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.25</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_setadvanced.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdhZHZhbmNlZCcpOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Bvc3RfdXJsJyx0cmltKCRwYXJhbXNbJ3Bvc3RfdXJsJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Rlc3RfcG9zdF91cmwnLHRyaW0oJHBhcmFtc1sndGVzdF9wb3N0X3VybCddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhcmJfdXJsJyx0cmltKCRwYXJhbXNbJ2FyYl91cmwnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndGVzdF9hcmJfdXJsJyx0cmltKCRwYXJhbXNbJ3Rlc3RfYXJiX3VybCddKSk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_setprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcmVmcycpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApCiAgewogICAgJHRlc3Rtb2RlID0gMDsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd0ZXN0bW9kZSddKSApCiAgICAgIHsKCSR0ZXN0bW9kZSA9IChpbnQpJHBhcmFtc1sndGVzdG1vZGUnXTsKICAgICAgfQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Rlc3Rtb2RlJywkdGVzdG1vZGUpOwoKICAgICR0aW55dHJhbnNhY3Rpb25zID0gMDsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd0aW55dHJhbnNhY3Rpb25zJ10pICkKICAgICAgewoJJHRpbnl0cmFuc2FjdGlvbnMgPSAoaW50KSRwYXJhbXNbJ3Rpbnl0cmFuc2FjdGlvbnMnXTsKICAgICAgfQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Rpbnl0cmFuc2FjdGlvbnMnLCR0aW55dHJhbnNhY3Rpb25zKTsKCiAgICAkdXNldGVzdHVybCA9IDA7CiAgICBpZiggaXNzZXQoJHBhcmFtc1sndXNldGVzdHVybCddKSApCiAgICAgIHsKCSR1c2V0ZXN0dXJsID0gKGludCkkcGFyYW1zWyd1c2V0ZXN0dXJsJ107CiAgICAgIH0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2V0ZXN0dXJsJywkdXNldGVzdHVybCk7CgogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2xvZ2luaWQnLCRwYXJhbXNbJ2xvZ2luaWQnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndHJhbnNhY3Rpb25rZXknLCRwYXJhbXNbJ3RyYW5zYWN0aW9ua2V5J10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3N1YnNjcmlwdGlvbnMnLChpbnQpJHBhcmFtc1snYWxsb3dfc3Vic2NyaXB0aW9ucyddKTsKICB9CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3RlbXBsYXRlJywkdGhpcy0+TGFuZygnZm9ybV90ZW1wbGF0ZScpKTsKICB9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3ByZWZzJywkdGhpcy0+TGFuZygncHJlZmVyZW5jZXMnKSk7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkdmFuY2VkJywkdGhpcy0+TGFuZygnYWR2YW5jZWQnKSk7CiAgfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RlbXBsYXRlJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24udGVtcGxhdGVfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZzJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24ucHJlZnNfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2FkdmFuY2VkJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWR2YW5jZWRfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgfQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.process_payment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCi8vIHJlc3RvcmUgc3RhdGUgaW5mb3JtYXRpb24KaWYoICFpc3NldCgkcGFyYW1zWydrZXknXSkgKSBleGl0OyAKJHJlcyA9ICR0aGlzLT5SZXN0b3JlU3RhdGUodHJpbSgkcGFyYW1zWydrZXknXSkpOwppZiggJHJlcyA9PT0gRkFMU0UgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVzdG9yaW5nX3N0YXRlJykpOwogICAgJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CiAgICByZXR1cm47CiAgfQoKCi8vIGNoZWNrIGZvciBtaXNzaW5nIGRhdGEKJG5lZWRfYWRkcmVzcyA9IFRSVUU7CmlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydjY2luZm8nXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19kYXRhJykpOwogICAgJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CiAgICByZXR1cm47CiAgfQpzd2l0Y2goICR0aGlzLT5HZXRUcmFuc2FjdGlvblR5cGUoKSApCiAgewogIGNhc2UgQ0dQYXltZW50R2F0ZXdheUJhc2U6OlRSQU5TX0NBUFRVUkU6CiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnaXRlbXMnXSkgKQogICAgICB7CgkkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfZGF0YScpKTsKCSR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJcmV0dXJuOwogICAgICB9CiAgICBicmVhazsKCiAgY2FzZSBDR1BheW1lbnRHYXRld2F5QmFzZTo6VFJBTlNfVk9JRDoKICBjYXNlIENHUGF5bWVudEdhdGV3YXlCYXNlOjpUUkFOU19DUkVESVQ6CiAgICAkbmVlZF9hZGRyZXNzID0gRkFMU0U7CiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25fYW10J10pIHx8ICFpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ10pICkKICAgICAgewoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2RhdGEnKSk7CgkkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKCXJldHVybjsKICAgICAgfQogICAgYnJlYWs7CiAgfQoKCmlmKCAkdGhpcy0+b3JkZXJfY29udGFpbnNfc3Vic2NyaXB0aW9uKCkgKQogIHsKICAgIC8vIHdlIGhhdmUgYSBzdWJzY3JpcHRpb24sIGFuZCBoYXZlIGRvbmUgYWxsIG91ciBjaGVja3MKICAgIC8vIHNvIGFub3RoZXIgZmlsZSB3aWxsIGhhbmRsZSBpdC4KICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5wcm9jZXNzX3N1YnNjcmlwdGlvbi5pbmMucGhwJyk7CiAgICByZXR1cm47CiAgfQoKLy8gIAovLyBzZXR1cAovLwokZmV1ID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwokbG9naW5pZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdsb2dpbmlkJyk7CiR0cmFuc2FjdGlvbmtleSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmFuc2FjdGlvbmtleScpOwokdGVzdG1vZGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdG1vZGUnLDEpOwppZiggJHRlc3Rtb2RlICYmIGNoZWNrX2xvZ2luKFRSVUUpICkKICB7CiAgICAkdGVzdG1vZGUgPSAnVFJVRSc7CiAgfQplbHNlCiAgewogICAgJHRlc3Rtb2RlID0gJ0ZBTFNFJzsKICB9CgokdGlueXRyYW5zYWN0aW9ucyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aW55dHJhbnNhY3Rpb25zJywwKTsKCiRub3cgPSB0aW1lKCk7CiRmaW5nZXJwcmludCA9ICRwYXJhbXNbJ2tleSddOwokcG9zdF91cmwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncG9zdF91cmwnLCcnKTsKaWYoICEkcG9zdF91cmwgKQogICRwb3N0X3VybCA9IEFVVEhORVRBSU1fU0VDVVJFX1BPU1RfVVJMOwoKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2V0ZXN0dXJsJykgKQogIHsKICAgICRwb3N0X3VybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X3Bvc3RfdXJsJywnJyk7CiAgICBpZiggISRwb3N0X3VybCApCiAgICAgICRwb3N0X3VybCA9IEFVVEhORVRBSU1fVEVTVF9QT1NUX1VSTDsKICB9CgovLwovLyBidWlsZCBvdXIgZGF0YQovLwovLyBhKSBjYWxjdWxhdGUgdG90YWwgYW1vdW50IG9mIG9yZGVyCiRhbW91bnQgPSAnJzsKaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25fYW10J10pICkKICB7CiAgICAkYW1vdW50ID0gJHRoaXMtPl9kYXRhWyd0cmFuc2FjdGlvbl9hbXQnXTsKICB9CmVsc2UgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnb3JkZXJfb2JqJ10pICkKICB7CiAgICAkYW1vdW50ID0gJHRoaXMtPl9kYXRhWydvcmRlcl9vYmonXS0+Z2V0X3RvdGFsKCk7CiAgfQplbHNlIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVydGF4J10pICYmIGlzc2V0KCR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddKSApCiAgewogICAgJGFtb3VudCA9ICR0aGlzLT5fZGF0YVsnb3JkZXJ0YXgnXSArICR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddOwogICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhWydpdGVtcyddIGFzICRpdGVtICkKICAgICAgewoJJGFtb3VudCArPSAkaXRlbVsnYW1vdW50J10qJGl0ZW1bJ3F1YW50aXR5J107CiAgICAgIH0KICB9CmlmKCAkYW1vdW50ID09PSAnJyApCiAgewogICAgLy8gZXJyb3IuCiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfZGF0YScpKTsKICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwogICAgcmV0dXJuOwogIH0KCi8vIGIpIGZpbGwgaW4gdGhlIHBhcmFtZXRlcnMgYXJyYXkKJHBhcm1zID0gYXJyYXkoKTsKJHBhcm1zWyd0cmFuc2FjdGlvbl9jb2RlJ10gPSAkZmluZ2VycHJpbnQ7CiRwYXJtc1sneF92ZXJzaW9uJ10gPSAnMy4xJzsKJHBhcm1zWyd4X3Rlc3RfcmVxdWVzdCddID0gJHRlc3Rtb2RlOwokcGFybXNbJ3hfZGVsaW1fZGF0YSddID0gIlRSVUUiOwokcGFybXNbJ3hfZGVsaW1fY2hhciddID0gJ3wnOwokcGFybXNbJ3hfcmVsYXlfcmVzcG9uc2UnXSA9ICdGQUxTRSc7CiRwYXJtc1sneF9sb2dpbiddID0gJGxvZ2luaWQ7CiRwYXJtc1sneF90cmFuX2tleSddID0gJHRyYW5zYWN0aW9ua2V5OwokcGFybXNbJ3hfbWV0aG9kJ10gPSAnQ0MnOyAvLyB0b2RvCiRwYXJtc1sneF9kdXBsaWNhdGVfd2luZG93J10gPSAyKjYwOyAvLyB0b2RvCgppZiggJG5lZWRfYWRkcmVzcyApCiAgewogICAgJGJpbGxpbmcgPSAkdGhpcy0+X2RhdGFbJ2JpbGxpbmdfYWRkcmVzcyddOwogICAgJHNoaXBwaW5nID0gJHRoaXMtPl9kYXRhWydzaGlwcGluZ19hZGRyZXNzJ107CiAgICBpZiggIWlzX29iamVjdCgkYmlsbGluZykgfHwgIWlzX29iamVjdCgkc2hpcHBpbmcpICkKICAgICAgewoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2RhdGEnKSk7CgkkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKCXJldHVybjsKICAgICAgfQoKICAgICRwYXJtc1sneF9maXJzdF9uYW1lJ10gPSAkYmlsbGluZy0+Z2V0X2ZpcnN0bmFtZSgpOwogICAgJHBhcm1zWyd4X2xhc3RfbmFtZSddID0gJGJpbGxpbmctPmdldF9sYXN0bmFtZSgpOwogICAgJHBhcm1zWyd4X2VtYWlsJ10gPSAkYmlsbGluZy0+Z2V0X2VtYWlsKCk7CiAgICAkcGFybXNbJ3hfYWRkcmVzcyddID0gICRiaWxsaW5nLT5nZXRfYWRkcmVzczEoKTsKICAgICRwYXJtc1sneF9jaXR5J10gPSAkYmlsbGluZy0+Z2V0X2NpdHkoKTsKICAgICRwYXJtc1sneF9zdGF0ZSddID0gJGJpbGxpbmctPmdldF9zdGF0ZSgpOwogICAgJHBhcm1zWyd4X2NvdW50cnknXSA9ICRiaWxsaW5nLT5nZXRfY291bnRyeSgpOwogICAgJHBhcm1zWyd4X3ppcCddID0gJGJpbGxpbmctPmdldF9wb3N0YWwoKTsKCiAgICAkcGFybXNbJ3hfc2hpcF90b19maXJzdF9uYW1lJ10gPSAkc2hpcHBpbmctPmdldF9maXJzdG5hbWUoKTsKICAgICRwYXJtc1sneF9zaGlwX3RvX2xhc3RfbmFtZSddID0gJHNoaXBwaW5nLT5nZXRfbGFzdG5hbWUoKTsKICAgICRwYXJtc1sneF9zaGlwX3RvX2FkZHJlc3MnXSA9ICAkc2hpcHBpbmctPmdldF9hZGRyZXNzMSgpOwogICAgJHBhcm1zWyd4X3NoaXBfdG9fY2l0eSddID0gJHNoaXBwaW5nLT5nZXRfY2l0eSgpOwogICAgJHBhcm1zWyd4X3NoaXBfdG9fc3RhdGUnXSA9ICRzaGlwcGluZy0+Z2V0X3N0YXRlKCk7CiAgICAkcGFybXNbJ3hfc2hpcF90b19jb3VudHJ5J10gPSAkc2hpcHBpbmctPmdldF9jb3VudHJ5KCk7CiAgICAkcGFybXNbJ3hfc2hpcF90b196aXAnXSA9ICRzaGlwcGluZy0+Z2V0X3Bvc3RhbCgpOwogIH0KCiRuZWVkX2xpbmVfaXRlbXMgPSBGQUxTRTsKc3dpdGNoKCAkdGhpcy0+R2V0VHJhbnNhY3Rpb25UeXBlKCkgKQogIHsKICBjYXNlIENHUGF5bWVudEdhdGV3YXlCYXNlOjpUUkFOU19WT0lEOgogICAgaWYoICEkdGhpcy0+R2V0VHJhbnNhY3Rpb25JZCgpICkKICAgICAgewoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2RhdGEnKSk7CgkkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKCXJldHVybjsKICAgICAgfQogICAgJHBhcm1zWyd4X3R5cGUnXSA9ICdWT0lEJzsKICAgICRwYXJtc1sneF90cmFuc19pZCddID0gJHRoaXMtPkdldFRyYW5zYWN0aW9uSWQoKTsKICAgICRzdHIgPSAkdGhpcy0+X2RhdGFbJ2NjaW5mbyddWyd4X2NhcmRfbnVtJ107CiAgICAkcGFybXNbJ3hfY2FyZF9udW0nXSA9IHN1YnN0cigkc3RyLC00KTsgLy8gbGFzdCBmb3VyIGNoYXJzIG9ubHkKICAgIGJyZWFrOwoKICBjYXNlIENHUGF5bWVudEdhdGV3YXlCYXNlOjpUUkFOU19DUkVESVQ6CiAgICBpZiggISR0aGlzLT5HZXRUcmFuc2FjdGlvbklkKCkgKQogICAgICB7CgkkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfZGF0YScpKTsKCSR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJcmV0dXJuOwogICAgICB9CiAgICAkcGFybXNbJ3hfdHlwZSddID0gJ0NSRURJVCc7CiAgICAkcGFybXNbJ3hfdHJhbnNfaWQnXSA9ICR0aGlzLT5HZXRUcmFuc2FjdGlvbklkKCk7CiAgICAkc3RyID0gJHRoaXMtPl9kYXRhWydjY2luZm8nXVsneF9jYXJkX251bSddOwogICAgJHBhcm1zWyd4X2NhcmRfbnVtJ10gPSBzdWJzdHIoJHN0ciwtNCk7IC8vIGxhc3QgZm91ciBjaGFycyBvbmx5CiAgICBicmVhazsKCiAgY2FzZSBDR1BheW1lbnRHYXRld2F5QmFzZTo6VFJBTlNfQ0FQVFVSRToKICBkZWZhdWx0OgogICAgJHBhcm1zWyd4X3R5cGUnXSA9ICdBVVRIX0NBUFRVUkUnOwogICAgLy8gYWRkIGNyZWRpdCBjYXJkIGluZm8KICAgIGZvcmVhY2goICR0aGlzLT5fZGF0YVsnY2NpbmZvJ10gYXMgJGtleSA9PiAkdmFsdWUgKQogICAgICB7CgkkcGFybXNbJGtleV0gPSAkdmFsdWU7CiAgICAgIH0KICAgICRuZWVkX2xpbmVfaXRlbXMgPSBUUlVFOwogICAgYnJlYWs7CiAgfQokcGFybXNbJ3hfY3VzdF9pZCddID0gJGZldS0+TG9nZ2VkSW5JZCgpOwokcGFybXNbJ3hfaW52b2ljZV9udW0nXSA9ICR0aGlzLT5fZGF0YVsnaW52b2ljZSddOwokcGFybXNbJ3hfYW1vdW50J10gPSAoJHRpbnl0cmFuc2FjdGlvbnMpPzAuMDE6JGFtb3VudDsKCmlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2Rlc2NyaXB0aW9uJ10pICkKICB7CiAgICAkcGFybXNbJ3hfZGVzY3JpcHRpb24nXSA9ICR0aGlzLT5fZGF0YVsnZGVzY3JpcHRpb24nXTsKICB9CgoKLy8gYnVpbGQgb3VyIG91dHB1dCBwb3N0IHN0cmluZwokcG9zdF9zdHJpbmcgPSAnJzsKZm9yZWFjaCggJHBhcm1zIGFzICRrZXkgPT4gJHZhbHVlICkKewogICR2YWx1ZSA9IHVybGVuY29kZSgkdmFsdWUpOwogICRwb3N0X3N0cmluZyAuPSAieyRrZXl9PXskdmFsdWV9JiI7Cn0KCi8vIGdldCB0aGUgaXRlbXMKaWYoICRuZWVkX2xpbmVfaXRlbXMgKQogIHsKICAgICRpdGVtcyA9IGFycmF5KCk7CiAgICAkY291bnQgPSAxOwogICAgJGhhc19uZWdhdGl2ZSA9IGZhbHNlOwogICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhWydpdGVtcyddIGFzICRuYW1lID0+ICRkYXRhICkKICAgICAgewoJaWYoICRkYXRhWydhbW91bnQnXSA8IDAuMDAgKQoJICB7CgkgICAgJGhhc19uZWdhdGl2ZSA9IHRydWU7CgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQogICAgaWYoICRoYXNfbmVnYXRpdmUgKQogICAgICB7CgkvLyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBuZWdhdGl2ZSBhbW91bnQKCS8vIHNvIG11bmdlIGV2ZXJ5dGhpbmcgdG9nZXRoZXIgaW4gb25lIGxpbmUgaXRlbS4KCSRjb3VudCA9IDE7CgkkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gPSBhcnJheSgpOwoJJGRlc2MgPSB0cmltKCR0aGlzLT5fZGF0YVsnZGVzY3JpcHRpb24nXSk7CglpZiggISRkZXNjICkKCSAgewoJICAgICRkZXNjID0gZ2V0X3NpdGVfcHJlZmVyZW5jZSgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJyk7CgkgIH0KCSR0aGlzLT5fZGF0YVsnaXRlbXMnXVskZGVzY10gPSBhcnJheSgnbmFtZSc9PiRkZXNjLCdxdWFudGl0eSc9PjEsJ2Ftb3VudCc9PiRhbW91bnQsJ3RheCc9PjApOwogICAgICB9CgogICAgZm9yZWFjaCggJHRoaXMtPl9kYXRhWydpdGVtcyddIGFzICRrZXkgPT4gJGl0ZW0gKQogICAgICB7CgkkdG1wID0gYXJyYXkoJGNvdW50Kyssc3Vic3RyKCRpdGVtWyduYW1lJ10sMCwzMSksJGl0ZW1bJ25hbWUnXSwKCQkgICAgICRpdGVtWydxdWFudGl0eSddLHNwcmludGYoIiUuMmYiLCRpdGVtWydhbW91bnQnXSksCgkJICAgICAoaXNzZXQoJGl0ZW1bJ3RheCddKSk/JzEnOicwJyk7Cgkkc3RyID0gdXJsZW5jb2RlKGltcGxvZGUoJzx8PicsJHRtcCkpOwoJJHBvc3Rfc3RyaW5nIC49ICJ4X2xpbmVfaXRlbT17JHN0cn0mIjsKICAgICAgfQogIH0KCi8vIGNsZWFudXAuCiRwb3N0X3N0cmluZyA9IHJ0cmltKCRwb3N0X3N0cmluZywiJiAiKTsKCgovLwovLyBkbyBvdXIgcG9zdAovLwokcmVxdWVzdCA9IGN1cmxfaW5pdCgkcG9zdF91cmwpOyAvLyBpbml0aWF0ZSBjdXJsIG9iamVjdApjdXJsX3NldG9wdCgkcmVxdWVzdCwgQ1VSTE9QVF9IRUFERVIsIDApOyAvLyBzZXQgdG8gMCB0byBlbGltaW5hdGUgaGVhZGVyIGluZm8gZnJvbSByZXNwb25zZQpjdXJsX3NldG9wdCgkcmVxdWVzdCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7IC8vIFJldHVybnMgcmVzcG9uc2UgZGF0YSBpbnN0ZWFkIG9mIFRSVUUoMSkKY3VybF9zZXRvcHQoJHJlcXVlc3QsIENVUkxPUFRfUE9TVEZJRUxEUywgJHBvc3Rfc3RyaW5nKTsgLy8gdXNlIEhUVFAgUE9TVCB0byBzZW5kIGZvcm0gZGF0YQpjdXJsX3NldG9wdCgkcmVxdWVzdCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOyAvLyB1bmNvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBnZXQgbm8gZ2F0ZXdheSByZXNwb25zZS4KJHBvc3RfcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJHJlcXVlc3QpOyAvLyBleGVjdXRlIGN1cmwgcG9zdCBhbmQgc3RvcmUgcmVzdWx0cyBpbiAkcG9zdF9yZXNwb25zZQpjdXJsX2Nsb3NlICgkcmVxdWVzdCk7IC8vIGNsb3NlIGN1cmwgb2JqZWN0CgovLyBnZXQgdGhlIHJlc3VsdHMKJHJlc3BvbnNlX2FycmF5ID0gZXhwbG9kZSgkcGFybXNbInhfZGVsaW1fY2hhciJdLCRwb3N0X3Jlc3BvbnNlKTsKJHRoaXMtPl9kYXRhWydyZXNwb25zZV9kYXRhJ10gPSAkcmVzcG9uc2VfYXJyYXk7CgovLyBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdGFrZW4gZnJvbTogIGh0dHA6Ly9kZXZlbG9wZXIuYXV0aG9yaXplLm5ldC9ndWlkZXMvQUlNLwovLyBwYXJzZSByZXN1bHQgaW5mb3JtYXRpb24KJHRyYW5zX3Jlc3BvbnNlX2NvZGUgICAgPSAkcmVzcG9uc2VfYXJyYXlbMF07CiR0cmFuc19yZXNwb25zZV9zdWJjb2RlID0gJHJlc3BvbnNlX2FycmF5WzFdOwokdHJhbnNfcmVzcG9uc2VfcmVhc29uICA9ICRyZXNwb25zZV9hcnJheVsyXTsKJHRyYW5zX3Jlc3BvbnNlX3RleHQgICAgPSAkcmVzcG9uc2VfYXJyYXlbM107CiR0cmFuc19hdXRoX2NvZGUgICAgICAgID0gJHJlc3BvbnNlX2FycmF5WzRdOwokdHJhbnNfYXZzX3Jlc3BvbnNlICAgICA9ICRyZXNwb25zZV9hcnJheVs1XTsKJHRyYW5zX3RyYW5zYWN0aW9uX2lkICAgPSAkcmVzcG9uc2VfYXJyYXlbNl07CiR0cmFuc19pbnZvaWNlX251bSAgICAgID0gJHJlc3BvbnNlX2FycmF5WzddOwokdHJhbnNfYW1vdW50ICAgICAgICAgICA9ICRyZXNwb25zZV9hcnJheVs5XTsKJHRyYW5zX2N1c3RfaWQgICAgICAgICAgPSAkcmVzcG9uc2VfYXJyYXlbMTJdOwokdHJhbnNfY2N2X3Jlc3BvbnNlICAgICA9ICRyZXNwb25zZV9hcnJheVszOF07CgovLyBoYW5kbGUgdGhlIHJlc3VsdHMuCnN3aXRjaCgkdHJhbnNfcmVzcG9uc2VfY29kZSkKICB7CiAgY2FzZSAnMSc6CiAgICAkdGhpcy0+U2V0VHJhbnNhY3Rpb25TdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOwogICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uSWQoJHRyYW5zX3RyYW5zYWN0aW9uX2lkKTsKICAgICR0aGlzLT5TZXRUcmFuc2FjdGlvbkFtb3VudCgkdHJhbnNfYW1vdW50KTsKICAgIGJyZWFrOwoKICBjYXNlICcyJzoKICAgICR0aGlzLT5TZXREZWNsaW5lZCgpOwogICAgYnJlYWs7CgogIGNhc2UgJzMnOgogICAgLy8gZW5nbGlzaCBvbmx5IGF0bS4KICAgICR0aGlzLT5TZXRFcnJvcigkdHJhbnNfcmVzcG9uc2VfdGV4dC4nICgnLiR0cmFuc19yZXNwb25zZV9yZWFzb24uJyknKTsKICAgIGlmKCAkdGhpcy0+R2V0VHJhbnNhY3Rpb25UeXBlKCkgIT0gQ0dQYXltZW50R2F0ZXdheUJhc2U6OlRSQU5TX0NBUFRVUkUgJiYgJHRyYW5zX3Jlc3BvbnNlX3JlYXNvbiA9PSAxNiApCiAgICAgIHsKCSR0aGlzLT5TZXRUcmFuc2FjdGlvblN0YXR1cyhQQVlNRU5UX1NUQVRVU19OT1RGT1VORCk7CiAgICAgIH0KICAgIGJyZWFrOwoKICBjYXNlICc0JzoKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaGVsZF9mb3JfcmV2aWV3JykpOwogICAgYnJlYWs7CgogIGRlZmF1bHQ6CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd25fZGF0YScpKTsKICAgIGJyZWFrOwogIH0KJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.silent_post.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoIHN0cnRvdXBwZXIoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10pICE9ICdQT1NUJyApIGV4aXQ7CgokcmVxZF92YXJzID0gYXJyYXkoJ3hfcmVzcG9uc2VfY29kZScsJ3hfdHJhbnNfaWQnLCd4X3N1YnNjcmlwdGlvbl9pZCcsJ3hfYW1vdW50JywneF9pbnZvaWNlX251bScpOwokZGF0YSA9IGFycmF5KCk7CmZvcmVhY2goICRyZXFkX3ZhcnMgYXMgJG9uZSApCnsKICBpZiggIWlzc2V0KCRfUE9TVFskb25lXSkgKQogICAgewogICAgICAvLyB0aGVyZSdzIGEgdmFyaWFibGUgbWlzc2luZwogICAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnc2lsZW50X3Bvc3QgLSBtaXNzaW5nIFBPU1QgdmFyaWFibGUgJy4kb25lKTsKICAgICAgZXhpdDsKICAgIH0KICAkZGF0YVskb25lXSA9ICRfUE9TVFskb25lXTsKfQoKLy8gYnVpbGQgYSB0cmFuc2FjdGlvbi4KJHRyYW5zID0gbmV3IGNncGdiX2FzeW5jX3RyYW5zYWN0aW9uKCcnLCRkYXRhWyd4X2Ftb3VudCddLCR0aGlzLT5HZXROYW1lKCkpOwpzd2l0Y2goICRkYXRhWyd4X3Jlc3BvbnNlX2NvZGUnXSApCiAgewogIGNhc2UgMToKICAgIC8vIGdvb2QKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLHNwcmludGYoJ1JlY2VpdmVkIGEgcGF5bWVudCAoaWQ6ICVzIGFtb3VudDogJXMpIGZvciBvcmRlciAlcywgc3Vic2NyaXB0aW9uICVzJywKCQkJCQkgICAgICRkYXRhWyd4X3RyYW5zX2lkJ10sJGRhdGFbJ3hfYW1vdW50J10sJGRhdGFbJ3hfaW52b2ljZV9udW0nXSwkZGF0YVsneF9zdWJzY3JpcHRpb25faWQnXSkpOwogICAgJHRyYW5zLT5zZXRfc3RhdHVzKFBBWU1FTlRfU1RBVFVTX0FQUFJPVkVEKTsKICAgIGJyZWFrOwoKICBjYXNlIDI6CiAgICAvLyBkZWNsaW5lZAogICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksc3ByaW50ZignUGF5bWVudCBkZWNsaW5lZChpZDogJXMgYW1vdW50OiAlcykgZm9yIG9yZGVyICVzLCBzdWJzY3JpcHRpb24gJXMnLAoJCQkJCSAgICAgJGRhdGFbJ3hfdHJhbnNfaWQnXSwkZGF0YVsneF9hbW91bnQnXSwkZGF0YVsneF9pbnZvaWNlX251bSddLCRkYXRhWyd4X3N1YnNjcmlwdGlvbl9pZCddKSk7CiAgICAkdHJhbnMtPnNldF9zdGF0dXMoUEFZTUVOVF9TVEFUVVNfREVDTElORUQpOwogICAgYnJlYWs7CgogIGNhc2UgMzoKICBkZWZhdWx0OgogICAgLy8gZXJyb3Igb2Ygc29tZSBzb3J0LgogICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksc3ByaW50ZignRXJyb3IgcmVjZWl2ZWQgZm9yIG9yZGVyICVzIC0gJywkZGF0YVsneF9pbnZvaWNlX251bSddKS4kX1BPU1RbJ3hfcmVzcG9uc19yZWFzb25fdGV4dCddKTsKICAgICR0cmFucy0+c2V0X3N0YXR1cyhQQVlNRU5UX1NUQVRVU19FUlJPUik7CiAgICBicmVhazsKICB9CiR0cmFucy0+c2V0X2ludm9pY2UoJGRhdGFbJ3hfaW52b2ljZV9udW0nXSk7CiR0cmFucy0+c2V0X290aGVyX3ZhbCgnU3Vic2NyaXB0aW9uIElEJywkZGF0YVsneF9zdWJzY3JpcHRpb25faWQnXSk7CmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGlueXRyYW5zYWN0aW9ucycsMCkgKQogIHsKICAgICR0cmFucy0+c2V0X290aGVyX3ZhbHVlKCd0cmFuc2FjdGlvbl9hbXRfb3ZlcnJpZGUnLDEpOwogIH0KJHRyYW5zLT5zZXRfaWQoJGRhdGFbJ3hfdHJhbnNfaWQnXSk7CiR0aGlzLT5zZW5kX3RyYW5zYWN0aW9uX25vdGlmaWNhdGlvbigkdHJhbnMpOwoKCiMKIyBFT0YKIz8+]]></data>
	</file>
	<file>
	  <filename>/AuthNetAim.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokY2dwYXltZW50Z2F0ZXdheWJhc2UgPSBjbXNfam9pbl9wYXRoKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLCdtb2R1bGVzJywKCSdDR1BheW1lbnRHYXRld2F5QmFzZScsJ0NHUGF5bWVudEdhdGV3YXlCYXNlLm1vZHVsZS5waHAnKTsKaWYoICFpc19yZWFkYWJsZSggJGNncGF5bWVudGdhdGV3YXliYXNlICkgKQp7CgllY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR1BheW1lbnRHYXRld2F5QmFzZSBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLiAgUGxlYXNlIGluc3RhbGwgaXQ8L2ZvbnQ+PC9oMT4nOwoJcmV0dXJuOwp9CmlmKCAhY2xhc3NfZXhpc3RzKCdDR1BheW1lbnRHYXRld2F5QmFzZScpICkKewogIHJlcXVpcmVfb25jZSgkY2dwYXltZW50Z2F0ZXdheWJhc2UpOwp9CgoKZGVmaW5lKCdBVVRITkVUQVJCX1BST0RVQ1RJT05fVVJMJywnaHR0cHM6Ly9hcGkuYXV0aG9yaXplLm5ldC94bWwvdjEvcmVxdWVzdC5hcGknKTsKZGVmaW5lKCdBVVRITkVUQVJCX1RFU1RfVVJMJywnaHR0cHM6Ly9hcGl0ZXN0LmF1dGhvcml6ZS5uZXQveG1sL3YxL3JlcXVlc3QuYXBpJyk7CmRlZmluZSgnQVVUSE5FVEFJTV9TRUNVUkVfUE9TVF9VUkwnLCdodHRwczovL3NlY3VyZS5hdXRob3JpemUubmV0L2dhdGV3YXkvdHJhbnNhY3QuZGxsJyk7CmRlZmluZSgnQVVUSE5FVEFJTV9URVNUX1BPU1RfVVJMJywnaHR0cHM6Ly90ZXN0LmF1dGhvcml6ZS5uZXQvZ2F0ZXdheS90cmFuc2FjdC5kbGwnKTsKCmNsYXNzIEF1dGhOZXRBaW0gZXh0ZW5kcyBDR1BheW1lbnRHYXRld2F5QmFzZQp7CgogIHByb3RlY3RlZCAkX2RhdGE7CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIENvbnN0cnVjdG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICB9CgogIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEZyaWVuZGx5TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRWZXJzaW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgewogICAgcmV0dXJuICcxLjQnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEhlbHAoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3IoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnUm9iZXJ0IENhbXBiZWxsJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICB7CiAgICByZXR1cm4gJ2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldENoYW5nZUxvZygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpCiAgewogICAgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL2NoYW5nZWxvZy5pbmMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJc1BsdWdpbk1vZHVsZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNBZG1pbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pblNlY3Rpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQogIHsKICAgIHJldHVybiAnZWNvbW1lcmNlJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFZpc2libGVUb0FkbWluVXNlcigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fAogICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlcGVuZGVuY2llcygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgcmV0dXJuIGFycmF5KCdDR1BheW1lbnRHYXRld2F5QmFzZSc9PicxLjAuMTEnLAoJCSAnQ0dFeHRlbnNpb25zJz0+JzEuMjUnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNaW5pbXVtQ01TVmVyc2lvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gIjEuOS4yIjsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7CiAgfQoKCQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBSZXF1aXJlc0NyZWRpdENhcmRJbmZvKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBSZXF1aXJlc1NTTCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzU1NMKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBSZXF1aXJlc1NoaXBwaW5nSW5mbygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzU2hpcHBpbmdJbmZvKCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgUmVxdWlyZXNCaWxsaW5nSW5mbygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzQmlsbGluZ0luZm8oKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTdXBwb3J0c1JlZnVuZHMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTdXBwb3J0c1JlZnVuZHMoKQogIHsKICAgIGlmKCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3Rtb2RlJykgKQogICAgICB7CglyZXR1cm4gVFJVRTsKICAgICAgfQogICAgcmV0dXJuIEZBTFNFOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldFBhcmFtZXRlcnMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKICB7CiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgna2V5JywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdvcmRlcl9pZCcsIENMRUFOX0lOVCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2F2ZVN0YXRlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gU2F2ZVN0YXRlKCRlbmNyeXB0ID0gZmFsc2UsJGtleSA9ICcnKQogIHsKICAgIGlmKCAkZW5jcnlwdCApCiAgICAgIHsKCWlmKCAhJGtleSApICRrZXkgPSBzdHJfc2h1ZmZsZShtZDUoc2Vzc2lvbl9pZCgpLnRpbWUoKSkpOwoJJHJhdyA9IHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpOwoJJGVuYyA9ICR0aGlzLT5lbmNyeXB0KCRrZXksJHJhdyk7CgkkX1NFU1NJT05bJ2F1dGhuZXRhaW0nXSA9IGJhc2U2NF9lbmNvZGUoJGVuYyk7CglyZXR1cm4gJGtleTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkcmF3ID0gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7CgkkX1NFU1NJT05bJ2F1dGhuZXRhaW0nXSA9IGJhc2U2NF9lbmNvZGUoJHJhdyk7CiAgICAgIH0KICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBSZXN0b3JlU3RhdGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBSZXN0b3JlU3RhdGUoJGtleSA9ICcnKQogIHsKICAgIGlmKCAhaXNzZXQoJF9TRVNTSU9OWydhdXRobmV0YWltJ10pICkgcmV0dXJuIEZBTFNFOwogICAgaWYoIGVtcHR5KCRrZXkpICkKICAgICAgewoJJHJhdyA9IGJhc2U2NF9kZWNvZGUoJF9TRVNTSU9OWydhdXRobmV0YWltJ10pOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRlbmMgPSBiYXNlNjRfZGVjb2RlKCRfU0VTU0lPTlsnYXV0aG5ldGFpbSddKTsKCSRyYXcgPSAkdGhpcy0+ZGVjcnlwdCgka2V5LCRlbmMpOwoJaWYoICRyYXcgPT09IEZBTFNFICkgcmV0dXJuIEZBTFNFOwogICAgICB9CiAgICAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkcmF3KTsKICAgIHVuc2V0KCRfU0VTU0lPTlsnYXV0aG5ldGFpbSddKTsKICAgIHJldHVybiBUUlVFOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldFBheW1lbnRJZCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldFBheW1lbnRJZCgkcGF5bWVudF9pZCkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3BheW1lbnRfaWQnXSA9ICRwYXltZW50X2lkOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFBheW1lbnRJZCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldFBheW1lbnRJZCgpCiAgewogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ3BheW1lbnRfaWQnXSkgKSByZXR1cm4gRkFMU0U7CiAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydwYXltZW50X2lkJ107CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0Q3JlZGl0Q2FyZEluZm8oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRDcmVkaXRDYXJkSW5mbygkY2NudW1iZXIsJGNjZXhwLCRjY3Zjb2RlKQogIHsKICAgICR0aGlzLT5fZGF0YVsncmF3X2NjaW5mbyddID0gYXJyYXkoJGNjbnVtYmVyLCRjY2V4cCwkY2N2Y29kZSk7CgogICAgJF9jY2luZm8gPSBhcnJheSgpOwogICAgJF9jY2luZm9bJ3hfY2FyZF9udW0nXSA9IHByZWdfcmVwbGFjZSgnKFteMC05XSknLCcnLCRjY251bWJlcik7CiAgICAkX2NjaW5mb1sneF9leHBfZGF0ZSddID0gZGF0ZSgnbScsJGNjZXhwKS4nLycuZGF0ZSgnWScsJGNjZXhwKTsKICAgIGlmKCAhZW1wdHkoJGNjdmNvZGUpICkKICAgICAgewoJJF9jY2luZm9bJ3hfY2FyZF9jb2RlJ10gPSBwcmVnX3JlcGxhY2UoJyhbXjAtOV0pJywnJywkY2N2Y29kZSk7CiAgICAgIH0KICAgICR0aGlzLT5fZGF0YVsnY2NpbmZvJ10gPSAkX2NjaW5mbzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTZXRDdXJyZW5jeUNvZGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRDdXJyZW5jeUNvZGUoJGNvZGUgPSAnVVNEJykKICB7CiAgICAkdGhpcy0+X2RhdGFbJ2N1cnJlbmN5Y29kZSddID0gc3RydG91cHBlcigkY29kZSk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0V2VpZ2h0VW5pdHMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRXZWlnaHRVbml0cygkdW5pdHMgPSAnbGJzJykKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3dlaWdodHVuaXRzJ10gPSAkdW5pdHM7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0RGVzdGluYXRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXREZXN0aW5hdGlvbigkdXJsKQogIHsKICAgICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSA9ICR1cmw7CiAgfQogICAgCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEFkZEl0ZW0oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBBZGRJdGVtKCRuYW1lLCRudW1iZXIsJHF1YW50aXR5LCR3ZWlnaHQsJGFtb3VudCwkdGF4ID0gJycpCiAgewogICAgJG5hbWUgPSBzdHJpcF90YWdzKCRuYW1lKTsKICAgICRuYW1lID0gcHJlZ19yZXBsYWNlKCcvXCYuKlw7XCJcJ1ywLycsJycsJG5hbWUpOwogICAgJG5hbWUgPSB0cmltKCRuYW1lKTsKCiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnaXRlbXMnXSkgKQogICAgICB7CgkkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gPSBhcnJheSgpOwogICAgICB9CgogICAgJG51bSA9IDE7CiAgICAkdG1wID0gJG5hbWU7CiAgICB3aGlsZSggaXNzZXQoJHRoaXMtPl9kYXRhWydpdGVtcyddWyR0bXBdKSAmJiAoJG51bSA8IDEwMCkgKQogICAgICB7CgkkbnVtID0gKGludCkkbnVtICsgMTsKCSR0bXAgPSAkbmFtZSAuICRudW07CiAgICAgIH0KICAgICR0aGlzLT5fZGF0YVsnaXRlbXMnXVskdG1wXSA9IAogICAgICBhcnJheSgnbmFtZSc9PiRuYW1lLAoJICAgICdudW1iZXInPT4kbnVtYmVyLAoJICAgICdxdWFudGl0eSc9PiRxdWFudGl0eSwKCSAgICAnd2VpZ2h0Jz0+JHdlaWdodCwKCSAgICAnYW1vdW50Jz0+JGFtb3VudCk7CiAgICBpZighZW1wdHkoJHRheCkpCiAgICAgIHsKCSR0aGlzLT5fZGF0YVsnaXRlbXMnXVskdG1wXVsndGF4J10gPSAkdGF4OwogICAgICB9CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0T3JkZXJEZXNjcmlwdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldE9yZGVyRGVzY3JpcHRpb24oJHR4dCkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBzdWJzdHIoJHR4dCwwLDI1NSk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0T3JkZXJPYmplY3QoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFNldE9yZGVyT2JqZWN0KG9yZGVyc19vcmRlciYgJG9yZGVyKQogIHsKICAgICR0aGlzLT5fZGF0YVsnb3JkZXJfb2JqJ10gPSAkb3JkZXI7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgZ2V0X29yZGVyX29iamVjdCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uICZnZXRfb3JkZXJfb2JqZWN0KCkKICB7CiAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydvcmRlcl9vYmonXSkgKQogICAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydvcmRlcl9vYmonXTsKICAgICRyZXMgPSBudWxsOwogICAgcmV0dXJuICRyZXM7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0T3JkZXJUYXhBbW91bnQoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRPcmRlclRheEFtb3VudCgkdGF4KQogIHsKICAgICR0aGlzLT5fZGF0YVsnb3JkZXJ0YXgnXSA9ICR0YXg7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0T3JkZXJTaGlwcGluZygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldE9yZGVyU2hpcHBpbmcoJHNoaXBwaW5nKQogIHsKICAgICR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddID0gJHNoaXBwaW5nOwogIH0KCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTZXRJbnZvaWNlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0SW52b2ljZSgkaW52b2ljZSkKICB7CiAgICAkbGVuID0gbWluKHN0cmxlbigkaW52b2ljZSksMjApKi0xOwogICAgJHRoaXMtPl9kYXRhWydpbnZvaWNlJ10gPSBzdWJzdHIoJGludm9pY2UsJGxlbik7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0T3JkZXJJRCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldE9yZGVySUQoJG9yZGVyaWQpCiAgewogICAgJHRoaXMtPl9kYXRhWydvcmRlcmlkJ10gPSAkb3JkZXJpZDsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRPcmRlcklEKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0T3JkZXJJRCgpCiAgewogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnb3JkZXJpZCddKSApCiAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJ29yZGVyaWQnXTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTZXRUcmFuc2FjdGlvbklkKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VHJhbnNhY3Rpb25JZCgkdGlkKQogIHsKICAgICR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25faWQnXSA9ICR0aWQ7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0VHJhbnNhY3Rpb25TdGF0dXMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRUcmFuc2FjdGlvblN0YXR1cygkc3RhdHVzKQogIHsKICAgICR0aGlzLT5fZGF0YVsnc3RhdHVzJ10gPSAkc3RhdHVzOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldFRyYW5zYWN0aW9uRGF0YSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIFNldFRyYW5zYWN0aW9uRGF0YSgka2V5LCR2YWx1ZSkKICB7CiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsndHJhbnNkYXRhJ10pICkgJHRoaXMtPl9kYXRhWyd0cmFuc2RhdGEnXSA9IGFycmF5KCk7CiAgICAkdGhpcy0+X2RhdGFbJ3RyYW5zZGF0YSddWyRrZXldID0gJHZhbHVlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFRyYW5zYWN0aW9uS2V5cygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uS2V5cygpCiAgewogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zZGF0YSddKSApIHJldHVybjsKICAgIHJldHVybiBhcnJheV9rZXlzKCR0aGlzLT5fZGF0YVsndHJhbnNkYXRhJ10pOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFRyYW5zYWN0aW9uRGF0YSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uRGF0YSgka2V5LCRkZmx0ID0gJycpCiAgewogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zZGF0YSddKSApIHJldHVybiAkZGZsdDsKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWyd0cmFuc2RhdGEnXVska2V5XSkgKSAgcmV0dXJuICRkZmx0OwogICAgcmV0dXJuICR0aGlzLT5fZGF0YVsndHJhbnNkYXRhJ11bJGtleV07CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0RXJyb3IoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRFcnJvcigkbWVzc2FnZSkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfRVJST1I7CiAgICAkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXSA9ICRtZXNzYWdlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldENhbmNlbGxlZCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldENhbmNlbGxlZCgkbWVzc2FnZSkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFJlc2V0KCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gUmVzZXQoKQogIHsKICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0RGVjbGluZWQoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBTZXREZWNsaW5lZCgkbWVzc2FnZSkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfREVDTElORUQ7CiAgICAkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9wYXltZW50X2RlY2xpbmVkJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0VHJhbnNhY3Rpb25TdGF0dXMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRUcmFuc2FjdGlvblN0YXR1cygpCiAgewogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnc3RhdHVzJ10pICkKICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnc3RhdHVzJ107CiAgICByZXR1cm4gRkFMU0U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0VHJhbnNhY3Rpb25JZCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uSWQoKQogIHsKICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2lkJ10pICkKICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25faWQnXTsKICAgIHJldHVybiBGQUxTRTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTZXRUcmFuc2FjdGlvbkFtb3VudCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldFRyYW5zYWN0aW9uQW1vdW50KCRhbXQpCiAgewogICAgJHRoaXMtPl9kYXRhWyd0cmFuc2FjdGlvbl9hbXQnXSA9IChmbG9hdCkkYW10OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFRyYW5zYWN0aW9uQW1vdW50KCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VHJhbnNhY3Rpb25BbW91bnQoKQogIHsKICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2FtdCddKSApCiAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJ3RyYW5zYWN0aW9uX2FtdCddOwogICAgcmV0dXJuIEZBTFNFOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRNZXNzYWdlKCkKICB7CiAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydlcnJvcl9tZXNzYWdlJ10pICkKICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddOwogICAgcmV0dXJuIEZBTFNFOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEZpbmlzaFRyYW5zYWN0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gRmluaXNoVHJhbnNhY3Rpb24oKQogIHsKICAgIC8vaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ10pICkgcmV0dXJuIEZBTFNFOwogICAgJGtleSA9ICR0aGlzLT5TYXZlU3RhdGUoKTsKICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ10pICkKICAgICAgewoJJHVybCA9ICR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXTsKCSR1cmwgPSBodG1sX2VudGl0eV9kZWNvZGUoJHVybCk7CgkkdXJsIC49ICImY250bnQwMWRhdGFrZXk9JGtleSI7CglyZWRpcmVjdCgkdXJsKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CglyZXR1cm4gJHRoaXMtPkdldFRyYW5zYWN0aW9uU3RhdHVzKCk7CiAgICAgIH0KICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBDaGVja0luZm8oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBDaGVja0luZm8oKQogIHsKICAgIC8vIFRPRE86IGZpbGwgdGhpcyBpbi4KICAgIHJldHVybiBUUlVFOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEZvcm0oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRGb3JtKCRyZXR1cm5pZCkKICB7CiAgICBpZiggISR0aGlzLT5DaGVja0luZm8oKSApIHJldHVybiBGQUxTRTsKICAgICRsb2dpbmlkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xvZ2luaWQnKTsKICAgICR0cmFuc2FjdGlvbmtleSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmFuc2FjdGlvbmtleScpOwogICAgaWYoIGVtcHR5KCRsb2dpbmlkKSB8fCBlbXB0eSgkdHJhbnNhY3Rpb25rZXkpICkKICAgICAgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCR0aGlzLT5HZXROYW1lKCkuJzogJy4kdGhpcy0+TGFuZygnZXJyb3JfY29uZmlndXJhdGlvbicpKTsKICAgICAgfQogICAgCiAgICAka2V5ID0gJHRoaXMtPlNhdmVTdGF0ZSh0cnVlKTsKCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICAgICR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgnY250bnQwMScsJ3Byb2Nlc3NfcGF5bWVudCcsJHJldHVybmlkLAoJCQkJCSAgICAgYXJyYXkoJ2tleSc9PiRrZXkpKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV91cmwnLAoJCSAgICAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9pbWFnZXMvaWNvbi5naWYnKTsKICAgICRzbWFydHktPmFzc2lnbignaW1hZ2VfYWx0JywkdGhpcy0+R2V0TmFtZSgpKTsKCQkgICAgCiAgICAvLyBhbmQgcHJvY2VzcyB0aGUgdGVtcGxhdGUuCiAgICByZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZm9ybV90ZW1wbGF0ZScpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldEJpbGxpbmdBZGRyZXNzKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0QmlsbGluZ0FkZHJlc3Mob3JkZXJzX2FkZHJlc3MmICRiaWxsaW5nX2FkZHkpCiAgewogICAgaWYoICEkYmlsbGluZ19hZGR5IGluc3RhbmNlb2YgY2dlX2FkZHJlc3MgKQogICAgICB7CglyZXR1cm4gRkFMU0U7CiAgICAgIH0KICAgICR0aGlzLT5fZGF0YVsnYmlsbGluZ19hZGRyZXNzJ10gPSAkYmlsbGluZ19hZGR5OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNldFNoaXBwaW5nQWRkcmVzcygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFNldFNoaXBwaW5nQWRkcmVzcyhvcmRlcnNfYWRkcmVzcyYgJHNoaXBwaW5nX2FkZHkpCiAgewogICAgaWYoICEkc2hpcHBpbmdfYWRkeSBpbnN0YW5jZW9mIGNnZV9hZGRyZXNzICkKICAgICAgewoJcmV0dXJuIEZBTFNFOwogICAgICB9CiAgICAkdGhpcy0+X2RhdGFbJ3NoaXBwaW5nX2FkZHJlc3MnXSA9ICRzaGlwcGluZ19hZGR5OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFByb2Nlc3NUcmFuc2FjdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIFByb2Nlc3NUcmFuc2FjdGlvbigpCiAgewogICAgJGtleSA9ICR0aGlzLT5TYXZlU3RhdGUodHJ1ZSk7CiAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgICRwYXJhbXNbJ2tleSddID0gJGtleTsKICAgIHJldHVybiAkdGhpcy0+RG9BY3Rpb24oJ3Byb2Nlc3NfcGF5bWVudCcsJ2NudG50MDEnLCRwYXJhbXMpOwogIH0KCgogIGZ1bmN0aW9uIEdldE5vdGlmaWNhdGlvbk91dHB1dCgkcHJpb3JpdHk9MikKICB7CiAgICAkdGVzdG1vZGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdG1vZGUnLDEpOwogICAgJGRldmFjY3QgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNldGVzdHVybCcsMCk7CiAgICBpZiggJHRlc3Rtb2RlICYmIGNoZWNrX2xvZ2luKEZBTFNFKSApCiAgICAgIHsKCSRkYXRhID0gbmV3IHN0ZENsYXNzOwoJJGRhdGEtPnByaW9yaXR5ID0gMTsKCSRkYXRhLT5odG1sID0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ21zZ190ZXN0bW9kZScpKTsKCXJldHVybiAkZGF0YTsKICAgICAgfQogICAgZWxzZSBpZiggJGRldmFjY3QgKQogICAgICB7CgkkZGF0YSA9IG5ldyBzdGRDbGFzczsKCSRkYXRhLT5wcmlvcml0eSA9IDE7CgkkZGF0YS0+aHRtbCA9ICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdtc2dfZGV2YWNjdCcpKTsKCXJldHVybiAkZGF0YTsKICAgICAgfQogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIGdldF9jYXJ0aXRlbV9wb2xpY3koKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2FydGl0ZW1fcG9saWN5KCkKICB7CiAgICAkcG9saWN5ID0gbmV3IGNnX2Vjb21tX2NhcnRpdGVtX3BvbGljeTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfc3Vic2NyaXB0aW9ucycpICkKICAgICAgewoJJHBvbGljeS0+c2V0X21heF9zdWJzY3JpcHRpb25zKDEpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRwb2xpY3ktPnNldF9tYXhfc3Vic2NyaXB0aW9ucygwKTsKICAgICAgfQogICAgJHBvbGljeS0+c2V0X21peGVkX3N1YnNjcmlwdGlvbnMoRkFMU0UpOwogICAgcmV0dXJuICRwb2xpY3k7CiAgfQp9IC8vIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEFwcmlsLCAyMDA5CiAgICA8dWw+CiAgICAgIDxsaT5Jbml0aWFsIFJlbGVhc2U8L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMC4yIC0gT2N0b2JlciwgMjAwOQogICAgPHVsbD4KICAgICAgPGxpPlVwZ3JhZGUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIENHUGF5bWVudEdhdGV3YXlCYXNlIDEuMC4zPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjEgLSBPY3RvYmVyLCAyMDA5CiAgICA8cD5BZGRzIGFuIGFkdmFuY2VkIHRhYiB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBVUkxTIGZvciBnYXRld2F5cyB0aGF0IGhhdmUgQXV0aG9yaXplLk5FVCBlbXVsYXRvcnMuPC9wPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4yIC0gT2N0b2JlciwgMjAwOQogICAgPHA+Tm93IHN1cHBvcnRzIGFkZGluZyB0aGUgYmlsbGluZyBhbmQgc2hpcHBpbmcgaW5mb3JtYXRpb24uPC9wPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4yLjMgLSBBcHJpbCwgMjAxMAogICAgPHA+Tm93IHdvcmtzIHdpdGggQ0dFY29tbWVyY2VCYXNlIDEuMC41LjwvcD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDEuMi40IC0gQXByaWwsIDIwMTAKICAgIDxwPkZpeGVzIGZvciBtdWx0aXBsZSBiYXNrZXRzIHdpdGggbXVsdGlwbGUgdGF4IGFuZCBzaGlwcGluZyBpdGVtcy48L3A+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjIuNSAtIEZlYnJ1YXJ5LCAyMDExCiAgICA8cD5GaXhlcyBmb3IgaXRlbXMgd2l0aCBuZWdhdGl2ZSBhbW91bnRzLCBhbmQgd2llcmQgY2hhcmFjdGVycyBpbiB0aGUgaXRlbSBuYW1lcy48L3A+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjMgLSBNYXksIDIwMTEKICAgIDx1bD4KICAgICAgPGxpPkFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgc3Vic2NyaXB0aW9ucyAoQVJCKS48L2xpPgogICAgICA8bGk+TnVtZXJvdXMgYnVnIGZpeGVzLjwvbGk+CiAgICAgIDxsaT5SZS1sYWJlbCwgdXBkYXRlIGRlcGVuZGVuY2llcywgYW5kIHVwZGF0ZSBoZWxwLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4zLjEgLSBKdW5lLCAyMDExCiAgICA8cD5NaW5vciBidWcgZml4IHdydCB0ZXN0IG1vZGUuPC9wPgogIDwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.advanced_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9zZXRhZHZhbmNlZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRzbWFydHktPmFzc2lnbigncG9zdF91cmwnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwb3N0X3VybCcsJycpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXN0X3Bvc3RfdXJsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdF9wb3N0X3VybCcsJycpKTsKJHNtYXJ0eS0+YXNzaWduKCdhcmJfdXJsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXJiX3VybCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXN0X2FyYl91cmwnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X2FyYl91cmwnKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkdmFuY2VkX3RhYi50cGwnKTsKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.prefs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiRzaWxlbnRfcG9zdF91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ3NpbGVudF9wb3N0JywkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKSxhcnJheSgpLGZhbHNlLGZhbHNlLCR0aGlzLT5HZXROYW1lKCkuJy9zaWxlbnRfcG9zdCcpOwokc21hcnR5LT5hc3NpZ24oJ3NpbGVudF9wb3N0X3VybCcsJHNpbGVudF9wb3N0X3VybCk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNHQ3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fc2V0cHJlZnMnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2FsbG93X3N1YnNjcmlwdGlvbnMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19zdWJzY3JpcHRpb25zJykpOwokc21hcnR5LT5hc3NpZ24oJ3Rlc3Rtb2RlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdG1vZGUnKSk7CiRzbWFydHktPmFzc2lnbigndGlueXRyYW5zYWN0aW9ucycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rpbnl0cmFuc2FjdGlvbnMnKSk7CiRzbWFydHktPmFzc2lnbigndXNldGVzdHVybCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXRlc3R1cmwnKSk7CiRzbWFydHktPmFzc2lnbignbG9naW5pZCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xvZ2luaWQnKSk7CiRzbWFydHktPmFzc2lnbigndHJhbnNhY3Rpb25rZXknLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmFuc2FjdGlvbmtleScpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJlZnNfdGFiLnRwbCcpOwojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/function.process_subscription.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRiaWxsaW5nID0gJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXTsKJHNoaXBwaW5nID0gJHRoaXMtPl9kYXRhWydzaGlwcGluZ19hZGRyZXNzJ107CmlmKCAhaXNfb2JqZWN0KCRiaWxsaW5nKSB8fCAhaXNfb2JqZWN0KCRzaGlwcGluZykgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19kYXRhJykpOwogICAgJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CiAgICByZXR1cm47CiAgfQoKaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVyX29iaiddKSApCiAgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2RhdGEnKSk7CiAgICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKICAgIHJldHVybjsKICB9CiRvcmRlciA9ICR0aGlzLT5fZGF0YVsnb3JkZXJfb2JqJ107CgovLyB3b290LCB3ZSdyZSBidWlsZGluZyBhIHN1YnNjcmlwdGlvbi4uLiBnb3R0YSBidWlsZCB0aGUgeG1sIGRhdGEuCi8vIHNlZSB0aGlzIHJlZmVyZW5jZTogIGh0dHA6Ly93d3cuYXV0aG9yaXplLm5ldC9zdXBwb3J0L0FSQl9ndWlkZS5wZGYKJHdyaXRlciA9IG5ldyBYTUxXcml0ZXIoKTsKJHdyaXRlci0+b3Blbk1lbW9yeSgpOwokd3JpdGVyLT5zdGFydERvY3VtZW50KCcxLjAnLCAndXRmLTgnKTsKLy8gdGhlIHhtbCByb290Lgokd3JpdGVyLT5zdGFydEVsZW1lbnQoJ0FSQkNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QnKTsKJHdyaXRlci0+d3JpdGVBdHRyaWJ1dGUoJ3htbG5zJywnQW5ldEFwaS94bWwvdjEvc2NoZW1hL0FuZXRBcGlTY2hlbWEueHNkJyk7CgovLyBkbyBhdXRoZW50aWNhdGlvbiBwb3J0aW9uLgokd3JpdGVyLT5zdGFydEVsZW1lbnQoJ21lcmNoYW50QXV0aGVudGljYXRpb24nKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCduYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5pZCcpKTsgCiR3cml0ZXItPndyaXRlRWxlbWVudCgndHJhbnNhY3Rpb25LZXknLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmFuc2FjdGlvbmtleScpKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOwovLyB3cml0ZSB0aGUgcmVmaWQgZWxlbWVudAokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ3JlZklkJywkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSk7Ci8vIHN0YXJ0IHRoZSBzdWJzY3JpcHRpb24uCiR3cml0ZXItPnN0YXJ0RWxlbWVudCgnc3Vic2NyaXB0aW9uJyk7CiRpdGVtID0gJHRoaXMtPm9yZGVyX2NvbnRhaW5zX3N1YnNjcmlwdGlvbigpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ25hbWUnLCRpdGVtLT5nZXRfZGVzY3JpcHRpb24oKSk7CiR3cml0ZXItPnN0YXJ0RWxlbWVudCgncGF5bWVudFNjaGVkdWxlJyk7CiR3cml0ZXItPnN0YXJ0RWxlbWVudCgnaW50ZXJ2YWwnKTsKc3dpdGNoKCAkaXRlbS0+Z2V0X3N1YnNjcl9wYXlwZXJpb2QoKSApCiAgewogIGNhc2UgY2dfZWNvbW1fcHJvZHVjdGluZm9fc3Vic2NyaXB0aW9uOjpTVUJTQ1JfUEVSSU9EX01PTlRITFk6CiAgICAkd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2xlbmd0aCcsMSk7CiAgICAkd3JpdGVyLT53cml0ZUVsZW1lbnQoJ3VuaXQnLCdtb250aHMnKTsKICAgIGJyZWFrOwogIGNhc2UgY2dfZWNvbW1fcHJvZHVjdGluZm9fc3Vic2NyaXB0aW9uOjpTVUJTQ1JfUEVSSU9EX1FVQVJURVJMWToKICAgICR3cml0ZXItPndyaXRlRWxlbWVudCgnbGVuZ3RoJywzKTsKICAgICR3cml0ZXItPndyaXRlRWxlbWVudCgndW5pdCcsJ21vbnRocycpOwogICAgYnJlYWs7CiAgY2FzZSBjZ19lY29tbV9wcm9kdWN0aW5mb19zdWJzY3JpcHRpb246OlNVQlNDUl9QRVJJT0RfU0VNSUFOVUFMTFk6CiAgICAkd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2xlbmd0aCcsNik7CiAgICAkd3JpdGVyLT53cml0ZUVsZW1lbnQoJ3VuaXQnLCdtb250aHMnKTsKICAgIGJyZWFrOwogIGNhc2UgY2dfZWNvbW1fcHJvZHVjdGluZm9fc3Vic2NyaXB0aW9uOjpTVUJTQ1JfUEVSSU9EX1lFQVJMWToKICBkZWZhdWx0OgogICAgJHdyaXRlci0+d3JpdGVFbGVtZW50KCdsZW5ndGgnLDEyKTsKICAgICR3cml0ZXItPndyaXRlRWxlbWVudCgndW5pdCcsJ21vbnRocycpOwogICAgYnJlYWs7CiAgfQokd3JpdGVyLT5lbmRFbGVtZW50KCk7IC8vIGludGVydmFsCiR3cml0ZXItPndyaXRlRWxlbWVudCgnc3RhcnREYXRlJyxzdHJmdGltZSgnJVktJW0tJWQnKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgndG90YWxPY2N1cnJlbmNlcycsOTk5OSk7CiR3cml0ZXItPmVuZEVsZW1lbnQoKTsgLy8gcGF5bWVudHNjaGVkdWxlCiR3cml0ZXItPndyaXRlRWxlbWVudCgnYW1vdW50JyxudW1iZXJfZm9ybWF0KCRvcmRlci0+Z2V0X3RvdGFsKCksMiwnLicsJycpKTsKCiR3cml0ZXItPnN0YXJ0RWxlbWVudCgncGF5bWVudCcpOwokd3JpdGVyLT5zdGFydEVsZW1lbnQoJ2NyZWRpdENhcmQnKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdjYXJkTnVtYmVyJywkdGhpcy0+X2RhdGFbJ2NjaW5mbyddWyd4X2NhcmRfbnVtJ10pOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2V4cGlyYXRpb25EYXRlJyxzdHJmdGltZSgnJVktJW0nLCR0aGlzLT5fZGF0YVsncmF3X2NjaW5mbyddWzFdKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnY2FyZENvZGUnLCR0aGlzLT5fZGF0YVsncmF3X2NjaW5mbyddWzJdKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOyAvLyBjcmVkaXRDYXJkCiR3cml0ZXItPmVuZEVsZW1lbnQoKTsgLy8gcGF5bWVudAoKJHdyaXRlci0+c3RhcnRFbGVtZW50KCdvcmRlcicpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2ludm9pY2VOdW1iZXInLCR0aGlzLT5fZGF0YVsnaW52b2ljZSddKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOyAvLyBvcmRlcjsKCiR3cml0ZXItPnN0YXJ0RWxlbWVudCgnY3VzdG9tZXInKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdlbWFpbCcsJGJpbGxpbmctPmdldF9lbWFpbCgpKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdwaG9uZU51bWJlcicsJGJpbGxpbmctPmdldF9waG9uZSgpKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOyAvLyBjdXN0b21lcgoKJHdyaXRlci0+c3RhcnRFbGVtZW50KCdiaWxsVG8nKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdmaXJzdE5hbWUnLCRiaWxsaW5nLT5nZXRfZmlyc3RuYW1lKCkpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2xhc3ROYW1lJywkYmlsbGluZy0+Z2V0X2xhc3RuYW1lKCkpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2NvbXBhbnknLCRiaWxsaW5nLT5nZXRfY29tcGFueSgpKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdhZGRyZXNzJywkYmlsbGluZy0+Z2V0X2FkZHJlc3MxKCkpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2NpdHknLCRiaWxsaW5nLT5nZXRfY2l0eSgpKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdzdGF0ZScsJGJpbGxpbmctPmdldF9zdGF0ZSgpKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCd6aXAnLCRiaWxsaW5nLT5nZXRfcG9zdGFsKCkpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2NvdW50cnknLCRiaWxsaW5nLT5nZXRfY291bnRyeSgpKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOyAvLyBiaWxsVG8KCiR3cml0ZXItPnN0YXJ0RWxlbWVudCgnc2hpcFRvJyk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnZmlyc3ROYW1lJywkc2hpcHBpbmctPmdldF9maXJzdG5hbWUoKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnbGFzdE5hbWUnLCRzaGlwcGluZy0+Z2V0X2xhc3RuYW1lKCkpOwokd3JpdGVyLT53cml0ZUVsZW1lbnQoJ2NvbXBhbnknLCRzaGlwcGluZy0+Z2V0X2NvbXBhbnkoKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnYWRkcmVzcycsJHNoaXBwaW5nLT5nZXRfYWRkcmVzczEoKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnY2l0eScsJHNoaXBwaW5nLT5nZXRfY2l0eSgpKTsKJHdyaXRlci0+d3JpdGVFbGVtZW50KCdzdGF0ZScsJHNoaXBwaW5nLT5nZXRfc3RhdGUoKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnemlwJywkc2hpcHBpbmctPmdldF9wb3N0YWwoKSk7CiR3cml0ZXItPndyaXRlRWxlbWVudCgnY291bnRyeScsJHNoaXBwaW5nLT5nZXRfY291bnRyeSgpKTsKJHdyaXRlci0+ZW5kRWxlbWVudCgpOyAvLyBzaGlwVG8KCiR3cml0ZXItPmVuZEVsZW1lbnQoKTsgLy8gc3Vic2NyaXB0aW9uCgokd3JpdGVyLT5lbmRFbGVtZW50KCk7IC8vIEFSQkNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QKJGRhdGEgPSAkd3JpdGVyLT5vdXRwdXRNZW1vcnkodHJ1ZSk7CgovLyB3ZSBoYXZlIHRoZSBkYXRhIHRvIHBvc3QuLi4gc28gbGV0cyBkbyBpdC4KJHBvc3RfdXJsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FyYl91cmwnLEFVVEhORVRBUkJfUFJPRFVDVElPTl9VUkwpOwppZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXRlc3R1cmwnKSApCiAgewogICAgJHBvc3RfdXJsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfYXJiX3VybCcsQVVUSE5FVEFSQl9URVNUX1VSTCk7CiAgfQoKJGh0dHAgPSBjZ2VfaHR0cDo6Z2V0X2h0dHAoKTsKJGh0dHAtPmFkZFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC94bWwnKTsKJGh0dHAtPnNldE1ldGhvZCgnUE9TVCcpOwokaHR0cC0+c2V0UGFyYW1zKCRkYXRhKTsKJHJlc3VsdCA9ICRodHRwLT5leGVjdXRlKCRwb3N0X3VybCk7CgovLyBIZXJlIHdlIGFkanVzdCBoZWFkZXJzIGZvciBub24gY2FjaGFibGUgcGFnZXMKaGVhZGVyKCJFeHBpcmVzOiBNb24sIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpOwpoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOwpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7CmhlYWRlcigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIGZhbHNlKTsKaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CgokeG1sID0gbmV3IFNpbXBsZVhNTEVsZW1lbnQoJHJlc3VsdCxMSUJYTUxfTk9XQVJOSU5HKTsKaWYoIGlzc2V0KCR4bWwtPm1lc3NhZ2VzKSAmJiBpc3NldCgkeG1sLT5tZXNzYWdlcy0+cmVzdWx0Q29kZSkgKQogIHsKICAgIGlmKCAkeG1sLT5tZXNzYWdlcy0+cmVzdWx0Q29kZSA9PSAnRXJyb3InICkKICAgICAgewoJJGNvZGUgPSAnJzsKCWlmKCBpc3NldCgkeG1sLT5tZXNzYWdlcy0+bWVzc2FnZS0+Y29kZSkgKQoJICAkY29kZSA9ICR4bWwtPm1lc3NhZ2VzLT5tZXNzYWdlLT5jb2RlOwoJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0FSQiBQT1NUIEZhaWxlZCBmb3IgaW52b2ljZSAnLiR0aGlzLT5fZGF0YVsnaW52b2ljZSddLicgV2l0aCBjb2RlICcuJGNvZGUpOwoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9lcnJvcicsJGNvZGUsJHhtbC0+bWVzc2FnZXMtPm1lc3NhZ2UtPnRleHQpKTsKCSR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJcmV0dXJuOwogICAgICB9CiAgICBlbHNlIGlmKCAkeG1sLT5tZXNzYWdlcy0+cmVzdWx0Q29kZSA9PSAnT2snICYmIGlzc2V0KCR4bWwtPnN1YnNjcmlwdGlvbklkKSApCiAgICAgIHsKCSRzaWQgPSAoc3RyaW5nKSR4bWwtPnN1YnNjcmlwdGlvbklkOwoJJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0FSQiBQT1NUIFN1Y2NlZWRlZCBmb3IgaW52b2ljZSAnLiR0aGlzLT5fZGF0YVsnaW52b2ljZSddLicgV2l0aCBzdWJzY3JpcHRpb24gaWQgJy4kc2lkKTsKCSR0aGlzLT5TZXRUcmFuc2FjdGlvbkRhdGEoJ1N1YnNjcmlwdGlvbiBJRCcsJHNpZCk7CgkkdGhpcy0+U2V0VHJhbnNhY3Rpb25TdGF0dXMoUEFZTUVOVF9TVEFUVVNfUEVORElORyk7CgkkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKCXJldHVybjsKICAgICAgfQogIH0KCi8vIHNob3VsZCBub3QgZ2V0IGhlcmUuCiR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdVbmtub3duIEFSQiBQT1NUIEVSUk9SJyk7CmVjaG8gJHRoaXMtPkxhbmcoJ3Vua25vd25fYXJiX3Bvc3RfZXJyb3InKS4nPGJyLz4nOwpkZWJ1Z19kaXNwbGF5KCR4bWwpOwpyZXR1cm47CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.template_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmVjaG8gJHRoaXMtPkdldFNpbmdsZVRlbXBsYXRlRm9ybSgkdGhpcywkaWQsJHJldHVybmlkLCdmb3JtX3RlbXBsYXRlJywKCQkJCSAgJ3RlbXBsYXRlJywKCQkJCSAgJHRoaXMtPkxhbmcoJ3Byb21wdF9mb3JtX3RlbXBsYXRlJyksCgkJCQkgICdvcmlnX2Zvcm1fdGVtcGxhdGUudHBsJyk7CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQAArAPcAAAAGTQMKTQsZThYfTgAGUgILVAsUWggWVhIYVREoWSQoTSUsWSo0Xzc4WAAbYxUfYAAgZwEkagYpZR0nZAs2bRU3bB48dCIrZSUuaCw1ay42ZzE6ZTI9ai47cDtAXgpGbxdHaRdFcxlbeg5dezRCbDtFaytFdTNDczZIdDhHdydNdUVIaE1RbURMd0pVelRZd09kfmdne7cBFrgHG7sRHLoPIboRI7sZKbslM8EpN8IxP8AjKdBMN702RMMyQLxGVMlRVNJiTclZZNF3eM1pbf6XAf6ZAf6dC+2fW/OzS+G2d/Oua96zdP/Gb/3Gcv3JfP3HdjlThDFVggZuhQhogxtphQxyiQhwhxN0ixx0jBV5jhx9khZ8kCNuiiVpiCh0jCl5kTl7lTVzjEhahlZchl5kjVlkhUd2lFVtj2hsg3R2jGt1lnB3mnN6nHh9kW5zh3Z9oM1/gh2BlSOCliSGmSuGmSWImiuJmyqBljuFmzOLnTqLnTKDmDyOoD2SozeQoUWHnVmInnqDmGGHnUSOoUOSpEqYqFGcrFaVpnaEpXqLqmOaq3uTr3SYq3yXsGeRp1Ogr1iisWahr2imtXaot36zvo2Pl4WGmI6RmpaWmpqanpKTl4mOpoySq4mVqp2doZWZqombspOds5+gp4equJujuIuxvZy4v6Olq6Slq6qss6apt7O0u7a4v66wub+Ok9iChN+XisOIjtuyjeGzkOi1tum3uOe5uuavq9yoqunFjOXEjfrLiOPHkuPIk+fInPbNlP7Xm/rSltrHs9nEp+3No/LPpPfWqPXbuePRsf7juYy5xZm2wru9xLa5yLa5xq6zxcG/xJXBy6bGzrzByqjK0bjK1bfU28LEy8nKz8bHy8vM0cXI0s/R1cXV2tHT1tTW2dfY3Nna3djPy+fIyevYxOfb2/PWzvjr2/PizNve49TX4Mvb4N7h5N7m6dvq7s3h5eLj5eTm6ePp7evr7Onm5vTm4/Xs6Pry6evv8uPs8O3x9PT09fb6+/7+/vn39iH5BAAAAAAALAAAAABAACsAAAj+AP0JHEiwIMF9y5a9M8iwocOHEB1O4yLHzzJ4/yJq3MhRID9DW/LMkXOH0rV+HVOqHGgtS6E8hw7dmaNn0rV9DvnRy7hy5b9BYe5g4XLnEKRChfwYWuauIL9438B1AxePp0p5zrJiy5qVGzWuzp6dykJojiREc+zcgTQJ0h05eiph/Bcvnjx6eNttU2e1IxsDgFM8AGwgQwbCBhCIwMMnDyVTb9XqORQJkh0uc0ztHPjvHz9z2uKp/FeGAAEDKAwUKECAAwbTrBN0IfRFEqlFW+zovgMoUExDi7w1/NdNG72UpAmsJmEgAAEArpWvBgFmT5hQjfLk1m0nTyBAhk7+/sOHLx068gP3YQPXN2LyAgZILHizYsOKC9IPjAjTBVEjSVZYIQcddNxRBx+UtMMPMsDw8gQUUDzByzH4CKQONqJx9F4BG7yRiSqc3LdaASF0kYcXppgCxhVTWEGgHIZY4w86vDRh4403PqEMStlow4+Gpa22wSWucANKCfgVoF8YXgxCSRhZTMGiHHJQMs+MT+CopY1QIOMPPc2A86NG/QRZAAksxKCmiARQMJsXayhCCBVXUDEFINUIhE+NW+L4xJ/l+GMONvVstOEGasTgxhtkTEDAAVXcAQYhjVBSxRRTYDGJPAMd0yeOThSDjBNPoONPNtuMCVGZ0m0giCv+zbhihqMTYNFHF40MgggVVISR54znlLPEpzcKQ045wDhxzD/0YCNOewy9d8AGL6ixQgNIHrAYH12coYgXVTAyzz21COHDDejywAMSWkZozC/JAFMOFLxUGI5x7pl5QguYCLLCAhNIMFsXgTgixRkykiPEDDI07LAMNAQxbBNPGKPMMcYUc0yWTaTjzz/aiLmqmSkIoMAlz/wbQh2FZLGIJ6SIlssNDtuQgw44+6ADDkEooQQtwxBDzDCzKMEEE0oQEw8/4WxTVT8ZQZucctSCogYDWGfhxxaAULJNRrfQLMMMM8SBDjr2pH0P2ni17c489NQTTz303HUPP51B/bH+P1B3JtB7BpxA7QsDLKDCpGAww5M9Pjg8Qw227MPJGmxUbrkiglhueRtstMG55ppzko8/7VT1sZkkvMDXKhvwoQci1xAUx8My2HDLPlIY4MDuvPfuO+8QQPC7AxbM8w811Dxt5gagCETPGHIU8qtA9zQ+dsM2RB5FBNx37/334IPvQAqjp6IKexuScIlA4ojxhx6mEERODddjfws/UTgQ/v78dx/FTqlAxTfwVoYArAYFC+gENQSRBUOYpRsDiQXDHga5feSvf8IDXgR8B4HuOaADxwngAFn1KPm8QAFo0IMh/lAJUowpFrSTwQ1u0Q9RKIIROHQEDnfIiER4Dg7+QEwEHDjnuUTwUBR4EyEBpUMCRg0ADIaggyGkMYlTCAQXE+wBEXAgC3JwBhug4MQqUOIPbnCCE574hjpEwYlOaEMg0OAEOFJFEH6gAhXd4AerhOQGFoCADoWgAyWkYYc5sMMf5JiBDWyAg3EMQRbRIAg9ViGBDohGHy1IQQco0IkokKEUbOiEP9RhAgiEAhuq8oc8RoGKr6WvBKAQgR/qoAdKUGIki+jHOXAAhFz84BWwGII5CkJKCnDjH2vowCosEIU2SAAN6uhHP+ZBhgp8YA194Yc8UJGKVG3oBAqAAR4KET1p/IFAW5jGP4SAg1wQwZ1AqEVB+jEGCYhCFBn+cAY0IoAGaFggAhZQxDzW0AJPUMAEGfoYPeLxiVb+Y48F4EAMHqEFQIzgCoWwAx3sIAc+uOMWNADCELZIA1sYRBEUGEMHROEPNkSgE/3YRiJCUIEyTGAMZKBABZ7xN52IQxOtXCJ8SJCGM4ygD3vIwhXkoFE7aEES/RjCDYAwNhvIsyDUoAAFQtEPeUSBAvfchjNMQAELQEMd64iCBNrwt7qFQxOj+EZnSqMcEnjgDHK4AhiQQocB6WYL1sCHEBwGOYO8YwyJQMk6xoAGa6wBp2iIAksF0gkTrAEl+8hHPMAB1wFuiAMrcIMZRGAFLtThEIbYwx3ssIU+zAMdQ6D+Qe1Mqoxg2Na2ugCGbYWhC10IAxi95a0wbguMXehit8IoBzg+MYo8SgsFCnCDJ2AAgioIaDKQ8IMdNPUxXAABBzRMghHGW4QijPe86E2vetFrjG2AorlCjWgMLtEATyApASLIAkkMkV0xyMgf+CBHPf4hXvKu98AIPkIxsJEJ+E6NQ5e4BAtGkYYJBCAAEvgAFgj0Bz80Aicfy0c/CozgEq/3CL/AhiZSkccyrSY+LHCDGt7AgiQRIAAHAMEX9DCTZbR1xOctb3kRbF7zGkHI6EUxNTLB4viiQAAAuDAHLjCi1QBAACQ4Ax7AIJx+0API4z2CgU885iMbQcxh9sX+kuHbjzTAJgUGgE0GXqMc2JjmAPg9xD7+Mbpk+OLPvQh0oP9MaED3otC+CPQudtGLXcxiGM/IBB5xAg0ytOAEY+BABjqQgRa0wDAZ0ACoDaOBFgiCGvKgyjxWPQ93vMMd6lBHO9xB61Xr49b52Ieu9eEOeIRjjtqgRjNUsQk8jqlZqdiEJZZtCWUz2xKYePayM7HiT2jiE9bWhLa1Te1ta9va2A63tzNBbnJvYhPnGxM/xBENaLDi3fCOt7zhHY1WtIIVqkjFKPbN7377+9/9RgW/UaGKbCT0S+oABzjE8WuFg6Ph4fhGwxUujnZY/NfFyQaqNL6NbXBc4xsHucgJR67xb8QDJwEBADs=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0EKJGxhbmdbJ2FkdmFuY2VkJ10gPSAnQWR2YW5jZWQnOwokbGFuZ1snYWx0ZXJuYXRlX3Bvc3RfdXJsJ10gPSAnQWx0ZXJuYXRlIFByb2R1Y3Rpb24gU3VibWlzc2lvbiBVUkwnOwokbGFuZ1snYWx0ZXJuYXRlX3Rlc3RfdXJsJ10gPSAnQWx0ZXJuYXRlIERldmVsb3BtZW50IFN1Ym1pc3Npb24gVVJMJzsKJGxhbmdbJ2FsdGVybmF0ZV9hcmJfdXJsJ10gPSAnQWx0ZXJuYXRpdmUgUHJvZHVjdGlvbiBBUkIgVVJMJzsKCgojQgoKCiNDCiRsYW5nWydjaGVja291dF9idXR0b25fbWVzc2FnZSddID0gJ0NoZWNrb3V0JzsKJGxhbmdbJ2NoZWNrb3V0X21lc3NhZ2UnXSA9ICdDaGVja291dCB1c2luZyBBdXRob3JpemUuTkVUJzsKCiNECgoKI0UKJGxhbmdbJ2Vycm9yX2NvbmZpZ3VyYXRpb24nXSA9ICdUaGlzIG1vZHVsZSBpcyBub3QgcHJvcGVybHkgY29uZmlndXJlZCc7CiRsYW5nWydlcnJvcl9oZWxkX2Zvcl9yZXZpZXcnXSA9ICdQYXltZW50IGhhcyBiZWVuIGhlbGQgZm9yIHJldmlldyc7CiRsYW5nWydlcnJvcl9taXNzaW5nX2RhdGEnXSA9ICdTb21lIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBzdWNjZXNzZnVsbCB0cmFuc2FjdGlvbiBwcm9jZXNzaW5nIGlzIG5vdCBzZXQnOwokbGFuZ1snZXJyb3JfcGF5bWVudF9kZWNsaW5lZCddID0gJ1BheW1lbnQgaGFzIGJlZW4gZGVjbGluZWQnOwokbGFuZ1snZXJyb3JfcmVzdG9yaW5nX3N0YXRlJ10gPSAnQSBwcm9ibGVtIG9jY3VycmVkIHJlc3RvcmluZyBnYXRld2F5IHN0YXRlIGluZm9ybWF0aW9uJzsKJGxhbmdbJ2Vycm9yX3RyYW5zYWN0aW9uX2Vycm9yJ10gPSAnRXJyb3IgJXMgb2NjdXJyZWQgcHJvY2Vzc2luZyB0cmFuc2FjdGlvbjogJXMnOwokbGFuZ1snZXJyb3JfdW5rbm93biddID0gJ1RoZSBwYXltZW50IGdhdGV3YXkgcmV0dXJuZWQgaW5mb3JtYXRpb24gd2UgZG9udCB1bmRlcnN0YW5kIGF0IHRoaXMgdGltZSc7CgoKI0YKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0F1dGhvcml6ZS5uZXQgQUlNL0FSQic7CiRsYW5nWydmb3JtX3RlbXBsYXRlJ10gPSAnRm9ybSBUZW1wbGF0ZSc7CgojRwoKCiNICiRsYW5nWydoZWxwJ10gPSA8PDxFT1QKPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBhYmlsaXR5IGZvciB5b3VyIGN1c3RvbWVycyB0byBwYXkgZm9yIHRoZWlyIHB1cmNoYXNlcyB1c2luZyB0aGVpciBjcmVkaXQgY2FyZCBkaXJlY3RseSBvbiB5b3VyIHNpdGUgdXNpbmcgdGhlIEF1dGhvcml6ZS5OZXQgc2VjdXJlIGdhdGV3YXkuPC9wPgo8aDM+V2h5IHNob3VsZCBJIHVzZSBpdD88L2gzPgo8cD5UaGlzIGdhdGV3YXkgd29ya3Mgd2l0aG91dCByZWRpcmVjdGluZyB0aGUgdXNlciB0byBhIGRpZmZlcmVudCB3ZWJzaXRlLCBhbmQgdGhlbiByZWRpcmVjdGluZyB0aGVtIGJhY2suICBJdCBhbGxvd3MgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB5b3VyIGN1c3RvbWVycyB3aXRoIGEgc2luZ2xlIHVzZXIgZXhwZXJpZW5jZS48L3A+CjxoMz5TcGVjaWFsIFJlcXVpcmVtZW50czwvaDM+CjxwPlRoaXMgbW9kdWxlIHJlcXVpcmVzIHRoYXQgeW91ciB3ZWIgYXBwbGljYXRpb24gYmUgY29uZmlndXJlZCB0byBwcm9tcHQgdGhlIHVzZXIgZm9yIGNyZWRpdCBjYXJkIGluZm9ybWF0aW9uLCBUaGUgT3JkZXJzIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZCB0byBkbyB0aGlzLjwvcD4KPHA+QWxzbyB0aGlzIG1vZHVsZSB3aWxsIHJlcXVpcmUgYSB2YWxpZGF0ZWQgc2VjdXJlIGVudmlyb25tZW50LiAgIFlvdSB3aWxsIG5lZWQgdG8gcHVyY2hhc2UgYSB2YWxpZGF0ZWQgY2VydGlmaWNhdGUgZnJvbSBhbiBhcHByb3ZkZWQgcHJvdmlkZXIsIGluc3RhbGwgdGhhdCBjZXJ0aWZpY2F0ZSBpbiB5b3VyIHdlYiBob3N0IGVudmlyb25tZW50LCBhbmQgdGhlbiBjb25maWd1cmUgQ01TIE1hZGUgU2ltcGxlIHRvIHdvcmsgcHJvcGVybHkgaW4gYSBzZWN1cmUgZW52aXJvbm1lbnQuPC9wPgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxwPlF1aXRlIHNpbXBseSwgb25jZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkLCB5b3Ugc2ltcGx5IGluc3RhbGwgdGhlIG1vZHVsZS4gIFRoZW4gY29uZmlndXJlIHRoZSBtb2R1bGUgaW4gdGhlIEF1dGhvcml6ZS5ORVQgQUlNL0FSQiBjb250cm9sIHBhbmVsIGluIHRoZSBDTVMgTWFkZSBTaW1wbGUgYWRtaW4gY29uc29sZSwgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGlkLCBhbmQgdGhlIEFQSSBMb2dpbiB0aGF0IGFyZSBwcm92aWRlZCB0byB5b3UgYnkgYXV0aG9yaXplLm5ldC4gVGhlbiBuYXZpZ2F0ZSB0byB0aGUgcHJlZmVyZW5jZXMgdGFiIGluIHRoZSBDR1BheW1lbnRHYXRld2F5IEJhc2UgbW9kdWxlIGFuZCBzZWxlY3QgdGhpcyBtb2R1bGUgYXMgeW91ciBjaG9zZW4gcGF5bWVudCBnYXRld2F5LjwvcD4KPGgzPlN1YnNjcmlwdGlvbnM6PC9oMz4KPHA+VGhpcyBtb2R1bGUgaGFzIGxpbWl0ZWQgc3VwcG9ydCBmb3Igc3Vic2NyaXB0aW9ucyAoRm9yIGV4YW1wbGUgbWVtYmVyc2hpcCBzdWJzY3JpcHRpb25zLCBvciBwcm9kdWN0IHN1YnNjcmlwdGlvbnMpLiAgSXQgd2lsbCBjcmVhdGUgYSBzdWJzY3JpcHRpb24gd2l0aGluIHRoZSBBdXRob3JpemUuTkVUIE1lcmNoYW50IGNlbnRlciBhcyBhIHVzZXIgY2hlY2tzIG91dCwgYW5kIHdpbGwgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBkZWNsaW5lZCBwYXltZW50cywgZXRjLiB0byB0aGUgT3JkZXJzIG1vZHVsZSB2aWEgdGhlIEF1dGhvcml6ZS5ORVQgU2lsZW50IFBPU1QgVVJMLiAgSG93ZXZlciwgVGhlcmUgaXMgbm8gbWVhbnMgYnkgd2hpY2ggYSB2aXNpdG9yIGNhbiBjYW5jZWwgYSBzdWJzY3JpcHRpb24gZnJvbSB3aXRoaW4gdGhlIHdlYnNpdGUsIGFuZCB0aGVyZSBpcyBubyB3YXkgdGhhdCB0aGUgb3JkZXJzIG1vZHVsZSBjYW4ga25vdyBhYm91dCBzdWJzY3JpcHRpb25zIG1hbnVhbGx5IGFkZGVkLCBlZGl0ZWQsIG9yIGRlbGV0ZWQgd2l0aGluIHRoZSBBdXRob3JpemUuTkVUIG1lcmNoYW50IGNlbnRlci48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgpFT1Q7CgoKI0kKJGxhbmdbJ2luZm9fYWxsb3dfc3Vic2NyaXB0aW9ucyddID0gJ0VuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIGEgcHJvcGVybHkgY29uZmlndXJlZCA8YSBocmVmPSJodHRwOi8vYXV0aG9yaXplLm5ldCI+QXV0aG9yaXplLk5ldDwvYT4gYWNjb3VudCwgd2l0aCBBUkIgQWNjZXNzLCBhbmQgeXV1IHdvdWxkIGxpa2UgdG8gc2VsbCBlaXRoZXIgcHJvZHVjdHMgb3Igc2VydmljZXMgYXMgYSBzdWJzY3JpcHRpb24uJzsKJGxhbmdbJ2luZm9fYWx0ZXJuYXRlX3VybHMnXSA9ICdTb21lIHBheW1lbnQgZ2F0ZXdheXMgaGF2ZSAmcXVvdDtBdXRob3JpemUuTkVUJnF1b3Q7IGVtdWxhdG9ycyB0byBhbGxvdyB1c2luZyB0aGF0IHBheW1lbnQgZ2F0ZXdheSB3aXRoIGFsdGVybmF0ZSBzb2Z0d2FyZS4gICBBbG9uZyB3aXRoIG90aGVyIGRldGFpbHMsIHRoZXkgd2lsbCBwcm92aWRlIGFsdGVybmF0ZSBVUkxTIGZvciBzdWJtaXR0aW5nIHRoZSB0cmFuc2FjdGlvbnMuICAgWW91IG1heSBzcGVjaWZ5IHRob3NlIFVSTFMgaGVyZS4gICBJZiB0aGVzZSB2YWx1ZXMgYXJlIGJsYW5rLCB0aGVuIHRoZSBzeXN0ZW0gZGVmYXVsdCBVUkxTIGFyZSB1c2VkJzsKJGxhbmdbJ2luZm9fbWQ1aGFzaCddID0gJ1RoZSBrZXkgdXNlZCB0byBlbmNyeXB0IGNlcnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyYW5zYWN0aW9uLCBhbmQgdG8gdmVyaWZ5IHRoYXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gY2FtZSBmcm9tIGEgdmFsaWQgc2VydmVyLiAgIFlvdSBzaG91bGQgY29uZmlndXJlIHRoZSBpZGVudGljYWwgdmFsdWUgaW4geW91ciBhdXRob3JpemUubmV0IHNldHRpbmdzJzsKJGxhbmdbJ2luZm9fbG9naW5pZCddID0gJ1BsZWFzZSBlbnRlciB0aGUgTG9naW4gSUQgcHJvdmlkZWQgdG8geW91IGJ5IHlvdXIgYXV0aG9yaXplLm5ldCByZXNlbGxlcic7CiRsYW5nWydpbmZvX3NpbGVudF9wb3N0X3VybCddID0gJ0NvcHkgdGhpcyBVUkwgaW50byB0aGUgJnF1b3Q7U0lMRU5UIFBPU1QmcXVvdDsgVVJMIGZpZWxkIGluIHlvdXIgQXV0aG9yaXplLk5FVCBtZXJjaGFudCBjZW50ZXIuICBJZiB0aGlzIFVSTCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgc3lzdGVtIHdpbGwgbm90IHJlY2VpdmUgbm90aWZpY2F0aW9uIG9mIGNhbmNlbGxlZCBzdWJzY3JpcHRpb25zIG9yIG90aGVyIGVycm9ycy4nOwokbGFuZ1snaW5mb190ZXN0bW9kZSddID0gJ1dpdGggdGVzdCBtb2RlIGVuYWJsZWQsIG5vIHJlYWwgdHJhbnNhY3Rpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGZvciBsb2dnZWQgaW4gYWRtaW5pc3RyYXRvcnMuICBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIEFSQiAoc3Vic2NyaXB0aW9uKSB0cmFuc2FjdGlvbnMuJzsKJGxhbmdbJ2luZm9fdGlueXRyYW5zYWN0aW9ucyddID0gJ1RoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdoZW4gdGVzdGluZyBpbiBhIExJVkUgbWVyY2hhbnQgZW52aXJvbm1lbnQsIHdpdGggdGVzdCBtb2RlIGRpc2FiZWQuICBJdCB3aWxsIGZvcmNlIGFsbCB0cmFuc2FjdGlvbnMgdG8gaGF2ZSBhIHZhbHVlIG9mICQwLjAxLiAgVGhlc2UgdHJhbnNhY3Rpb25zIGNhbiBiZSBjYW5jZWxsZWQgdXNpbmcgdGhlIG1lcmNoYW50IGludGVyZmFjZS4nOwokbGFuZ1snaW5mb190cmFuc2FjdGlvbmtleSddID0gJ1RoZSB0cmFuc2FjdGlvbiBrZXkgdmFsdWUgc3VwcGxpZWQgdG8geW91IGJ5IHlvdXIgYXV0aG9yaXplLm5ldCByZXNlbGxlcic7CiRsYW5nWydpbmZvX3VzZXRlc3R1cmwnXSA9ICdVc2UgdGhlIEF1dGhvcml6ZS5uZXQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgaW5zdGVhZCBvZiB0aGUgcmVhbCBlbnZpcm9ubWVudCAocmVxdWlyZXMgaGF2aW5nIGEgZGV2ZWxvcGVyIGFjY291bnQpLiAgTm90ZSwgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGRvZXMgbm90IGFsbG93IGZvciBjcmVkaXQgb3Igb3RoZXIgZm9sbG93LW9uIHRyYW5zYWN0aW9ucy4nOwoKI0oKCgojSwoKCiNMCgoKI00KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBwYXltZW50IGdhdGV3YXkgZm9yIHRoZSBFLWNvbW1lcmNlIHN5c3RlbSB0aGF0IHVzZXMgdGhlIEFJTSBhbmQgQVJCIHByb3RvY29scyBmcm9tIEF1dGhvcml6ZS5uZXQnOwokbGFuZ1snbXNnX2RldmFjY3QnXSA9ICdBdXRob3JpemUuTkVUIEFJTS9BUkIgLSBVc2luZyBkZXZlbG9wZXIgYWNjb3VudC4uLiBubyByZWFsIHRyYW5zYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCc7CiRsYW5nWydtc2dfdGVzdG1vZGUnXSA9ICdBdXRob3JpemUuTkVUIEFJTS9BUkIgLSBUZXN0IG1vZGUgaXMgZW5hYmxlZCBmb3IgbG9nZ2VkIGluIGFkbWluaXN0cmF0b3JzJzsKCiNOCgoKI08KCgojUAokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bGUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZC4gIFBsZWFzZSB2aXNpdCB0aGUgbW9kdWxlIGFkbWluIHBhbmVsIGFuZCBlbnN1cmUgYWxsIHByZWZlcmVuY2VzIGFyZSBzZXQgcHJvcGVybHknOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoaXMgbW9kdWxlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bmluc3RhbGxlZCc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19zdWJzY3JpcHRpb25zJ10gPSAnQWxsb3cgU3Vic2NyaXB0aW9ucyc7CiRsYW5nWydwcm9tcHRfZm9ybV90ZW1wbGF0ZSddID0gJ0VkaXQgdGhlIEZvcm0gVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X21kNWhhc2gnXSA9ICdNRDUgSGFzaCc7CiRsYW5nWydwcm9tcHRfbG9naW5pZCddID0gJ0F1dGhvcml6ZS5OZXQgQVBJIExvZ2luIElEJzsKJGxhbmdbJ3Byb21wdF9zaWxlbnRfcG9zdF91cmwnXSA9ICdTaWxlbnQgUE9TVCBVUkwnOwokbGFuZ1sncHJvbXB0X3Rlc3Rtb2RlJ10gPSAnRW5hYmxlIFRlc3QgTW9kZSc7CiRsYW5nWydwcm9tcHRfdGlueXRyYW5zYWN0aW9ucyddID0gJ0VuYWJsZSBUaW55ICgkMC4wMSkgVHJhbnNhY3Rpb25zJzsKJGxhbmdbJ3Byb21wdF90cmFuc2FjdGlvbmtleSddID0gJ1RyYW5zYWN0aW9uIEtleSc7CiRsYW5nWydwcm9tcHRfdXNldGVzdHVybCddID0gJ1VzZSBEZXZlbG9wZXIgYWNjb3VudCc7CgojUQoKCiNSCiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZS4gIENvbnRpbnVpbmcgbWF5IGhhdmUgYmFkIGVmZmVjdHMgb24gYW4gb3BlcmF0aW9uYWwgd2Vic2l0ZSc7CgojUwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKCiNUCiRsYW5nWyd0ZXN0X2FyYl91cmwnXSA9ICdBbHRlcm5hdGl2ZSBEZXZlbG9wbWVudCBBUkIgVVJMJzsKCiNVCgoKI1YKCgojVwoKCiNYCgoKI1kKCgojWgoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Rlc3Rtb2RlJywxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXRlc3R1cmwnLDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbG9naW5pZCcsJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndHJhbnNhY3Rpb25rZXknLCcnKTsKCiRmbiA9IGRpcm5hbWUoX19GSUxFX18pLicvdGVtcGxhdGVzL29yaWdfZm9ybV90ZW1wbGF0ZS50cGwnOwokZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwokdGhpcy0+U2V0VGVtcGxhdGUoJ2Zvcm1fdGVtcGxhdGUnLCRkYXRhKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRTaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEF1dGhOZXRBaW0gKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEFuIGFkZG9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcHJvY2VzcwojICBQYXltZW50cyBtYWRlIHVzaW5nIHRoZSBFLWNvbW1lcmNlIHN1aXRlIHRocm91Z2ggdGhlIEF1dGhOZXQgcGF5bWVudAojICBnYXRld2F5LgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/advanced_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxwPnskbW9kLT5MYW5nKCdpbmZvX2FsdGVybmF0ZV91cmxzJyl9PC9wPgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhbHRlcm5hdGVfcG9zdF91cmwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1wb3N0X3VybCIgdmFsdWU9InskcG9zdF91cmx9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhbHRlcm5hdGVfdGVzdF91cmwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH10ZXN0X3Bvc3RfdXJsIiB2YWx1ZT0ieyR0ZXN0X3Bvc3RfdXJsfSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnYWx0ZXJuYXRlX2FyYl91cmwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1hcmJfdXJsIiB2YWx1ZT0ieyRhcmJfdXJsfSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGVzdF9hcmJfdXJsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dGVzdF9hcmJfdXJsIiB2YWx1ZT0ieyR0ZXN0X2FyYl91cmx9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_form_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9ybSB0ZW1wbGF0ZSAqfQp7JGZvcm1zdGFydH0KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9InskaW1hZ2VfdXJsfSIgYWx0PSJ7JGdhdGV3YXktPkxhbmcoJ2NoZWNrb3V0X21lc3NhZ2UnKX0geyRpbXNnZV9hbHR9IiB0aXRsZT0ieyRnYXRld2F5LT5MYW5nKCdjaGVja291dF9tZXNzYWdlJyl9IHskaW1hZ2VfYWx0fSIvPgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/prefs_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3NpbGVudF9wb3N0X3VybCcpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij57JHNpbGVudF9wb3N0X3VybH08L3NwYW4+CiAgICA8YnIvPgogICAgeyRtb2QtPkxhbmcoJ2luZm9fc2lsZW50X3Bvc3RfdXJsJyl9CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3Rlc3Rtb2RlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH10ZXN0bW9kZSIgdmFsdWU9IjEiIHtpZiAkdGVzdG1vZGUgPT0gMX1jaGVja2VkPSJjaGVja2VkInsvaWZ9Lz48YnIvPnskbW9kLT5MYW5nKCdpbmZvX3Rlc3Rtb2RlJyl9CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3Rpbnl0cmFuc2FjdGlvbnMnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXRpbnl0cmFuc2FjdGlvbnMiIHZhbHVlPSIxIiB7aWYgJHRpbnl0cmFuc2FjdGlvbnMgPT0gMX1jaGVja2VkPSJjaGVja2VkInsvaWZ9Lz48YnIvPnskbW9kLT5MYW5nKCdpbmZvX3Rpbnl0cmFuc2FjdGlvbnMnKX0KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdXNldGVzdHVybCcpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9dXNldGVzdHVybCIgdmFsdWU9IjEiIHtpZiAkdXNldGVzdHVybCA9PSAxfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0vPjxici8+eyRtb2QtPkxhbmcoJ2luZm9fdXNldGVzdHVybCcpfQogIDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9sb2dpbmlkJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWxvZ2luaWQiIHZhbHVlPSJ7JGxvZ2luaWR9IiBzaXplPSI1MCIvPgogICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19sb2dpbmlkJyl9CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3RyYW5zYWN0aW9ua2V5Jyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXRyYW5zYWN0aW9ua2V5IiB2YWx1ZT0ieyR0cmFuc2FjdGlvbmtleX0iIHNpemU9IjUwIi8+CiAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3RyYW5zYWN0aW9ua2V5Jyl9CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FsbG93X3N1YnNjcmlwdGlvbnMnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+CiAgICB7Y2dlX3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdhbGxvd19zdWJzY3JpcHRpb25zJyBzZWxlY3RlZD0kYWxsb3dfc3Vic2NyaXB0aW9uc30KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygnaW5mb19hbGxvd19zdWJzY3JpcHRpb25zJyl9CiAgPC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICA8L3A+CjwvZGl2PgoKeyRmb3JtZW5kfQ==]]></data>
	</file>
</module>
