<?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>Sagepay2</name>
	<version>0.9.2</version>
  <mincmsversion>1.11.8</mincmsversion>
	<help><![CDATA[CjxoMz5XaGF0IGRvZXMgaXQgZG8/PC9oMz4KICA8cD5UaGlzIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBPcmRlcnMgbW9kdWxlIHRvIGNvbXBsZXRlIHB1cmNoYXNlcyB1c2luZyBTYWdlcGF5LiAgQWZ0ZXIgY2hlY2tvdXQgaXMgY29tcGxldGVkIChzdWNjZXNzZnVsbHkgb3IgdW5zdWNjZXNzZnVsbHkpIG9uIHRoZSBTYWdlUGF5IHNpdGUsIHRoZSB1c2VyIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB0aGUgT3JkZXJzIG1vZHVsZSB0byBzaG93IHRoZSBjaGVja291dCByZWNlaXB0IHBhZ2UuPC9wPgogIDxwPlNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+Cgo8aDM+SG93IERvIEkgdXNlIEl0PC9oMz4KPHA+Rmlyc3QgeW91IGNyZWF0ZSBhIFNhZ2VwYWwgYWNjb3VudCwgYW5kIG9idGFpbiB0aGUgU2FnZXBheSBWZW5kb3IgTmFtZSwgVGVzdCBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZCBhbmQgKHdoZW4geW91IGFyZSByZWFkeSB0byBnbyBsaXZlKSB0aGUgUHJvZHVjdGlvbiBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZC48L3A+CjxwPkxlYXZlICdFbmFibGUgUHJvZHVjdGlvbiBNb2RlJyBzZXQgdG8gJ05vJyB1bnRpbCB5b3UgYXJlIHJlYWR5IHRvIGdvIExpdmUuIDwvcD4KPHA+WW91IGNhbiBjaG9vc2UgdG8gaGF2ZSBTYWdlcGF5IHRvIHNlbmQgZW1haWxzIHRvIHdlYnNpdGUgb3duZXIgYW5kIHRoZSBjdXN0b21lciBhZnRlciBjaGVja291dCBpcyBjb21wbGV0ZWQsIHVzaW5nIHRoZSAnU2FnZXBheSBTZW5kIENvbmZpcm1hdGlvbiBFbWFpbHMnIG9wdGlvbi4gSWYgc2VsZWN0ZWQgdGhlIGN1c3RvbWVyIGlzIG9ubHkgc2VudCBhbiBlbWFpbCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIGNoZWNrb3V0LiBJZiBzZWxlY3RlZCB0aGUgVmVuZG9yIGlzIHNlbnQgZWl0aGVyIGEgc3VjY2VzcyBvciBmYWlsdXJlIGVtYWlsLjwvcD4KPHA+SW4gJ0NhbGd1eXMgRWNvbW1lcmNlIEJhc2UgPiBQYXltZW50IFNldHRpbmdzJyBzZWxlY3QgU2FnZXBheTIgYXMgdGhlIFBheW1lbnQgR2F0ZXdheSBNb2R1bGUuPC9wPgoKPGgzPkltcGxlbWVudGF0aW9uIE5vdGVzPC9oMz4KPHA+U2FnZXBheTIgdXNlIHRoZSBTYWdlcGF5IHYzLjAgQVBJLjwvcD4KPHVsPgogICA8bGk+VGF4ZXM6IGFyZSBzaG93biBhcyBsaW5lIGl0ZW1zLjwvbGk+CiAgIDxsaT5TaGlwcGluZzogYWxsIHNoaXBwaW5nIGNvc3RzIGFyZSBlbnRlcmVkIGFzIGxpbmUgaXRlbXMuPC9saT4KICAgPGxpPkRpc2NvdW50czogYXJlIGluY2x1ZGVkIGluIHRoZSBkaXNwbGF5ZWQgbGluZSBpdGVtIGFtb3VudDwvbGk+CjwvdWw+CjxwPkJhc2VkIG9uIENhbGd1eXMgUGF5cGFsR2F0ZXdheSB2IDIuMy4xMSAtIEFwcmlsLCAyMDEzIC0gY2FsZ3V5MTAwMCBhbmQgdGhlIG9yaWdpbmFsIFNhZ2VQYXlHYXRld2F5IG1vZHVsZSB2MS4wPC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmciPmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxNSwgQ2hyaXMgVGF5bG9yLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCihhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD5Ib3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCmluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD48aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjM4LjEwPC9saT48bGk+Q0dQYXltZW50R2F0ZXdheUJhc2UgPSZndDsgMS4wLjU8L2xpPjwvdWw+PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDaHJpcyBUYXlsb3IgJmx0O2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuOS4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+Cjx1bD4KICAgPGxpPlZlcnNpb24gMC45LjIgLSAyMkp1bDE1IC0gQ2hyaXMgVGF5bG9yCiAgICAgIDx1bD4KICAgICAgICAgPGxpPmFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWcgY29kZSAoZGVmYXVsdCB0byBPRkYpPC9saT4KICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPlZlcnNpb24gMC45LjEgLSAxNUp1bDE1IC0gQ2hyaXMgVGF5bG9yCiAgICAgIDx1bD4KICAgICAgICAgPGxpPlNhZ2VwYXkgcmVzcG9uc2UgJ1JFSkVDVEVEJyBub3cgc2V0cyBvcmRlciBzdGF0dXMgdG8gY2FuY2VsbGVkLCBvdGhlcndpc2UgT3JkZXJzIHNldHMgc3RhdHVzIHRvIFNVQ0NFU1MgYW5kIHBheW1lbnQgdG8gRGVjbGluZWQ8L2xpPgogICAgICAgICA8bGk+YnVnIGZpeCB0byBjb3JyZWN0bHkgYWNjZXB0IFNhZ2VwYXkgcmVzcG9uc2UgYW1vdW50IDEwMDArPC9saT4KICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPlZlcnNpb24gMC45IC0gMTRKdWwxNSAtIENocmlzIFRheWxvcgogICAgICA8dWw+CiAgICAgICAgIDxsaT4wLjkgLSBpbml0aWFsIHJlbGVhc2U8L2xpPgogICAgICAgICA8bGk+QmFzZWQgb24gQ2FsZ3V5cyBQYXlwYWxHYXRld2F5IHYgMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwIGFuZCB0aGUgb3JpZ2luYWwgU2FnZVBheUdhdGV3YXkgbW9kdWxlIHYxLjA8L2xpPgogICAgICAgICA8bGk+Tk9URTogUEhQIDUuMy54IElTIFJFUVVJUkVEPC9saT4KICAgICAgPC91bD4KICAgIDwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[Part of the E-commerce collection, provide the ability to perform checkounts via SagePay]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.38.10</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGPaymentGatewayBase</requiredname>
	  <requiredversion>1.0.5</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3IKIwojIGJhc2VkIG9uOiBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuCiMKIyBJcyBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSBTYWdlcGF5R2F0ZXdheSBtb2R1bGUgdGhhdCB1c2VzIGFuIG9ic29sZXRlCiMgU2FncGF5IEFQSSAtIGRpc2NvbnRpbnVlZCBKdWx5IDIwMTUKIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3IKIwojIGJhc2VkIG9uOiBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuCiMKIyBOb3RlOiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBzdGFydGVkIGJ5IFRlZCBLdWxwLCBidXQgcmV3cml0dGVuCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgovLyBkbyBmdW5jdGlvbmFsaXR5IHRlc3RzCmlmKCAhZnVuY3Rpb25fZXhpc3RzKCdtY3J5cHRfbW9kdWxlX29wZW4nKSApIHsKICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9ub19tY3J5cHQnKSk7CiAgcmV0dXJuOwp9CgovLyBzdGFydCB0YWJzLgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSB7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmcycsJHRoaXMtPkxhbmcoJ3ByZWZlcmVuY2VzJykpOwp9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKSB7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCd0ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ2Zvcm1fdGVtcGxhdGUnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogIC8vIGhhbmRsZSB0aGUgZm9ybQogIGlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpIHsKICAgIC8vICRwYWdlX3N0eWxlID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3BhZ2Vfc3R5bGUnKSk7CiAgICAvLyAkdG1wID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3BhZ2Vfc3R5bGVfb3RoZXInKSk7CiAgICAvLyBpZiggJHRtcCApICRwYWdlX3N0eWxlID0gJHRtcDsKICAgIC8vICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlX3N0eWxlJywkcGFnZV9zdHlsZSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZG1vZGUnLChpbnQpJHBhcmFtc1sncHJvZG1vZGUnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZF9hY2N0Jyx0cmltKCRwYXJhbXNbJ3Byb2RfYWNjdCddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicsdHJpbSgkcGFyYW1zWydwcm9kX3Rva2VuJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0ZXN0X2FjY3QnLHRyaW0oJHBhcmFtc1sndGVzdF9hY2N0J10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0ZXN0X3Rva2VuJyx0cmltKCRwYXJhbXNbJ3Rlc3RfdG9rZW4nXSkpOwoKICAgIC8vICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19zdWJzY3JpcHRpb25zJywoaW50KSRwYXJhbXNbJ2FsbG93X3N1YnNjcmlwdGlvbnMnXSk7CiAgICAvLyAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicsKGludCkkcGFyYW1zWydlbmFibGVfaXBuJ10pOwoKICAgIC8vICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2ZW5kb3JfbmFtZScsdHJpbSgkcGFyYW1zWyd2ZW5kb3JfbmFtZSddKSk7CiAgICAvLyAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3J5cHRfdG9rZW4nLHRyaW0oJHBhcmFtc1snY3J5cHRfdG9rZW4nXSkpOwoKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2ZW5kb3JfZW1haWwnLHRyaW0oJHBhcmFtc1sndmVuZG9yX2VtYWlsJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzZW5kX2VtYWlsX3NlbGVjdGVkJyx0cmltKCRwYXJhbXNbJ3NlbmRfZW1haWxfc2VsZWN0ZWQnXSkpOwogIH0KCiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZzJyk7CiAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCAkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgogICRzbWFydHktPmFzc2lnbigncHJvZG1vZGUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kbW9kZScsMCkpOwogICRzbWFydHktPmFzc2lnbigncHJvZF9hY2N0JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZF9hY2N0JykpOwogICRzbWFydHktPmFzc2lnbigndGVzdF9hY2N0JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdF9hY2N0JykpOwogICRzbWFydHktPmFzc2lnbigncHJvZF90b2tlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2RfdG9rZW4nKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCd0ZXN0X3Rva2VuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdF90b2tlbicpKTsKICAvLyAkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2Vfc3R5bGUnLCdwYXlwYWwnKTsKICAvLyBpZiggISR0bXAgKSAkdG1wID0gJ3BheXBhbCc7CiAgLy8gJHNtYXJ0eS0+YXNzaWduKCdwYWdlX3N0eWxlJywkdG1wKTsKCiAgLy8gJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGxvd19zdWJzY3JpcHRpb25zJywKCQkvLyAgICR0aGlzLT5DcmVhdGVJbnB1dFllc05vRHJvcGRvd24oJGlkLCdhbGxvd19zdWJzY3JpcHRpb25zJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X3N1YnNjcmlwdGlvbnMnKSkpOwoKICAvLyAkc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9pcG4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlbmFibGVfaXBuJywwKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsKCiAgJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKICAkdGhlX3JldHVybmlkID0gJGNvbnRlbnRvcHMtPkdldERlZmF1bHRDb250ZW50KCk7CiAgJHByZXR0eV91cmwgPSAicGF5cGFsL2lwbi8kdGhlX3JldHVybmlkIjsKICAkaXBuX3VybCA9ICR0aGlzLT5DcmVhdGVVUkwoJGlkLCdpcG4nLCR0aGVfcmV0dXJuaWQsYXJyYXkoKSxmYWxzZSwkcHJldHR5X3VybCk7CiAgJHNtYXJ0eS0+YXNzaWduKCdpcG5fdXJsJywkaXBuX3VybCk7CgoKICAgLy8gJHNtYXJ0eS0+YXNzaWduKCd2ZW5kb3JfbmFtZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlbmRvcl9uYW1lJykpOwogICAvLyAkc21hcnR5LT5hc3NpZ24oJ2NyeXB0X3Rva2VuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3J5cHRfdG9rZW4nKSk7CgogICAkc21hcnR5LT5hc3NpZ24oJ3ZlbmRvcl9lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlbmRvcl9lbWFpbCcpKTsKICAgJHNlbmRFbWFpbE9wdGlvbnMgPSBhcnJheSgKICAgICAgJzAnPT4kdGhpcy0+TGFuZygnc2VuZF9lbWFpbF9ub25lJyksIAogICAgICAnMSc9PiR0aGlzLT5MYW5nKCdzZW5kX2VtYWlsX2JvdGgnKSwgCiAgICAgICcyJz0+JHRoaXMtPkxhbmcoJ3NlbmRfZW1haWxfdmVuZG9yJykgCiAgICk7CiAgICRzbWFydHktPmFzc2lnbignc2VuZF9lbWFpbF9vcHRpb25zJywgJHNlbmRFbWFpbE9wdGlvbnMpOwogICAkc21hcnR5LT5hc3NpZ24oJ3NlbmRfZW1haWxfc2VsZWN0ZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VuZF9lbWFpbF9zZWxlY3RlZCcpKTsKCgogIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJlZnMudHBsJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKSB7CiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3RlbXBsYXRlJyk7CiAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLnRlbXBsYXRlX3RhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.return.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3INCiMNCiMgYmFzZWQgb246IE1vZHVsZTogUGF5cGFsR2F0ZXdheSAoYykgMjAwOSBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQ0KIw0KIyBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MNCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuDQojDQojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4NCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQppZiAoICFpc3NldCgkZ0NtcykgKSBleGl0Ow0KDQppZiAoIWlzc2V0KCRwYXJhbXNbJ215Y3VzdG9tJ10pKSB7DQogICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOw0KICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOw0KDQp9IGVsc2UgaWYgKCAhaXNzZXQoJHBhcmFtc1snb3JkZXJfaWQnXSkgKSB7DQogICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7DQogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybicsJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7DQp9DQoNCi8vIGRlY29kZSBTYWdlcGF5IHJlc3BvbnNlDQokY3J5cHRLZXkgPSAnJzsNCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZG1vZGUnKSApIHsNCiAgICRjcnlwdEtleSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kX3Rva2VuJyk7DQp9IGVsc2Ugew0KICAgJGNyeXB0S2V5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfdG9rZW4nKTsNCn0NCiRjcnlwdCA9ICRfUkVRVUVTVFsnY3J5cHQnXTsNCiRkZWNyeXB0ID0gJHRoaXMtPmRlY3J5cHRBZXMoJGNyeXB0LCAkY3J5cHRLZXkpOw0KJHJlc3BvbnNlID0gJHRoaXMtPnF1ZXJ5U3RyaW5nVG9BcnJheSgkZGVjcnlwdCk7DQoNCmlmICghJGRlY3J5cHQgfHwgZW1wdHkoJHJlc3BvbnNlKSkgew0KICAgJHRoaXMtPlNldEVycm9yKCAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9kYXRhJykgKTsNCiAgICR0aGlzLT5BdWRpdCgnJywgJHRoaXMtPkdldE5hbWUoKSwgJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfZGF0YScpKTsNCn0NCg0KDQokb3JkZXJfaWQgPSAtMTsNCmlmIChpc3NldCgkcmVzcG9uc2VbJ1ZlbmRvclR4Q29kZSddKSkgew0KICAgbGlzdCgkb3JkZXJfaWQsICRibGFoKSA9IGV4cGxvZGUoJy0tLScsICRyZXNwb25zZVsnVmVuZG9yVHhDb2RlJ10pOw0KfQ0KDQokdGhpcy0+UmVzdG9yZVN0YXRlKCRwYXJhbXNbJ215Y3VzdG9tJ10pOw0KDQppZiAoISR0aGlzLT5DaGVja0luZm8oKSkgew0KICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN0b3JpbmdfdHJhbnNhY3Rpb25fc3RhdGUnKSk7DQoNCn0gZWxzZSB7DQogICBpZiAoJHJlc3BvbnNlWydTdGF0dXMnXSA9PSAnT0snICkgew0KICAgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzJywgJG9yZGVyX2lkLCAkcmVzcG9uc2VbJ1ZQU1R4SWQnXSkpOw0KICAgICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uSWQoJHJlc3BvbnNlWydWUFNUeElkJ10pOw0KICAgICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uQW1vdW50KCBwcmVnX3JlcGxhY2UoJy9bXjAtOS5dLycsICcnLCAkcmVzcG9uc2VbJ0Ftb3VudCddKSApOw0KICAgICAgJHRoaXMtPlNldFN0YXR1cyhQQVlNRU5UX1NUQVRVU19BUFBST1ZFRCk7DQogICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydhbW91bnQnXSkgJiYgJHJlc3BvbnNlWydBbW91bnQnXSE9JHRoaXMtPl9kYXRhWydhbW91bnQnXSApIHsNCiAgICAgICAgIC8vIGFtb3VudCBpcyBpbnZhbGlkLCB0aGF0J3Mgd29ua3kNCiAgICAgICAgICR0aGlzLT5BdWRpdCggJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybiAnLCR0aGlzLT5sYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pbnZhbGlkX2Ftb3VudCcsICRvcmRlcl9pZCwgJHJlc3BvbnNlWydTdGF0dXMnXSkgKTsNCiAgICAgIH0NCiAgICAgIC8vIENUIGRlYnVnIC0gZXh0cmEgZGVidWcgaW5mbyBsb2dnZWQgaWYgcmVxdWlyZWQNCiAgICAgICRleHRyYUFkbWluRGVidWcgPSBGQUxTRTsNCiAgICAgIGlmICggaXNzZXQoJGV4dHJhQWRtaW5EZWJ1ZykgJiYgJGV4dHJhQWRtaW5EZWJ1Zz09PVRSVUUpIHsNCiAgICAgICAgICR0aGlzLT5BdWRpdCggJHRoaXMtPl9kYXRhWydvcmRlcmlkJ10sICR0aGlzLT5HZXROYW1lKCksICJyZXR1cm4ucGhwIDE6ICIuZGF0ZSgiZE15IEg6aTpzIikuIiwgc2Vzc2lvbl9pZDoiLnNlc3Npb25faWQoKS4iLCBJUCBBZGRyZXNzOiIuY2dlX3V0aWxzOjpnZXRfcmVhbF9pcCgpICk7DQogICAgICB9DQoNCiAgIH0gZWxzZSBpZiAoJHJlc3BvbnNlWydTdGF0dXMnXSA9PSAnQUJPUlQnIHx8ICRyZXNwb25zZVsnU3RhdHVzJ10gPT0gJ1JFSkVDVEVEJykgew0KICAgICAgJHRoaXMtPkF1ZGl0KCAnJywkdGhpcy0+R2V0TmFtZSgpLCR0aGlzLT5MYW5nKCdtc2dfdHJhbnNhY3Rpb25fY2FuY2VsbGVkJywgJG9yZGVyX2lkLCAkcmVzcG9uc2VbJ1N0YXR1cyddKSApOw0KICAgICAgJHRoaXMtPlNldENhbmNlbGxlZCgpOw0KDQogICB9IGVsc2UgaWYgKCRyZXNwb25zZVsnU3RhdHVzJ10gPT0gJ05PVEFVVEhFRCcpIHsNCiAgICAgICR0aGlzLT5BdWRpdCggJycsJHRoaXMtPkdldE5hbWUoKSwkdGhpcy0+TGFuZygnbXNnX3RyYW5zYWN0aW9uX2RlY2xpbmVkJywgJG9yZGVyX2lkLCAkcmVzcG9uc2VbJ1N0YXR1cyddKSApOw0KICAgICAgJHRoaXMtPlNldERlY2xpbmVkKCk7DQoNCiAgIH0gZWxzZSB7DQogICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX2ZhaWxlZCcpLicgLSBzdGF0dXM6ICcuJHJlc3BvbnNlWydTdGF0dXMnXSk7DQogICAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwkdGhpcy0+TGFuZygnZXJyb3JfdHJhbnNhY3Rpb25fZmFpbGVkJyksICRvcmRlcl9pZCwgJHJlc3BvbnNlWydTdGF0dXMnXSk7DQoNCiAgIH0NCn0NCg0KJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7DQoNCi8vIEVPRg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ARCHIVE/action.ipn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIwojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MKIyAgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBBdXRoTmV0IHBheW1lbnQKIyAgZ2F0ZXdheS4KIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicsMCkgKSBleGl0OwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpLicvQ0dFeHRlbnNpb25zL2xpYi9odHRwL2NsYXNzLmh0dHAucGhwJyk7CgovLyBwcmVwYXJlIG91ciBwb3N0YmFjawokcG9zdGRhdGEgPSAkX1BPU1Q7CiRwb3N0ZGF0YVsnY21kJ10gPSAnX25vdGlmeS12YWxpZGF0ZSc7CiR1cmwgPSAnJzsKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kbW9kZScsMCkgKSB7CiAgJHVybCA9IFNhZ2VwYXkyOjpQUk9EX1VSTDsKfQplbHNlIHsKICAkdXJsID0gU2FnZXBheTI6OlRFU1RfVVJMOwp9CgokaHR0cCA9IG5ldyBIdHRwOwokaHR0cC0+c2V0TWV0aG9kKCdQT1NUJyk7CiRodHRwLT5zZXRQYXJhbXMoJHBvc3RkYXRhKTsKJHRtcCA9ICRodHRwLT5leGVjdXRlKCR1cmwpOwokZXJyb3IgPSAkaHR0cC0+Z2V0RXJyb3IoKTsKCmlmKCBlbXB0eSgkdG1wKSApIHsKICAvLyBQT1NUIGZhaWxlZC4uLiBkbyBhbiBBdWRpdCBhbmQgZXhpdC4KICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOmlwbicsJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl92ZXJpZmljYXRpb25fZmFpbGVkJykuJyAtLSAnLiRlcnJvcik7CiAgZXhpdDsKIH0KCi8vIHdvb3QsIHRoZSB0cmFuc2FjdGlvbiBpcyB2ZXJpZmllZC4uLi4gd2Ugc2hvdWxkIGhhdmUgYW4gb3JkZXIgaWQsIGFuZCBhIHRyYW5zYWN0aW9uIGlkCi8vIGFuZCBhIGJ1bmNoIG9mIG90aGVyIHN0dWZmIHRoYXQgd2UgY2FuIGRlYWwgd2l0aC4KaWYoICFpc3NldCgkX1BPU1RbJ2N1c3RvbSddKSB8fCAkX1BPU1RbJ2N1c3RvbSddID09ICcnICkgewogICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6aXBuJywkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfZGF0YScpKTsKICBleGl0Owp9CmVsc2UgaWYoICFpc3NldCgkX1BPU1RbJ3R4bl90eXBlJ10pICkgewogIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGV2ZXIgaGFwcGVuLgogICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6aXBuJywkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfZGF0YScpKTsKICBleGl0Owp9Cgokb3JkZXJfaWQgPSAoaW50KSRfUE9TVFsnY3VzdG9tJ107CiR0eG5faWQgPSAnJzsKaWYoIGlzc2V0KCRfUE9TVFsndHhuX2lkJ10pICkgewogICR0eG5faWQgPSB0cmltKCRfUE9TVFsndHhuX2lkJ10pOwp9CgokYW1vdW50ID0gJyc7CmlmKCBpc3NldCgkX1BPU1RbJ21jX2dyb3NzJ10pICkKICAkYW1vdW50ID0gJF9QT1NUWydtY19ncm9zcyddOwogZWxzZSBpZiggaXNzZXQoJF9QT1NUWydwYXltZW50X2dyb3NzJ10pICkKICAgJGFtb3VudCA9ICRfUE9TVFsncGF5bWVudF9ncm9zcyddOwogZWxzZSBpZiggaXNzZXQoJF9QT1NUWydwYXltZW50X2Ftb3VudCddKSApCiAgICRhbW91bnQgPSAkX1BPU1RbJ3BheW1lbnRfYW1vdW50J107CnN3aXRjaCggJF9QT1NUWyd0eG5fdHlwZSddICkgewogY2FzZSAnY2FydCc6CiAgIHN3aXRjaCggc3RydG9sb3dlcigkX1BPU1RbJ3BheW1lbnRfc3RhdHVzJ10pICkgewogICBjYXNlICdwcm9jZXNzZWQnOgogICBjYXNlICdjb21wbGV0ZWQnOgogICAgIC8vIGFsbCBnb29kLCB3ZSBjYW4gc2V0IHRoaXMgb3JkZXIgaW4gcHJvY2Vzcy4KICAgICAkdGhpcy0+UHJvY2Vzc0FzeW5jVHJhbnNhY3Rpb24oJG9yZGVyX2lkLCR0eG5faWQsUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQsJGFtb3VudCk7CiAgICAgYnJlYWs7CgogICBjYXNlICdmYWlsZWQnOgogICBjYXNlICdkZW5pZWQnOgogICAgIC8vIG5vdCBnb29kLi4uIG5vIGZ1bmRzLgogICAgICR0aGlzLT5Qcm9jZXNzQXN5bmNUcmFuc2FjdGlvbigkb3JkZXJfaWQsJHR4bl9pZCxQQVlNRU5UX1NUQVRVU19ERUNMSU5FRCwwKTsKICAgICBicmVhazsKCiAgIGNhc2UgJ2V4cGlyZWQnOgogICBjYXNlICdyZXZlcnNlZCc6CiAgIGNhc2UgJ3BlbmRpbmcnOgogICBjYXNlICd2b2lkZWQnOgogICAgIC8vIHVoLW9oIHNvbWV0aGluZyBoYXBwZW5lZC4KICAgICAkdGhpcy0+UHJvY2Vzc0FzeW5jVHJhbnNhY3Rpb24oJG9yZGVyX2lkLCR0eG5faWQsUEFZTUVOVF9TVEFUVVNfT1RIRVIsMCk7CiAgICAgYnJlYWs7CgogICB9CiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9zaWdudXAnOgogICAvLyBzaWxlbnRseSBpZ25vcmUuCiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9wYXltZW50JzoKICAgJHRyYW5zYWN0aW9uID0gbmV3IGNncGdiX2FzeW5jX3RyYW5zYWN0aW9uKCRvcmRlcl9pZCwkYW1vdW50KTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfc3RhdHVzKFBBWU1FTlRfU1RBVFVTX0FQUFJPVkVEKTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfaWQoJHR4bl9pZCk7CiAgIGlmKCBpc3NldCgkX1BPU1RbJ3N1YnNjcl9pZCddKSApIHsKICAgICAkdHJhbnNhY3Rpb24tPnNldF9vdGhlcl92YWwoJ1N1YnNjcmlwdGlvbiBJRCcsJF9QT1NUWydzdWJzY3JfaWQnXSk7CiAgIH0KICAgJHRoaXMtPnNlbmRfdHJhbnNhY3Rpb25fbm90aWZpY2F0aW9uKCR0cmFuc2FjdGlvbik7CiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9jYW5jZWwnOgogICAkdHJhbnNhY3Rpb24gPSBuZXcgY2dwZ2JfYXN5bmNfdHJhbnNhY3Rpb24oJG9yZGVyX2lkLCRfUE9TVFsnYW1vdW50MyddKTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfc3RhdHVzKFBBWU1FTlRfU1RBVFVTX0NBTkNFTExFRCk7CiAgICR0cmFuc2FjdGlvbi0+c2V0X2lkKCR0eG5faWQpOwogICBpZiggaXNzZXQoJF9QT1NUWydzdWJzY3JfaWQnXSkgKSB7CiAgICAgJHRyYW5zYWN0aW9uLT5zZXRfb3RoZXJfdmFsKCRfUE9TVFsnc3Vic2NyX2lkJ10pOwogICB9CiAgICR0aGlzLT5zZW5kX3RyYW5zYWN0aW9uX25vdGlmaWNhdGlvbigkdHJhbnNhY3Rpb24pOwogICBicmVhazsKCiBkZWZhdWx0OgogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOmlwbicsJ1VuaGFuZGxlZCB0cmFuc2FjdGlvbiB0eXBlOiAnLiRfUE9TVFsndHhuX3R5cGUnXSk7CiAgIGV4aXQ7CiB9CgovLyBub3RoaW5nIG1vcmUgdG8gZG8KJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzppcG4nLCdJUE4gVHJhbnNhY3Rpb24gJy4kX1BPU1RbJ3R4bl9pZCddLicgc3VjY2Vzc2Z1bC4gU3RhdHVzOiAnLiRfUE9TVFsncGF5bWVudF9zdGF0dXMnXS4nLCBhbW91bnQ6ICcuJGFtb3VudCk7CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/action.return_cancel.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgIFBheW1lbnRzIG1hZGUgdXNpbmcgdGhlIEUtY29tbWVyY2Ugc3VpdGUgdGhyb3VnaCB0aGUgQXV0aE5ldCBwYXltZW50CiMgIGdhdGV3YXkuCiMKIyBOb3RlOiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBzdGFydGVkIGJ5IFRlZCBLdWxwLCBidXQgcmV3cml0dGVuCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKaWYoICFpc3NldCgkcGFyYW1zWydteWN1c3RvbSddKSApCiAgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllcicpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllcicpKTsKICB9CmVsc2UgaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApCiAgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwogICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7CiAgfQoKJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPmxhbmcoJ21zZ190cmFuc2FjdGlvbl9jYW5jZWxsZWQnKSk7CiR0aGlzLT5TZXRDYW5jZWxsZWQoKTsKJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/action.return_success.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIwojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MKIyAgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBBdXRoTmV0IHBheW1lbnQKIyAgZ2F0ZXdheS4KIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmKCAhaXNzZXQoJHBhcmFtc1snbXljdXN0b20nXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7CiAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7CiAgfQplbHNlIGlmKCAhaXNzZXQoJHBhcmFtc1snb3JkZXJfaWQnXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfb3JkZXJpZCcpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwogIH0KCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicsMCkgKQogIHsKICAgIC8vIG5vdGhpbmcgbW9yZSB0byBkby4uLiBJUE4gd2lsbCBjb250YWluIHRoZSByZXN0IG9mIHRoZSBpbmZvLgogICAgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKICAgICR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfTk9ORSk7CiAgICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKICB9CmVsc2UgaWYoICFpc3NldCgkX1JFUVVFU1RbJ3R4J10pICYmICFpc3NldCgkX1JFUVVFU1RbJ3R4bl9pZCddKSApCiAgewogICAgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faWRfbWlzc2luZycpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pZF9taXNzaW5nJykpOwogIH0KZWxzZQogIHsKICAgICR0aGlzLT5SZXN0b3JlU3RhdGUoJHBhcmFtc1snbXljdXN0b20nXSk7CiAgICBpZiggISR0aGlzLT5DaGVja0luZm8oKSApCiAgICAgIHsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVzdG9yaW5nX3RyYW5zYWN0aW9uX3N0YXRlJykpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCS8vIHdlIGdvdCBhIHZhbGlkIHJlZGlyZWN0IGZyb20gcGF5cGFsLgoJJHVybCA9ICcnOwoJJHRva2VuID0gJyc7CglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2Rtb2RlJywwKSApCgkgIHsKCSAgICAkdXJsID0gU2FnZXBheTI6OlBST0RfVVJMOwoJICAgICR0b2tlbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kX3Rva2VuJyk7CgkgIH0KCWVsc2UKCSAgewoJICAgICR1cmwgPSBTYWdlcGF5Mjo6VEVTVF9VUkw7CgkgICAgJHRva2VuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfdG9rZW4nKTsKCSAgfQoJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCSR0bXAgPSAnJzsKCSRhbXQgPSAnJzsKCSR0eG5faWQgPSAnJzsKCSRjdXJyZW5jeSA9ICcnOwoJJHN0YXQgPSAkX1JFUVVFU1RbJ3N0J107CgkkdHhuX2lkID0gJyc7CglpZiggaXNzZXQoJF9SRVFVRVNUWyd0eCddKSApCgkgIHsKCSAgICAkdHhuX2lkID0gdHJpbSgkX1JFUVVFU1RbJ3R4J10pOwoJICB9CgllbHNlIGlmKCBpc3NldCgkX1JFUVVFU1RbJ3R4bl9pZCddKSApCgkgIHsKCSAgICAkdHhuX2lkID0gdHJpbSgkX1JFUVVFU1RbJ3R4bl9pZCddKTsKCSAgfQoKCWlmKCBpc3NldCgkX1JFUVVFU1RbJ2FtdCddKSApCgkgIHsKCSAgICAkYW10ID0gJF9SRVFVRVNUWydhbXQnXTsKCSAgfQoJZWxzZSBpZiggaXNzZXQoJF9SRVFVRVNUWydtY19ncm9zcyddKSApCgkgIHsKCSAgICAkYW10ID0gJF9SRVFVRVNUWydtY19ncm9zcyddOwoJICB9CgoJaWYoIGVtcHR5KCRhbXQpICkKCSAgewoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5sYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pbnZhbGlkX2Ftb3VudCcpKTsKCSAgfQoJZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydhbW91bnQnXSkgJiYgJGFtdCAhPSAkdGhpcy0+X2RhdGFbJ2Ftb3VudCddICkKCSAgewoJICAgIC8vIGFtb3VudCBpcyBpbnZhbGlkLCB0aGF0J3Mgd29ua3kKCSAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+bGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9hbW91bnQnKSk7CgkgIH0KCglpZiggaXNzZXQoJF9SRVFVRVNUWydjYyddKSApCgkgIHsKCSAgICAkY3VycmVuY3kgPSAkX1JFUVVFU1RbJ2NjJ107CgkgIH0KCWVsc2UgaWYoIGlzc2V0KCRfUkVRVUVTVFsnbWNfY3VycmVuY3knXSkgKQoJICB7CgkgICAgJGN1cnJlbmN5ID0gJF9SRVFVRVNUWydtY19jdXJyZW5jeSddOwoJICB9CgoJaWYoIGVtcHR5KCRjdXJyZW5jeSkgKQoJICB7CgkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPmxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX2ludmFsaWRfY3VycmVuY3knKSk7CgkgIH0KCWVsc2UgaWYoICRjdXJyZW5jeSAhPSBjZ19lY29tbTo6Z2V0X2N1cnJlbmN5X2NvZGUoKSApCgkgIHsKCSAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+bGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9jdXJyZW5jeScpKTsKCSAgfQoKCSR0aGlzLT5TZXRUcmFuc2FjdGlvbklkKCR0eG5faWQpOwoJJHRoaXMtPlNldFRyYW5zYWN0aW9uQW1vdW50KCRhbXQpOwoJJHRoaXMtPlNldFN0YXR1cyhQQVlNRU5UX1NUQVRVU19QRU5ESU5HKTsKCglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuYWJsZV9pcG4nKSApCgkgIHsKCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX05PTkUpOwoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdtc2dfdHJhbnNhY3Rpb25fd2FpdGluZ2lwbicsJHR4bl9pZCwkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSkpOwoJICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJICAgIHJldHVybjsKCSAgfQoJZWxzZSBpZiggZW1wdHkoJHRva2VuKSB8fAoJICAgIChpc3NldCgkY29uZmlnWydwYXlwYWxfc2tpcF9wZHQnXSkgJiYgJGNvbmZpZ1sncGF5cGFsX3NraXBfcGR0J10gPT0gMSkgKQoJICB7CgkgICAgLy8gc2tpcCB0aGUgcGR0IHN0dWZmLgoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdtc2dfdHJhbnNhY3Rpb25fc3VjY2Vzc19ub3BkdCcsJHR4bl9pZCkpOwoJICAgICR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOwoJICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJICAgIHJldHVybjsKCSAgfQoKCS8vIElQTiBpcyBkaXNhYmxlZCwgYW5kIHdlIGNhbiBkbyBQRFQKCSRwb3N0ZGF0YSA9IGFycmF5KCk7CgkkcG9zdGRhdGFbJ3R4J10gPSAkdHhuX2lkOwoJJHBvc3RkYXRhWydhdCddID0gJHRva2VuOwoJJHBvc3RkYXRhWydjbWQnXSA9ICdfbm90aWZ5LXN5bmNoJzsKCSR0bXAgPSAkdGhpcy0+aHR0cF9wb3N0KCR1cmwsJHBvc3RkYXRhKTsKCglpZiggZW1wdHkoJHRtcCkgJiYgIWVtcHR5KCR0b2tlbikgKQoJICB7CgkgICAgLy8gcGR0IGZhaWxlZC4KCSAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JldHJpZXZpbmdfdHJhbnNhY3Rpb25fZGF0YScpKTsKCSAgfQoJZWxzZSBpZiggIWVtcHR5KCR0b2tlbikgKQoJICB7CgoJICAgICR0bXAyID0gZXhwbG9kZSgiXG4iLCR0bXApOwoJICAgICRyZXN1bHQgPSBhcnJheSgpOwoJICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXAyKTsgJGkrKyApCgkgICAgICB7CgkJJHN0ciA9IHRyaW0oJHRtcDJbJGldKTsKCQlpZiggZW1wdHkoJHN0cikgKSBjb250aW51ZTsKCQlpZiggJGkgPT0gMCApCgkJICB7CgkJICAgICRyZXN1bHRbJ1NUQVRVUyddID0gJHN0cjsKCQkgIH0KCQllbHNlCgkJICB7CgkJICAgIGlmKCBzdHJzdHIoJHN0ciwnPScpICE9PSBGQUxTRSApCgkJICAgICAgewoJCQlsaXN0KCRrLCR2KSA9IGV4cGxvZGUoJz0nLCRzdHIsMik7CgkJCSRyZXN1bHRbJGtdID0gJHY7CgkJICAgICAgfQoJCSAgfQoJICAgICAgfQoKCSAgICBpZiggJHJlc3VsdFsnU1RBVFVTJ10gIT0gJ1NVQ0NFU1MnIHx8ICFpc3NldCgkcmVzdWx0Wyd0eG5faWQnXSkgKQoJICAgICAgewoJCS8vIHN0cmFuZ2UgcGR0IHByb2JsZW0uCgkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9wZHRfZmFpbGVkJykuJyAtIHN0YXR1cyA9ICcuJHJlc3VsdFsnU1RBVFVTJ10pOwoJCSR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9wZHRfZmFpbGVkJykpOwoJICAgICAgfQoJICAgIGVsc2UKCSAgICAgIHsKCQkkdGhpcy0+U2V0VHJhbnNhY3Rpb25JZCgkdHhuX2lkKTsKCQlpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuYWJsZV9pcG4nLDApICkKCQkgIHsKCQkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl93YWl0aW5naXBuJywkcmVzdWx0Wyd0eG5faWQnXSwkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSkpOwoJCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX1BFTkRJTkcpOwoJCSAgfQoJCWVsc2UKCQkgIHsKCQkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzJywkcmVzdWx0Wyd0eG5faWQnXSkpOwoJCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX0FQUFJPVkVEKTsKCQkgIH0KCSAgICAgIH0KCSAgfQogICAgICB9CiAgfQoKJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogPGxpPlZlcnNpb24gMi4wIC0gY2FsZ3V5MTAwMAogICA8dWw+CiAgICAgPGxpPk5vdyBiYXNlZCBvbiBDR1BheW1lbnRHYXRld2F5IEJhc2U8L2xpPgogICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IHRvIGRvIFBEVCBkYXRhIHRyYW5zZmVyczwvbGk+CiAgICAgPGxpPk51bWVyb3VzIGJ1ZyBmaXhlcy48L2xpPgogICA8L3VsPgogPC9saT4KCiA8bGk+VmVyc2lvbiAyLjEgLSBBdWd1c3QgMjAwOSAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5BZGRzIHBheXBhbCBJUE4gc3VwcG9ydC48L2xpPgogICAgIDxsaT5NdW5nZSBhbGwgbGluZSBpdGVtcyBpbnRvIG9uZSwgaWYgdGhlcmUgaXMgYSBuZWdhdGl2ZSBsaW5lIGl0ZW0uPC9saT4KICAgICA8bGk+Rm9yY2UgaW5jcmVtZW50YWwgaXRlbSBudW1iZXJzLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgoKIDxsaT5WZXJzaW9uIDIuMS4yIC0gT2N0b2JlciAyMDA5IC0gY2FsZ3V5MTAwMAogICA8dWw+CiAgICAgPGxpPkFkZCBhYmlsaXR5IHRvIGRpc2FibGUgUERUIGlmIHRoZSBpZGVudGl0eSB0b2tlbiBpcyBlbXB0eS48L2xpPgogICAgIDxsaT5Db21wYXRpYmlsaXR5IHdpdGggbmV3IENHUGF5bWVudEdhdGV3YXlCYXNlPC9saT4KICAgPC91bD4KIDwvbGk+CgogPGxpPlZlcnNpb24gMi4xLjMgLSBPY3RvYmVyIDIwMDkgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+QWRkIGNoZWNrIGZvciBtY3J5cHQgZnVuY3Rpb25hbGl0eS48L2xpPgogICA8L3VsPgogPC9saT4KCiA8bGk+VmVyc2lvbiAyLjEuNCAtIE5vdmVtYmVyIDIwMDkgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+VXNlIG51bWJlcl9mb3JtYXQgaW5zdGVhZCBvZiBzcHJpbnRmKCclLjJmJywuLi4pOyB0byBob3BlZnVsbHkgZml4IGlzc3VlcyB3aXRoIGRpZmZlcmVudCBsb2NhbGVzLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgogPGxpPlZlcnNpb24gMi4xLjQgLSBBcHJpbCwgMjAxMCAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5BZGRzIHRoZSBTZXRCaWxsaW5nQWRkcmVzcyBtZXRob2QuPC9saT4KICAgPC91bD4KIDwvbGk+CiA8bGk+VmVyc2lvbiAyLjEuNSAtIEp1bHksIDIwMTAgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Tm93IHdvcmtzIHdpdGggQ0dQYXltZW50R2F0ZXdheUJhc2UgMS4wLjc8L2xpPgogICA8L3VsPgogPC9saT4gIAogPGxpPlZlcnNpb24gMi4xLjkgLSBBdWd1c3QsIDIwMTAgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Tm93IHdvcmtzIHdpdGggQ0dQYXltZW50R2F0ZXdheUJhc2UgMS4wLjg8L2xpPgogICAgIDxsaT5Ob3cgaGFuZGxlcyBzdWJzY3JpcHRpb25zICh3aGVuIElQTiBpcyBlbmFibGVkKTwvbGk+CiAgICAgPGxpPkNvbXBsZXRlIHJld3JpdGUgdG8gdGhlIElQTiBldmVudCBoYW5kbGluZy48L2xpPgogICA8L3VsPgogPC9saT4gCiA8bGk+VmVyc2lvbiAyLjIgLSBTZXB0ZW1iZXIsIDIwMTAgLSBjYWxndXkxMDAwCiAgPHVsPgogICAgIDxsaT5SZXdyaXR0ZW4gYWRtaW4gaW50ZXJmYWNlLCBzYW5kYm94IHNldHRpbmdzIGFuZCBwcm9kdWN0aW9uIHNldHRpbmdzIGNhbiBiZSBrZXB0IHNlcGVyYXRlbHkuPC9saT4KICAgICA8bGk+TWlub3IgZml4ZXMgd3J0IHdlaWdodCB1bmludHMgbm90IGJlaW5nIHNwZWNpZmllZC48L2xpPgogICAgIDxsaT5NaW5vciBmaXhlcyB0byBJUE4gc3R1ZmYuPC9saT4KICA8L3VsPgogPC9saT4KIDxsaT5WZXJzaW9uIDIuMi4xIC0gT2N0b2JlciwgMjAxMCAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5GaXhlZCBhbiBpbXBvcnRhbnQgYnVnIGluIHRyYW5zbGF0aW5nIGl0ZW0gZGVzY3JpcHRpb25zLjwvbGk+CiAgIDwvdWw+IAogPC9saT4KIDxsaT5WZXJzaW9uIDIuMi4zIC0gRmVicnVhcnksIDIwMTEgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Rml4ZXMgaXNzdWVzIHdpdGggY2hhbmdlZCBwYXJhbWV0ZXJzIHRyYW5zbWl0dGVkIGZyb20gUGF5cGFsLjwvbGk+CiAgIDwvdWw+IAogPC9saT4KIDxsaT5WZXJzaW9uIDIuMy4zIC0gTWFyY2gsIDIwMTEgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Rml4ZXMgdG8gc3Vic2NyaXB0aW9uIHN0dWZmLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgogPGxpPlZlcnNpb24gMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwCiAgPHA+PHN0cm9uZz5OT1RFOiBQSFAgNS4zLnggSVMgUkVRVUlSRUQuPC9zdHJvbmc+PC9wPgogIDx1bD4KICAgIDxsaT5Db2RlIG9wdGltaXphdGlvbi48L2xpPgogICAgPGxpPkZpeGVkIHRvIHdvcmsgd2l0aCBuZXdlciBwcm9kdWN0cyBhbmQgZWNvbW1lcmNlIHN1aXRlLjwvbGk+CiAgPC91bD4KIDwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyBpdCBkbz88L2gzPgogIDxwPlRoaXMgbW9kdWxlIGlzIHVzZWQgYnkgdGhlIE9yZGVycyBtb2R1bGUgdG8gY29tcGxldGUgcHVyY2hhc2VzIHVzaW5nIFBheXBhbHMgV2Vic2l0ZSBQYXltZW50IFN0YW5kYXJkIG1lY2hhbmlzbS4gIFRoZSBtb2R1bGUgdXNlcyB0aGUgUERUIG1ldGhvZCBmb3IgY29tcGxldGluZyBhIHB1cmNoYXNlLCBhbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBJUE4gZnVuY3Rpb25hbGl0eS4gIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjaGVja291dCwgdXNlcnMgd2lsbCByZWRpcmVjdCBiYWNrIHRvIHRoZSBPcmRlcnMgbW9kdWxlIHRvIHNob3cgdGhlIGNoZWNrb3V0IHJlY2VpcHQgcGFnZS4gIFNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSB1c2UgSXQ8L2gzPgo8cD5GaXJzdCB5b3Ugc2hvdWxkIGVuYWJsZSBQRFQgaW4geW91ciBwYXlwYWwgYnVzaW5lc3MgYWNjb3VudCwgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIFBEVCBpZGVudGl0eSB0b2tlbiBhcyBzdXBwbGllZCBieSBwYXlwYWwuPC9wPgo8cD5Gb3IgSVBOIHN1cHBvcnQgeW91IHdpbGwgbmVlZCB0byBlbmFibGUgUERUIGluIHlvdXIgcGF5cGFsIGJ1c2luZXNzIGFjb2NvdW50LCBhbmQgZW50ZXIgYSByZXR1cm4gVVJMLCB0aG91Z2ggdGhpcyB1cmwgaXMgb3ZlcnJpZGRlbiBieSB0aGlzIG1vZHVsZSBhbmQgY2FuIGJlIGlnbm9yZWQuPC9wPgo8cD5UaGlyZGx5LCB5b3Ugc2hvdWxkIGFkanVzdCB0aGUgbGFuZ3VhZ2Ugc2V0dGluZ3MgaW4geW91ciBwYXlwYWwgYnVzaW5lc3MgYWNjb3VudCB0byBlbnN1cmUgdGhleSBhcmUgc2V0IHRvIHV0Zi04LjwvcD4KPHA+TmV4dCwgb25jZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkLCB5b3Ugc2ltcGx5IGluc3RhbGwgdGhlIG1vZHVsZS4gIHRoZW4gY29uZmlndXJlIHRoZSBtb2R1bGUgUGF5cGFsR2F0ZWF5IGNvbnRyb2wgcGFuZWwgaW5zaWRlIHRoZSBDTVMgTWFkZSBTaW1wbGUgYWRtaW4gY29uc29sZS4gIFNwZWNpZnkgdGhlIHVybCB0byB1c2UgZm9yIHBheXBhbCB0cmFuc2FjdGlvbnMgKHRoZSB0ZXN0IHVybCBpcyBwcm92aWRlZCBieSBkZWZhdWx0KSwgeW91ciBwYXlwYWwgYXNzb2NpYXRlZCBlbWFpbCBhZGRyZXNzLCBhbmQgdGhlIFBEVCBpZGVudGl0eSB0b2tlbiBhcyBkZXNjcmliZWQgYWJvdmUuPC9wPgo8cD5UaGlyZGx5LCBuYXZpZ2F0ZSB0byB0aGUgcHJlZmVyZW5jZXMgdGFiIGluIHRoZSBPcmRlcnMgbW9kdWxlIGFuZCBzZWxlY3QgdGhpcyBtb2R1bGUgYXMgeW91ciBjaG9zZW4gcGF5bWVudCBnYXRld2F5LjwvcD4KPGgzPkxpbWl0YXRpb25zPC9oMz4KPHA+VGhlIFdlYnNpdGUgUGF5bWVudCBTdGFuZGFyZCBBUEkgZnJvbSBQYXlwYWwgaXMgcmF0aGVyIGxpbWl0ZWQgaW4gaXRzIGZ1bmN0aW9uYWxpdHksIHRoZXJlZm9yZSBhIG51bWJlciBvZiBzdGVwcyBoYXZlIGJlZW4gdGFrZW4gdG8gb3ZlcmNvbWUgYXMgbXVjaCBhcyBwb3NzaWJsZSB0aGVzZSBsaW1pdGF0aW9uczo8L3A+Cjx1bD4KPGxpPlRheGVzOgo8cD5BdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGUgV1BTIHN0YW5kYXJkIGRpZCBub3Qgc3VwcG9ydCBtdWx0aXBsZSB0YXhlcywgYnV0IHRoZSBPcmRlcnMgbW9kdWxlIGRvZXMsIFRoZXJlZm9yZSBhbGwgdGF4ZXMgYXJlIGVudGVyZWQgYXMgbGluZSBpdGVtcy48L3A+CjwvbGk+Cgo8bGk+U2hpcHBpbmc6CjxwPkF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZSBXUFMgc3RhbmRhcmQgZGlkIG5vdCBzdXBwb3J0IHNoaXBwaW5nIGNvc3RzLCBvciBkZXNjcmlwdGlvbnMgZm9yIHNoaXBwaW5nLCBob3dldmVyIHRoZSBPcmRlcnMgbW9kdWxlIGlzIG1vdmluZyBpbiB0aGF0IGRpcmVjdGlvbiwgVGhlcmVmb3JlIGFsbCBzaGlwcGluZyBjb3N0cyBhcmUgZW50ZXJlZCBhcyBsaW5lIGl0ZW1zLjwvcD4KPC9saT4KCjxsaT5EaXNjb3VudHMgLyBOZWdhdGl2ZSBWYWx1ZXM6CjxwPkF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZSBXUFMgc3RhbmRhcmQgZGlkIG5vdCBzdXBwb3J0IG5lZ2F0aXZlIGFtb3VudCB2YWx1ZXMgZm9yIGl0ZW1zIHN1Y2ggYXMgZGlzY291bnRzLiAgSG93ZXZlciwgdGhlIFByb21vdGlvbnMgbW9kdWxlIGRvZXMuICBUaGVyZWZvcmUgaWYgYSBuZWdhdGl2ZSB2YWx1ZSBpcyBkZXRlY3RlZCBpbiB0aGUgaXRlbXMgcHJvdmlkZWQgdG8gdGhpcyBtb2R1bGUsIHRoZSBtb2R1bGUgd2lsbCBtdW5nZSB0aGUgZW50aXJlIG9yZGVyIGludG8gb25lIGxpbmUgaXRlbSBvZiB0aGUgYXBwcm9wcmlhdGUgYW1vdW50LjwvcD4KPC9saT4KCjxsaT5JdGVtIE51bWJlcnM6CjxwPlBheXBhbCBzZWVtcyB0byByZXF1aXJlIGl0ZW0gbnVtYmVycyBmb3IgYWxsIGxpbmUgaXRlbXMuICBBbmQgc2luY2UgdGF4IGFuZCBzaGlwcGluZyBsaW5lIGl0ZW1zIGRvbnQgbmVjZXNzYXJpbHkgaGF2ZSBhIHByb2R1Y3QgaWQsIGFsbCBpdGVtIG51bWJlcnMgc3RhcnQgZnJvbSAxIGFuZCBhcmUgbGluZWFybHkgaW5jcmVtZW50ZWQuPC9wPgo8L2xpPgoKPGxpPkNoYXJnZWJhY2tzL1JldmVyc2FscyBldGMuCjxwPkFsdGhvdWdoIHRoZSBwYXlwYWwgSVBOIHByb3RvY29sIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhzZSB0eXBlcyBvZiB0cmFuc2FjdGlvbnMsIHRoZSBPcmRlcnMgbW9kdWxlIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgaXMgbm90LiAgVGhlcmVmb3JlIG1hbnkgb2YgdGhlc2UgYXJlIGlnbm9yZWQsIG9yIHRoZSBvcmRlciB3aWxsIGJlIGFkanVzdGVkIHRvIGhhdmUgYW4gRVJST1Igc3RhdHVzLjwvcD4KPC9saT4KCjwvdWw+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPg==]]></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.template_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3IKIwojIGJhc2VkIG9uOiBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuCiMKIyBOb3RlOiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBzdGFydGVkIGJ5IFRlZCBLdWxwLCBidXQgcmV3cml0dGVuCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgplY2hvIGNnZV90ZW1wbGF0ZV9hZG1pbjo6Z2V0X3NpbmdsZV90ZW1wbGF0ZV9mb3JtKCR0aGlzLCRpZCwkcmV0dXJuaWQsCgkJCQkJCSAgJ2Zvcm1fdGVtcGxhdGUnLAoJCQkJCQkgICd0ZW1wbGF0ZScsCgkJCQkJCSAgJHRoaXMtPkxhbmcoJ3Byb21wdF9mb3JtX3RlbXBsYXRlJyksCgkJCQkJCSAgJ29yaWdfZm9ybV90ZW1wbGF0ZS50cGwnKTsKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhXQAhANUAAEOqQonJiPf791SyU77ivqzZq2++bt7w3prRmmO4Yuf050utStLq0XzEe7Xetf///2i7Z5XPlaXWpFu1WoDFf7rgue/4787pzk+vTq/brtjt13XBdEqtQmu8a4zLi7Xerfj8+L3hvMXlxV+2Xp3TnWa6ZZzOlFGwUK3WpXK/cYTHg1q1UnvFcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAABdACEAAAb/QIBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v1MVeLytkM9XM3otVbPfTTccmYhkMhIVRtiQZAoIG0MlJHgQHCQkYn14BkhyAA0QACV+EpNEG4UZEQMACQELRhSCcQ+nqA8OCqmnFhsOrSKnBwetDJ5FkLYVrQVCJRatAgYqDwxFEqpNJK4EFQy0IA8HISEardQXwrIkBcIHokS7DwIIBhsEpxQAKSAODR0N0eECDwlEwqVL2CB7QgNILEixD0ABVBY6CFkwC1WAIQtsIdBVxJYHIrM0ACQy4dSCEA9IDEnxwIKTaA8oiEsSANWvIQlQHShC4YHGcRUfNCDS4BQH/yIQNhh7MKHnTCGxMjhpmcrCgQIDKIg4oKAqt5BEBiAUwZVrNJM4idjaOWTEqQmfGqZCK2yEEGGOlrLKRheVyCEY6iKkKFZn1rMbpomIQCGFPbSxJpJUIOVECaFqNahIQVnZKQkcZQbYzDkAu7BDxhKJ+QADqwhEDgMwYBNArJdNJlz8eyoFkQiokA3xgHAlgFx8Q/sdglvBAo+piQphNUFYCScGhGmI0KFEgwuoLkDAgAGCrdwBGhSYhkpDgxEdJAjQ4Ba0EF5DTrCScPxBXACW0eJ/MIuxkwTY0GWPXnUN2EpCwb3nigMOCKPACQDMIgABBAgzTQSikPYAZlA0QKDAXAIw4AEHEXz3wAWWSVCBMAKEAMEpImxwwYAHCGQEOQ1mp98JkRmAwDSloNTeFist4JsQpCm1kBLk7FSCAcBldeQQHVCDBgQFQAgABtil5ESTVWTwwERk8HaKBhqQp1scOZElxQQggBDlFxiAJMuUSYAJRQEa5KgkGhPYkQEC+ECh5xNingLJHFYYOcUEHczJ6KSUVmrppZhmqummSAQBADs=]]></data>
	</file>
	<file>
	  <filename>/images/PaymentsBy.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAGUAAAA7CAIAAADtmtMfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REE5RTU3QjA2RjIxMTFFNDg4NzM4MjE1MEZGQzM3NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REE5RTU3QjE2RjIxMTFFNDg4NzM4MjE1MEZGQzM3NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTlFNTdBRTZGMjExMUU0ODg3MzgyMTUwRkZDMzc0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTlFNTdBRjZGMjExMUU0ODg3MzgyMTUwRkZDMzc0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsD6IOYAAAo9SURBVHja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]]></data>
	</file>
	<file>
	  <filename>/images/PaymentsBy_Horizontal_2.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAL0AAABGCAIAAAAW4AK9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzAwQjM2QkI2RjFGMTFFNDg4NzM4MjE1MEZGQzM3NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzAwQjM2QkM2RjFGMTFFNDg4NzM4MjE1MEZGQzM3NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDMDBCMzZCOTZGMUYxMUU0ODg3MzgyMTUwRkZDMzc0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMDBCMzZCQTZGMUYxMUU0ODg3MzgyMTUwRkZDMzc0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgNHypcAABaYSURBVHja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]]></data>
	</file>
	<file>
	  <filename>/images/paypal_button.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMgQQoKIyBCCgojIEMKJGxhbmdbJ2NoZWNrb3V0X2J1dHRvbl9tZXNzYWdlJ10gPSAnQ2hlY2tvdXQnOwokbGFuZ1snY2hlY2tvdXRfbWVzc2FnZSddID0gJ0NoZWNrb3V0IHdpdGggU2FnZXBheTonOwogICAgICAvLyRsYW5nWydjcnlwdF90b2tlbiddID0gJ1NhZ2VwYXkgRW5jcnlwdGlvbiBQYXNzd29yZCc7CiAgICAgIC8vICRsYW5nWydjdXN0b21fc3R5bGUnXSA9ICdDdXN0b20gU3R5bGUnOwoKIyBFCiAgICAgIC8vICRsYW5nWydlbmFibGVfaXBuJ10gPSAnRW5hYmxlIFBheXBhbCBJUE4nOwokbGFuZ1snZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9hbW91bnQnXSA9ICdBbiBpbnZhbGlkIGFtb3VudCAobm90IHRoZSBlbnRpcmUgYW1vdW50Pykgd2FzIHJlY2VpdmVkIGZvciBvcmRlciAlcy4gU3RhdHVzOiAlcyc7CiAgICAgIC8vICRsYW5nWydlcnJvcl90cmFuc2FjdGlvbl9pbnZhbGlkX2N1cnJlbmN5J10gPSAnVGhlIGN1cnJlbmN5IHJlY2VpdmVkIGZyb20gdGhlIGdhdGV3YXkgZG9lcyBub3QgbWF0Y2ggb3VyIHNlbGVjdGVkIGN1cnJlbmN5JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0YSddID0gJ0luc3VmZmljaWVudCBkYXRhIHdhcyByZWNlaXZlZCBmcm9tIFNhZ2VwYXknOwokbGFuZ1snZXJyb3JfaXBuX2ludmFsaWRfb3JkZXJpZCddID0gJ0ludmFsaWQgb3IgbWlzc2luZyBvcmRlciBpZCc7CiAgICAgIC8vICRsYW5nWydlcnJvcl9pcG5fdmVyaWZpY2F0aW9uX2ZhaWxlZCddID0gJ1BheXBhbCBJUE4gVHJhbnNhY3Rpb24gVmVyaWZpY2F0aW9uIGZhaWxlZCc7CiRsYW5nWydlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllciddID0gJ0EgY29kZSB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIHBheW1lbnQgZ2F0ZXdheSc7CiRsYW5nWydlcnJvcl9ub19tY3J5cHQnXSA9ICdObyBlbmNyeXB0aW9uIGZ1bmN0aW9uYWxpdHkgZm91bmQuLi4gdGhpcyBtb2R1bGUgd2lsbCBub3QgZnVuY3Rpb24gcHJvcGVybHkgdW50aWwgbWNyeXB0IGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQnOwokbGFuZ1snZXJyb3JfcGF5bWVudF9kZWNsaW5lZCddID0gJ1BheW1lbnQgZGVjbGluZWQnOwokbGFuZ1snZXJyb3JfcmV0cmlldmluZ190cmFuc2FjdGlvbl9kYXRhJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIHJldHJpZXZlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIGdhdGV3YXknOwokbGFuZ1snZXJyb3JfcmVzdG9yaW5nX3RyYW5zYWN0aW9uX3N0YXRlJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIHJlc3RvcmUgc2F2ZWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24nOwokbGFuZ1snZXJyb3JfdHJhbnNhY3Rpb25fZmFpbGVkJ10gPSAnVHJhbnNhY3Rpb24gZmFpbGVkIGZvciBvcmRlciAlcy4gU3RhdHVzOiAlcyc7CiRsYW5nWydlcnJvcl90cmFuc2FjdGlvbl9pZF9taXNzaW5nJ10gPSAnVGhlIHRyYW5zYWN0aW9uIGFwcGVhcmVkIHRvIHN1Y2NlZWQsIGJ1dCB3ZSBjb3VsZCBub3QgZmluZCBhIHRyYW5zYWN0aW9uIGlkJzsKJGxhbmdbJ2Vycm9yX3RyYW5zYWN0aW9uX3BkdF9mYWlsZWQnXSA9ICdQRFQgRmFpbGVkJzsKCiRsYW5nWydlcnJvcl9lbmNyeXB0aW9uX3N0cmluZyddID0gJ0ludmFsaWQgZW5jcnlwdGlvbiBzdHJpbmcnOwoKCiMgRgokbGFuZ1snZm9ybV90ZW1wbGF0ZSddID0gJ0Zvcm0gVGVtcGxhdGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnU2FnZXBheTIgR2F0ZXdheSc7CgojIEgKJGxhbmdbJ2hlbHBfb3JkZXJfaWQnXSA9ICdTcGVjaWZpZXMgdGhlIG9yZGVyIGlkIG9mIHRoZSBvcmRlciB3ZVwncmUgdHJ5IHRvIGNvbXBsZXRlLic7CgojIEkKICAgICAgLy8gJGxhbmdbJ2luZm9fZW5hYmxlX2lwbiddID0gJ0lQTiA8ZW0+KEluc3RhbnQgUGF5bWVudCBOb3RpZmljYXRpb24pPC9lbT4gYWxsb3dzIHBheXBhbCB0byBzZW5kIGluZm9ybWF0aW9uIGR5bmFtaWNhbGx5IHRvIHlvdXIgd2Vic2l0ZS4gIEl0IGluY3JlYXNlcyBzZWN1cml0eSBhbmQgYWxsb3dzIGZvciBwb3N0aW5nIHN1YnNjcmlwdGlvbiBwYXltZW50cyBvciBzdWJzY3JpcHRpb24gY2FuY2VsbGF0aW9ucyBldGMuICAgSWYgSVBOIGlzIGVuYWJsZWQsIFBEVCBpcyBkaXNhYmxlZC4gIEFkZGl0aW9uYWxseSwgcGF5bWVudHMgd2lsbCBub3QgYmUgY29uZmlybWVkIHVudGlsIHRoZSBJUE4gbWVzc2FnZSBmb3IgYSBwYXltZW50IGlzIHJlY2VpdmVkJzsKICAgICAgLy8gJGxhbmdbJ2luZm9faXBuX3VybCddID0gJ1NwZWNpZnkgdGhpcyBVUkwgaW4geW91ciBwYXlwYWwgYnVzaW5lc3Mgc2l0ZSBzZXR0aW5ncyc7Ci8vICAgICAgJGxhbmdbJ2luZm9fcGR0X3JldHVybl91cmwnXSA9ICc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGUgcmV0dXJuIFVSTCBzcGVjaWZpZWQgaW4gdGhlICZxdW90O1dlYnNpdGUgUGF5bWVudCBQcmVmZXJlbmNlcyZxdW90OyBtdXN0IGJlIGNvbXBsZXRlLCBhbmQgbXVzdCBwb2ludCB0byB5b3VyIHdlYnNpdGUgKGF0IHRoZSB2ZXJ5IGxlYXN0IHRvIHlvdXIgaG9tZSBwYWdlKS4nOwogICAgICAvLyAkbGFuZ1snaXBuX3VybCddID0gJ0lQTiBVUkwnOwokbGFuZ1snaW5mb190ZXN0X3NldHRpbmdzJ10gPSAnV2hlbiB0ZXN0IG1vZGUgaXMgZW5hYmxlZCwgdGhlIHN5c3RlbSB3aWxsIHVzZSB0aGUgU2FnZXBheSBUZXN0IHN5c3RlbSwgeW91IG11c3QgZW50ZXIgdmFsaWQgdGVzdCBzeXN0ZW0gY3JlZGVudGlhbHMnOwoKCiMgTQokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdQYXJ0IG9mIHRoZSBFLWNvbW1lcmNlIGNvbGxlY3Rpb24sIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcGVyZm9ybSBjaGVja291bnRzIHZpYSBTYWdlUGF5JzsKICAgICAgLy8gJGxhbmdbJ21zZ19pcG5fc3VjY2Vzc2Z1bCddID0gJ0lQTiBUcmFuc2FjdGlvbiAlcyBzdWNjZXNzZnVsLiBTdGF0dXM6ICVzJzsKJGxhbmdbJ21zZ190ZXN0bW9kZSddID0gJ1NhZ2VwYXkyIG1vZHVsZSBpcyBpbiB0ZXN0IG1vZGUnOwokbGFuZ1snbXNnX3RyYW5zYWN0aW9uX2NhbmNlbGxlZCddID0gJ1RyYW5zYWN0aW9uIENhbmNlbGxlZCBmb3Igb3JkZXIgJXMuIFN0YXR1czogJXMnOwokbGFuZ1snbXNnX3RyYW5zYWN0aW9uX2RlY2xpbmVkJ10gPSAnVHJhbnNhY3Rpb24gRGVjbGluZWQgZm9yIG9yZGVyICVzLiBTdGF0dXM6ICVzJzsKJGxhbmdbJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzJ10gPSAnUmVjZWl2ZWQgc3VjY2Vzc2Z1bGwgdHJhbnNhY3Rpb24gcmVwbHkgZm9yIG9yZGVyICVzICVzJzsKICAgICAgLy8gJGxhbmdbJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzX25vcGR0J10gPSAnUmVjZWl2ZWQgc3VjY2Vzc2Z1bGwgdHJhbnNhY3Rpb24gcmVwbHkgZm9yICVzIChQRFQgc2tpcHBlZCknOwokbGFuZ1snbXNnX3RyYW5zYWN0aW9uX3dhaXRpbmdpcG4nXSA9ICdUcmFuc2FjdGlvbiAlcyBtYXJrZWQgYXMgUEVORElORyB1bnRpbCBJUE4gY29uZmlybWF0aW9uIGFycml2ZXMgKCVzKSc7CgojIE8KJGxhbmdbJ29ubGluZV9wdXJjaGFzZSddID0gJ09ubGluZSBQdXJjaGFzZSc7CgojIFAKICAgICAgLy8gJGxhbmdbJ3BhZ2Vfc3R5bGUnXSA9ICdQYWdlIFN0eWxlJzsKICAgICAgLy8gJGxhbmdbJ3BheXBhbF9zdHlsZSddID0gJ1BheXBhbCBTdGFuZGFyZCc7CiAgICAgIC8vICRsYW5nWydwcmltYXJ5X3N0eWxlJ10gPSAnQWNjb3VudCBQcmltYXJ5IFN0eWxlJzsKICAgICAgLy8gJGxhbmdbJ3BheXBhbF91cmwnXSA9ICdQYXlwYWwgVVJMJzsKICAgICAgLy8gJGxhbmdbJ3BkdF9pZGVudGl0eV90b2tlbiddID0gJ1BEVCBJZGVudGl0eSBUb2tlbic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoZSBTYWdlcGF5MiBnYXRld2F5IG1vZHVsZSBoYXMgbm93IGJlZW4gaW5zdGFsbGVkLiAgWW91IGNhbiBzZWxlY3QgdGhpcyBnYXRld2F5IG1vZHVsZSBmcm9tIHlvdXIgQ2FsZ3V5cyBFY29tbWVyY2UgQmFzZSBtb2R1bGUsIFBheW1lbnQgU2V0dGluZ3MgdGFiLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIFNhZ2VwYXkyIGdhdGV3YXkgbW9kdWxlIGhhcyBub3cgYmVlbiByZW1vdmVkJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOwokbGFuZ1sncHJvZG1vZGUnXSA9ICdFbmFibGUgUHJvZHVjdGlvbiBNb2RlJzsKJGxhbmdbJ3Byb2R1Y3Rpb25fc2V0dGluZ3MnXSA9ICdQcm9kdWN0aW9uIFNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9mb3JtX3RlbXBsYXRlJ10gPSAnRWRpdCB0aGUgcGF5bWVudCBmb3JtIHRlbXBsYXRlJzsKCiMgUgokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gWW91XCdyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIFNhZ2VwYXkyIG1vZHVsZT8nOwoKIyBTCiRsYW5nWydzYWdlcGF5X3ZlbmRvcl9uYW1lJ10gPSAnU2FnZXBheSBWZW5kb3IgTmFtZSc7CiRsYW5nWydzYWdlcGF5X3Bhc3N3b3JkJ10gPSAnU2FnZXBheSBFbmNyeXB0aW9uIFBhc3N3b3JkJzsKJGxhbmdbJ3NoaXBwaW5nJ10gPSAnU2hpcHBpbmcnOwokbGFuZ1snc2VuZF9lbWFpbHMnXSA9ICdTYWdlcGF5IFNlbmQgQ29uZmlybWF0aW9uIEVtYWlscyc7CiRsYW5nWydzZW5kX2VtYWlsX25vbmUnXSA9ICdEbyBub3Qgc2VuZCBlaXRoZXIgY3VzdG9tZXIgb3IgdmVuZG9yIGVtYWlscyc7CiRsYW5nWydzZW5kX2VtYWlsX2JvdGgnXSA9ICdTZW5kIGN1c3RvbWVyIGFuZCB2ZW5kb3IgZW1haWxzIGlmIGFkZHJlc3NlcyBhcmUgcHJvdmlkZWQnOwokbGFuZ1snc2VuZF9lbWFpbF92ZW5kb3InXSA9ICdTZW5kIHZlbmRvciBlbWFpbCBidXQgTk9UIHRoZSBjdXN0b21lciBlbWFpbCc7CgojIFQKJGxhbmdbJ3Rlc3Rfc2V0dGluZ3MnXSA9ICdUZXN0IFNldHRpbmdzJzsKCiMgVgogICAgICAvLyRsYW5nWyd2ZW5kb3JfbmFtZSddID0gJ1NhZ2VwYXkgVmVuZG9yIE5hbWUnOwokbGFuZ1sndmVuZG9yX2VtYWlsJ10gPSAnU2FnZXBheSBWZW5kb3IgQ29uZm9ybWF0aW9uIEVtYWlsIEFkZHJlc3MnOwokbGFuZ1sndmVuZG9yX2VtYWlsX2luZm8nXSA9ICdJZiBwcm92aWRlZCwgYW4gZW1haWwgd2lsbCBiZSBzZW50IHRvIHRoaXMgYWRkcmVzcyB3aGVuIGVhY2ggdHJhbnNhY3Rpb24gY29tcGxldGVzIChzdWNjZXNzZnVsbHkgb3Igb3RoZXJ3aXNlKS4gVXNlIGEgY29sb24gKDopIHRvIHNlcGFyYXRlIG11bHRpcGxlIGVtYWlsIGFkZHJlc3Nlcy4nOwoKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICBIRUxQCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiRsYW5nWydoZWxwJ10gPSAnCjxoMz5XaGF0IGRvZXMgaXQgZG8/PC9oMz4KICA8cD5UaGlzIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBPcmRlcnMgbW9kdWxlIHRvIGNvbXBsZXRlIHB1cmNoYXNlcyB1c2luZyBTYWdlcGF5LiAgQWZ0ZXIgY2hlY2tvdXQgaXMgY29tcGxldGVkIChzdWNjZXNzZnVsbHkgb3IgdW5zdWNjZXNzZnVsbHkpIG9uIHRoZSBTYWdlUGF5IHNpdGUsIHRoZSB1c2VyIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB0aGUgT3JkZXJzIG1vZHVsZSB0byBzaG93IHRoZSBjaGVja291dCByZWNlaXB0IHBhZ2UuPC9wPgogIDxwPlNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+Cgo8aDM+SG93IERvIEkgdXNlIEl0PC9oMz4KPHA+Rmlyc3QgeW91IGNyZWF0ZSBhIFNhZ2VwYWwgYWNjb3VudCwgYW5kIG9idGFpbiB0aGUgU2FnZXBheSBWZW5kb3IgTmFtZSwgVGVzdCBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZCBhbmQgKHdoZW4geW91IGFyZSByZWFkeSB0byBnbyBsaXZlKSB0aGUgUHJvZHVjdGlvbiBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZC48L3A+CjxwPkxlYXZlIFwnRW5hYmxlIFByb2R1Y3Rpb24gTW9kZVwnIHNldCB0byBcJ05vXCcgdW50aWwgeW91IGFyZSByZWFkeSB0byBnbyBMaXZlLiA8L3A+CjxwPllvdSBjYW4gY2hvb3NlIHRvIGhhdmUgU2FnZXBheSB0byBzZW5kIGVtYWlscyB0byB3ZWJzaXRlIG93bmVyIGFuZCB0aGUgY3VzdG9tZXIgYWZ0ZXIgY2hlY2tvdXQgaXMgY29tcGxldGVkLCB1c2luZyB0aGUgXCdTYWdlcGF5IFNlbmQgQ29uZmlybWF0aW9uIEVtYWlsc1wnIG9wdGlvbi4gSWYgc2VsZWN0ZWQgdGhlIGN1c3RvbWVyIGlzIG9ubHkgc2VudCBhbiBlbWFpbCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIGNoZWNrb3V0LiBJZiBzZWxlY3RlZCB0aGUgVmVuZG9yIGlzIHNlbnQgZWl0aGVyIGEgc3VjY2VzcyBvciBmYWlsdXJlIGVtYWlsLjwvcD4KPHA+SW4gXCdDYWxndXlzIEVjb21tZXJjZSBCYXNlID4gUGF5bWVudCBTZXR0aW5nc1wnIHNlbGVjdCBTYWdlcGF5MiBhcyB0aGUgUGF5bWVudCBHYXRld2F5IE1vZHVsZS48L3A+Cgo8aDM+SW1wbGVtZW50YXRpb24gTm90ZXM8L2gzPgo8cD5TYWdlcGF5MiB1c2UgdGhlIFNhZ2VwYXkgdjMuMCBBUEkuPC9wPgo8dWw+CiAgIDxsaT5UYXhlczogYXJlIHNob3duIGFzIGxpbmUgaXRlbXMuPC9saT4KICAgPGxpPlNoaXBwaW5nOiBhbGwgc2hpcHBpbmcgY29zdHMgYXJlIGVudGVyZWQgYXMgbGluZSBpdGVtcy48L2xpPgogICA8bGk+RGlzY291bnRzOiBhcmUgaW5jbHVkZWQgaW4gdGhlIGRpc3BsYXllZCBsaW5lIGl0ZW0gYW1vdW50PC9saT4KPC91bD4KPHA+QmFzZWQgb24gQ2FsZ3V5cyBQYXlwYWxHYXRld2F5IHYgMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwIGFuZCB0aGUgb3JpZ2luYWwgU2FnZVBheUdhdGV3YXkgbW9kdWxlIHYxLjA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE1LCBDaHJpcyBUYXlsb3IuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPic7CgoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgIENIQU5HRUxPRwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAkbGFuZ1snY2hhbmdlbG9nJ10gPSAnCjx1bD4KICAgPGxpPlZlcnNpb24gMC45LjIgLSAyMkp1bDE1IC0gQ2hyaXMgVGF5bG9yCiAgICAgIDx1bD4KICAgICAgICAgPGxpPmFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWcgY29kZSAoZGVmYXVsdCB0byBPRkYpPC9saT4KICAgICAgPC91bD4KICAgPC9saT4KICAgPGxpPlZlcnNpb24gMC45LjEgLSAxNUp1bDE1IC0gQ2hyaXMgVGF5bG9yCiAgICAgIDx1bD4KICAgICAgICAgPGxpPlNhZ2VwYXkgcmVzcG9uc2UgXCdSRUpFQ1RFRFwnIG5vdyBzZXRzIG9yZGVyIHN0YXR1cyB0byBjYW5jZWxsZWQsIG90aGVyd2lzZSBPcmRlcnMgc2V0cyBzdGF0dXMgdG8gU1VDQ0VTUyBhbmQgcGF5bWVudCB0byBEZWNsaW5lZDwvbGk+CiAgICAgICAgIDxsaT5idWcgZml4IHRvIGNvcnJlY3RseSBhY2NlcHQgU2FnZXBheSByZXNwb25zZSBhbW91bnQgMTAwMCs8L2xpPgogICAgICA8L3VsPgogICA8L2xpPgogICA8bGk+VmVyc2lvbiAwLjkgLSAxNEp1bDE1IC0gQ2hyaXMgVGF5bG9yCiAgICAgIDx1bD4KICAgICAgICAgPGxpPjAuOSAtIGluaXRpYWwgcmVsZWFzZTwvbGk+CiAgICAgICAgIDxsaT5CYXNlZCBvbiBDYWxndXlzIFBheXBhbEdhdGV3YXkgdiAyLjMuMTEgLSBBcHJpbCwgMjAxMyAtIGNhbGd1eTEwMDAgYW5kIHRoZSBvcmlnaW5hbCBTYWdlUGF5R2F0ZXdheSBtb2R1bGUgdjEuMDwvbGk+CiAgICAgICAgIDxsaT5OT1RFOiBQSFAgNS4zLnggSVMgUkVRVUlSRUQ8L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KPC91bD4nOwoKCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3IKIwojIGJhc2VkIG9uOiBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuCiMKIyBOb3RlOiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBzdGFydGVkIGJ5IFRlZCBLdWxwLCBidXQgcmV3cml0dGVuCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJGZuID0gZGlybmFtZShfX0ZJTEVfXykuJy90ZW1wbGF0ZXMvb3JpZ19mb3JtX3RlbXBsYXRlLnRwbCc7CiRkYXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZm9ybV90ZW1wbGF0ZScsJGRhdGEpOwoKIyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/Sagepay2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNhZ2VwYXkyLCBDaHJpcyBUYXlsb3IKIwojIGJhc2VkIG9uOiBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBTYWdlcGF5IGdhdGV3YXkuCiMKIyBJcyBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSBTYWdlcGF5R2F0ZXdheSBtb2R1bGUgdGhhdCB1c2VzIGFuIG9ic29sZXRlCiMgU2FncGF5IEFQSSAtIGRpc2NvbnRpbnVlZCBKdWx5IDIwMTUKIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmaW5hbCBjbGFzcyBTYWdlcGF5MiBleHRlbmRzIENHUGF5bWVudEdhdGV3YXlCYXNlCnsKICBjb25zdCBURVNUX1VSTCA9ICdodHRwczovL3Rlc3Quc2FnZXBheS5jb20vZ2F0ZXdheS9zZXJ2aWNlL3ZzcGZvcm0tcmVnaXN0ZXIudnNwJzsKICBjb25zdCBQUk9EX1VSTCA9ICdodHRwczovL2xpdmUuc2FnZXBheS5jb20vZ2F0ZXdheS9zZXJ2aWNlL3ZzcGZvcm0tcmVnaXN0ZXIudnNwJzsKICBjb25zdCBWUFNQcm90b2NvbCA9ICczLjAwJzsKICB2YXIgJF9kYXRhOwoKICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogICAgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsKICB9CgogIGZ1bmN0aW9uIEdldE5hbWUoKSB7IHJldHVybiBnZXRfY2xhc3MoJHRoaXMpOyB9CiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcwLjkuMic7IH0KICBmdW5jdGlvbiBHZXRIZWxwKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgfQogIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdDaHJpcyBUYXlsb3InOyB9CiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2hyaXNAYmlubm92YXRpdmUuY28udWsnOyB9CiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOyB9CiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiBUUlVFOyB9CiAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgeyByZXR1cm4gJ2Vjb21tZXJjZSc7IH0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOyB9CiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMS4xMS44JzsgfQogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOyB9CiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucyc9PicxLjM4LjEwJywnQ0dQYXltZW50R2F0ZXdheUJhc2UnPT4nMS4wLjUnKTsgfQogIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CgoKICAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsKICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKCiAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvc2FnZXBheVwvcmV0dXJuXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidyZXR1cm4nKSk7CgogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncHJvY2VzcycsIENMRUFOX1NUUklORyk7CiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdvcmRlcl9pZCcsIENMRUFOX0lOVCk7CiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdteWN1c3RvbScsIENMRUFOX1NUUklORyk7CiAgIH0KCgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gQmVnaW4gbWV0aG9kcyByZXF1aXJlZCBmb3IgcGF5bWVudCBnYXRld2F5cwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogIGZ1bmN0aW9uIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKSB7IHJldHVybiBmYWxzZTsgfQogIGZ1bmN0aW9uIFJlcXVpcmVzU1NMKCkgeyByZXR1cm4gZmFsc2U7IH0KICBmdW5jdGlvbiBSZXF1aXJlc1NoaXBwaW5nSW5mbygpIHsgcmV0dXJuIGZhbHNlOyB9CiAgZnVuY3Rpb24gUmVxdWlyZXNCaWxsaW5nSW5mbygpIHsgcmV0dXJuIGZhbHNlOyB9CgogIGZ1bmN0aW9uIFNhdmVTdGF0ZSgkZW5jcnlwdCA9IGZhbHNlLCAka2V5ID0gJycpCiAgewogICAgaWYoICRlbmNyeXB0ICkgewogICAgICBpZiggZW1wdHkoJGtleSkgKSAka2V5ID0gc3RyX3NodWZmbGUobWQ1KHNlc3Npb25faWQoKS50aW1lKCkpKTsKICAgICAgJHJhdyA9IHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpOwogICAgICAkZW5jID0gJHRoaXMtPmVuY3J5cHQoJGtleSwkcmF3KTsKICAgICAgJF9TRVNTSU9OWydzYWdlcGF5Z3cnXSA9IGJhc2U2NF9lbmNvZGUoJGVuYyk7ICAgIC8vIENUICdzYWdlcGF5Mmd3JyB3YXMgJ3BheXBhbGd3JwogICAgICByZXR1cm4gJGtleTsKICAgIH0KICAgIGVsc2UgewogICAgICAkcmF3ID0gc2VyaWFsaXplKCR0aGlzLT5fZGF0YSk7CiAgICAgICRfU0VTU0lPTlsnc2FnZXBheWd3J10gPSBiYXNlNjRfZW5jb2RlKCRyYXcpOwogICAgICByZXR1cm4gJyc7CiAgICB9CiAgfQoKCiAgZnVuY3Rpb24gUmVzdG9yZVN0YXRlKCRrZXkgPSAnJykgewogICAgaWYgKCAhaXNzZXQoJF9TRVNTSU9OWydzYWdlcGF5Z3cnXSkgKSByZXR1cm4gRkFMU0U7CiAgICBpZiAoIGVtcHR5KCRrZXkpICkgewogICAgICAkcmF3ID0gYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3NhZ2VwYXlndyddKTsKCiAgICB9IGVsc2UgewogICAgICAkZW5jID0gYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3NhZ2VwYXlndyddKTsKICAgICAgJHJhdyA9ICR0aGlzLT5kZWNyeXB0KCRrZXksJGVuYyk7CiAgICAgIGlmKCAkcmF3ID09PSBGQUxTRSApIHJldHVybiBGQUxTRTsKICAgIH0KICAgICR0aGlzLT5fZGF0YSA9IHVuc2VyaWFsaXplKCRyYXcpOwogICAgdW5zZXQoJF9TRVNTSU9OWydzYWdlcGF5Z3cnXSk7CiAgICByZXR1cm4gVFJVRTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gU2V0UGF5bWVudElkKCRwYXltZW50X2lkKSB7ICR0aGlzLT5fZGF0YVsncGF5bWVudF9pZCddID0gJHBheW1lbnRfaWQ7IH0KCiAgcHVibGljIGZ1bmN0aW9uIEdldFBheW1lbnRJZCgpCiAgewogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ3BheW1lbnRfaWQnXSkgKSByZXR1cm4gRkFMU0U7CiAgICByZXR1cm4gJHRoaXMtPl9kYXRhWydwYXltZW50X2lkJ107CiAgfQoKICBmdW5jdGlvbiBTZXRDcmVkaXRDYXJkSW5mbygkY2NudW1iZXIsJGNjZXhwLCRjY3Zjb2RlKSB7IHJldHVybiBUUlVFOyB9CiAgZnVuY3Rpb24gU2V0Q3VycmVuY3lDb2RlKCRjb2RlID0gJ1VTRCcpIHsgJHRoaXMtPl9kYXRhWydjdXJyZW5jeWNvZGUnXSA9IHN0cnRvdXBwZXIoJGNvZGUpOyB9CiAgZnVuY3Rpb24gU2V0V2VpZ2h0VW5pdHMoJHVuaXRzID0gJ2xicycpIHsgJHRoaXMtPl9kYXRhWyd3ZWlnaHR1bml0cyddID0gJHVuaXRzOyB9CiAgZnVuY3Rpb24gU2V0RGVzdGluYXRpb24oJHVybCkgeyAkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ10gPSAkdXJsOyB9CgoKICBmdW5jdGlvbiBBZGRJdGVtKCRuYW1lLCRudW1iZXIsJHF1YW50aXR5LCR3ZWlnaHQsJGFtb3VudCwkdGF4ID0gJycpIHsKICAgICRuYW1lID0gc3RyaXBfdGFncygkbmFtZSk7CiAgICAkbmFtZSA9IGh0bWxfZW50aXR5X2RlY29kZSgkbmFtZSk7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10pICkJJHRoaXMtPl9kYXRhWydpdGVtcyddID0gYXJyYXkoKTsKCiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnaXRlbXMnXVskbmFtZV0pICkgewogICAgICAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ11bJG5hbWVdID0gYXJyYXkoJ25hbWUnPT4kbmFtZSwgJ251bWJlcic9PiRudW1iZXIsICdxdWFudGl0eSc9PiRxdWFudGl0eSwgJ3dlaWdodCc9PiR3ZWlnaHQsICdhbW91bnQnPT4kYW1vdW50KTsKICAgICAgaWYoIWVtcHR5KCR0YXgpKSAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ11bJG5hbWVdWyd0YXgnXSA9ICR0YXg7CiAgICB9IGVsc2UgeyAvLyBkdXBsaWNhdGUgaXRlbSBqdXN0IGFkZCBxdWFudGl0eQogICAgICAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ11bJG5hbWVdWydxdWFudGl0eSddICs9ICRxdWFudGl0eTsKICAgIH0KICB9CgoKICBmdW5jdGlvbiBTZXRPcmRlckRlc2NyaXB0aW9uKCR0eHQpIHsgJHRoaXMtPl9kYXRhWydkZXNjcmlwdGlvbiddID0gc3Vic3RyKCR0eHQsMCwyNTUpOyB9CiAgZnVuY3Rpb24gU2V0T3JkZXJPYmplY3Qob3JkZXJzX29yZGVyJiAkb3JkZXIpIHsgJHRoaXMtPl9kYXRhWydvcmRlcl9vYmonXSA9ICRvcmRlcjsgfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gJmdldF9vcmRlcl9vYmplY3QoKQogIHsKICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ29yZGVyX29iaiddKSApIHJldHVybiAkdGhpcy0+X2RhdGFbJ29yZGVyX29iaiddOwogIH0KCiAgZnVuY3Rpb24gU2V0T3JkZXJUYXhBbW91bnQoJHRheCkgeyAkdGhpcy0+X2RhdGFbJ29yZGVydGF4J10gPSAkdGF4OyB9CiAgZnVuY3Rpb24gU2V0T3JkZXJTaGlwcGluZygkc2hpcHBpbmcpIHsgJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ10gPSAkc2hpcHBpbmc7IH0KICBmdW5jdGlvbiBTZXRJbnZvaWNlKCRpbnZvaWNlKSB7ICR0aGlzLT5fZGF0YVsnaW52b2ljZSddID0gc3Vic3RyKCRpbnZvaWNlLC0yMCk7IH0KICBmdW5jdGlvbiBTZXRPcmRlcklEKCRvcmRlcmlkKSB7ICR0aGlzLT5fZGF0YVsnb3JkZXJpZCddID0gJG9yZGVyaWQ7IH0KCiAgZnVuY3Rpb24gU2V0U3RhdHVzKCRzdGF0dXMpCiAgewogICAgc3dpdGNoKCRzdGF0dXMpIHsKICAgIGNhc2UgUEFZTUVOVF9TVEFUVVNfTk9ORToKICAgIGNhc2UgUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQ6CiAgICBjYXNlIFBBWU1FTlRfU1RBVFVTX0RFQ0xJTkVEOgogICAgY2FzZSBQQVlNRU5UX1NUQVRVU19FUlJPUjoKICAgIGNhc2UgUEFZTUVOVF9TVEFUVVNfQ0FOQ0VMTEVEOgogICAgY2FzZSBQQVlNRU5UX1NUQVRVU19PVEhFUjoKICAgIGNhc2UgUEFZTUVOVF9TVEFUVVNfUEVORElORzoKICAgICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9ICRzdGF0dXM7CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgZnVuY3Rpb24gU2V0VHJhbnNhY3Rpb25JZCgkdGlkKSB7ICR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25faWQnXSA9ICR0aWQ7IH0KICBmdW5jdGlvbiBTZXRFcnJvcigkbWVzc2FnZSkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddID0gUEFZTUVOVF9TVEFUVVNfRVJST1I7CiAgICAkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXSA9ICRtZXNzYWdlOwogIH0KCiAgZnVuY3Rpb24gU2V0Q2FuY2VsbGVkKCRtZXNzYWdlID0gJycpCiAgewogICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFBBWU1FTlRfU1RBVFVTX0NBTkNFTExFRDsKICAgIGlmKCAkbWVzc2FnZSApICR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddID0gJG1lc3NhZ2U7CiAgfQoKICBmdW5jdGlvbiBSZXNldCgpIHsgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsgfQoKICBmdW5jdGlvbiBTZXREZWNsaW5lZCgkbWVzc2FnZSA9IG51bGwpCiAgewogICAgJHRoaXMtPl9kYXRhWydzdGF0dXMnXSA9IFBBWU1FTlRfU1RBVFVTX0RFQ0xJTkVEOwogICAgJHRoaXMtPl9kYXRhWydlcnJvcl9tZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfcGF5bWVudF9kZWNsaW5lZCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0VHJhbnNhY3Rpb25TdGF0dXMoKQogIHsKICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ3N0YXR1cyddKSApIHJldHVybiAkdGhpcy0+X2RhdGFbJ3N0YXR1cyddOwogICAgcmV0dXJuIEZBTFNFOwogIH0KCiAgZnVuY3Rpb24gR2V0VHJhbnNhY3Rpb25JZCgpCiAgewogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsndHJhbnNhY3Rpb25faWQnXSkgKSByZXR1cm4gJHRoaXMtPl9kYXRhWyd0cmFuc2FjdGlvbl9pZCddOwogICAgcmV0dXJuIEZBTFNFOwogIH0KCiAgZnVuY3Rpb24gR2V0TWVzc2FnZSgpCiAgewogICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZXJyb3JfbWVzc2FnZSddKSApIHJldHVybiAkdGhpcy0+X2RhdGFbJ2Vycm9yX21lc3NhZ2UnXTsKICAgIHJldHVybiBGQUxTRTsKICB9CgogIGZ1bmN0aW9uIEZpbmlzaFRyYW5zYWN0aW9uKCkKICB7CiAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSkgKSByZXR1cm4gRkFMU0U7CiAgICAka2V5ID0gJHRoaXMtPlNhdmVTdGF0ZSh0cnVlKTsKICAgICR1cmwgPSAkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ107CiAgICAkdXJsID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR1cmwpOwogICAgJHVybCAuPSAiJmNudG50MDFkYXRha2V5PSRrZXkiOwogICAgJHVybCAuPSAnJmNudG50MDFnYXRld2F5PScuJHRoaXMtPkdldE5hbWUoKTsKICAgIHJlZGlyZWN0KCR1cmwpOwoKICB9CgogICBmdW5jdGlvbiBDaGVja0luZm8oKSB7IHJldHVybiB0cnVlOyB9CgoKICAgZnVuY3Rpb24gR2V0Rm9ybSgkcmV0dXJuaWQpIHsKICAgICAgaWYoICEkdGhpcy0+Q2hlY2tJbmZvKCkgKSByZXR1cm4gRkFMU0U7CgogICAgICAka2V5ID0gJHRoaXMtPlNhdmVTdGF0ZSh0cnVlKTsKICAgICAgJHVybCA9ICcnOwogICAgICAkdmVuZG9yTmFtZSA9ICcnOwogICAgICAkY3J5cHRLZXkgPSAnJzsKICAgICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kbW9kZScpICkgewogICAgICAgICAkdXJsID0gc2VsZjo6UFJPRF9VUkw7CiAgICAgICAgICR2ZW5kb3JOYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2RfYWNjdCcpOwogICAgICAgICAkY3J5cHRLZXkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicpOwogICAgICB9IGVsc2UgewogICAgICAgICAkdXJsID0gc2VsZjo6VEVTVF9VUkw7CiAgICAgICAgICR2ZW5kb3JOYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfYWNjdCcpOwogICAgICAgICAkY3J5cHRLZXkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVzdF90b2tlbicpOwogICAgICB9CgoKICAgICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICAgJHBhcm1zWydWUFNQcm90b2NvbCddID0gc2VsZjo6VlBTUHJvdG9jb2w7CiAgICAgICRwYXJtc1snVHhUeXBlJ10gPSAnUGF5bWVudCc7CiAgICAgICRwYXJtc1snVmVuZG9yJ10gPSAkdmVuZG9yTmFtZTsKCiAgICAgICR0cmFuc0luZm8gPSBhcnJheSgpOwogICAgICAkdHJhbnNJbmZvWydEZXNjcmlwdGlvbiddID0gJ0Vjb21tZXJjZSBPcmRlcic7CiAgICAgICRpbnRSYW5kTnVtID0gcmFuZCgwLDMyMDAwKSpyYW5kKDAsMzIwMDApOwogICAgICAkdHJhbnNJbmZvWydWZW5kb3JUeENvZGUnXSA9ICR0aGlzLT5fZGF0YVsnb3JkZXJpZCddIC4gJy0tLScgLiAkaW50UmFuZE51bTsKICAgICAgJHRyYW5zSW5mb1snQ3VycmVuY3knXSA9ICggaXNzZXQoJHRoaXMtPl9kYXRhWydjdXJyZW5jeWNvZGUnXSkgKSA/ICR0aGlzLT5fZGF0YVsnY3VycmVuY3ljb2RlJ10gOiAnR0JQJzsKCiAgICAgICR0cmFuc0luZm9bJ1N1Y2Nlc3NVUkwnXSA9IHN0cl9yZXBsYWNlKCAnJmFtcDsnLCAnJicsICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ3JldHVybicsICRyZXR1cm5pZCwgJycsCiAgICAgICAgIGFycmF5KCdvcmRlcl9pZCc9PiR0aGlzLT5fZGF0YVsnb3JkZXJpZCddLCAnbXljdXN0b20nPT4ka2V5KSwgJycsIHRydWUpICk7CiAgICAgICR0cmFuc0luZm9bJ0ZhaWx1cmVVUkwnXSA9IHN0cl9yZXBsYWNlKCAnJmFtcDsnLCAnJicsICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ3JldHVybicsICRyZXR1cm5pZCwgJycsCiAgICAgICAgIGFycmF5KCdvcmRlcl9pZCc9PiR0aGlzLT5fZGF0YVsnb3JkZXJpZCddLCAnbXljdXN0b20nPT4ka2V5KSwgJycsIHRydWUpICk7CgogICAgICAkdHJhbnNJbmZvWydTZW5kRU1haWwnXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kX2VtYWlsX3NlbGVjdGVkJyk7CiAgICAgICR0cmFuc0luZm9bJ1ZlbmRvckVNYWlsJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVuZG9yX2VtYWlsJyk7CgogICAgICAvLyBBZGQgYWRkcmVzcyBkZXRhaWxzCiAgICAgIGlmICggaXNzZXQoJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXSkgKSB7CiAgICAgICAgICRhZGRyZXNzID0gJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXTsKICAgICAgICAgJHRyYW5zSW5mb1snQmlsbGluZ1N1cm5hbWUnXSA9ICRhZGRyZXNzLT5nZXRfbGFzdG5hbWUoKTsKICAgICAgICAgJHRyYW5zSW5mb1snQmlsbGluZ0ZpcnN0bmFtZXMnXSA9ICRhZGRyZXNzLT5nZXRfZmlyc3RuYW1lKCk7CiAgICAgICAgICRhZGRyZXNzID0gJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXTsKICAgICAgICAgJHRyYW5zSW5mb1snQmlsbGluZ0FkZHJlc3MxJ10gPSAkYWRkcmVzcy0+Z2V0X2FkZHJlc3MxKCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0JpbGxpbmdBZGRyZXNzMiddID0gJGFkZHJlc3MtPmdldF9hZGRyZXNzMigpOwogICAgICAgICAkdHJhbnNJbmZvWydCaWxsaW5nQ2l0eSddID0gJGFkZHJlc3MtPmdldF9jaXR5KCk7CiAgICAgICAgIGlmICgkYWRkcmVzcy0+Z2V0X2NvdW50cnkoKSA9PSAnVVMnKQogICAgICAgICAgICAkdHJhbnNJbmZvWydCaWxsaW5nU3RhdGUnXSA9ICRhZGRyZXNzLT5nZXRfc3RhdGUoKTsKICAgICAgICAgJHRyYW5zSW5mb1snQmlsbGluZ1Bvc3RDb2RlJ10gPSAkYWRkcmVzcy0+Z2V0X3Bvc3RhbCgpOwogICAgICAgICAkdHJhbnNJbmZvWydCaWxsaW5nQ291bnRyeSddID0gJGFkZHJlc3MtPmdldF9jb3VudHJ5KCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0JpbGxpbmdQaG9uZSddID0gJGFkZHJlc3MtPmdldF9waG9uZSgpOwoKICAgICAgICAgJHRyYW5zSW5mb1snQ3VzdG9tZXJFTWFpbCddID0gJGFkZHJlc3MtPmdldF9lbWFpbCgpOwoKICAgICAgfQoKICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnc2hpcHBpbmdfYWRkcmVzcyddKSApIHsKICAgICAgICAgJGFkZHJlc3MgPSAkdGhpcy0+X2RhdGFbJ3NoaXBwaW5nX2FkZHJlc3MnXTsKICAgICAgICAgJHRyYW5zSW5mb1snRGVsaXZlcnlTdXJuYW1lJ10gPSAkYWRkcmVzcy0+Z2V0X2xhc3RuYW1lKCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0RlbGl2ZXJ5Rmlyc3RuYW1lcyddID0gJGFkZHJlc3MtPmdldF9maXJzdG5hbWUoKTsKICAgICAgICAgJHRyYW5zSW5mb1snRGVsaXZlcnlBZGRyZXNzMSddID0gJGFkZHJlc3MtPmdldF9hZGRyZXNzMSgpOwogICAgICAgICAkdHJhbnNJbmZvWydEZWxpdmVyeUFkZHJlc3MyJ10gPSAkYWRkcmVzcy0+Z2V0X2FkZHJlc3MyKCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0RlbGl2ZXJ5Q2l0eSddID0gJGFkZHJlc3MtPmdldF9jaXR5KCk7CiAgICAgICAgIGlmICgkYWRkcmVzcy0+Z2V0X2NvdW50cnkoKSA9PSAnVVMnKQogICAgICAgICAgICAkdHJhbnNJbmZvWydEZWxpdmVyeVN0YXRlJ10gPSAkYWRkcmVzcy0+Z2V0X3N0YXRlKCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0RlbGl2ZXJ5UG9zdENvZGUnXSA9ICRhZGRyZXNzLT5nZXRfcG9zdGFsKCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0RlbGl2ZXJ5Q291bnRyeSddID0gJGFkZHJlc3MtPmdldF9jb3VudHJ5KCk7CiAgICAgICAgICR0cmFuc0luZm9bJ0RlbGl2ZXJ5UGhvbmUnXSA9ICRhZGRyZXNzLT5nZXRfcGhvbmUoKTsKICAgICAgfQoKICAgICAgJGJhc2tldCA9ICcnOwogICAgICAkdG90YWwgPSAwLjAwOwogICAgICAkY291bnQgPSAwOwogICAgICBmb3JlYWNoKCAkdGhpcy0+X2RhdGFbJ2l0ZW1zJ10gYXMgJG5hbWUgPT4gJGRhdGEgKSB7CiAgICAgICAgICRuYW1lID0gc3RyX3JlcGxhY2UoIjoiLCAiICIsICRuYW1lKTsKICAgICAgICAgJGJhc2tldCAuPSAiOnskbmFtZX06IiAuICRkYXRhWydxdWFudGl0eSddIC4gIjoiIC4gbnVtYmVyX2Zvcm1hdCgkZGF0YVsnYW1vdW50J10sMiwnLicsJycpIC4gIjo6OiIgLgogICAgICAgICAgICBudW1iZXJfZm9ybWF0KCRkYXRhWydhbW91bnQnXSAqICRkYXRhWydxdWFudGl0eSddLDIsJy4nLCcnKTsKICAgICAgICAgJHRvdGFsICs9IG51bWJlcl9mb3JtYXQoJGRhdGFbJ2Ftb3VudCddICogJGRhdGFbJ3F1YW50aXR5J10sMiwnLicsJycpOwogICAgICAgICAkY291bnQrKzsKICAgICAgfQoKICAgICAgLy8gaGFjayBmb3Igc2hpcHBpbmcgKGlmIG5vdCBhIGNhcnQgaXRlbSkKICAgICAgaWYoICFlbXB0eSgkdGhpcy0+X2RhdGFbJ29yZGVyc2hpcHBpbmcnXSkgJiYgJHRoaXMtPl9kYXRhWydvcmRlcnNoaXBwaW5nJ10gPiAwICkgewogICAgICAgICAkYmFza2V0IC49ICI6Ii4kdGhpcy0+TGFuZygnc2hpcHBpbmcnKS4iOjo6OjoiIC4gbnVtYmVyX2Zvcm1hdCgkdGhpcy0+X2RhdGFbJ29yZGVyc2hpcHBpbmcnXSwyLCcuJywnJyk7CiAgICAgICAgICR0b3RhbCArPSBudW1iZXJfZm9ybWF0KCR0aGlzLT5fZGF0YVsnb3JkZXJzaGlwcGluZyddLDIsJy4nLCcnKTsKICAgICAgICAgJGNvdW50Kys7CiAgICAgIH0KCiAgICAgIC8vIHRheGVzIChub3QgdXNlZD8pCiAgICAgIGlmKCAhZW1wdHkoJHRoaXMtPl9kYXRhWydvcmRlcnRheCddKSApIHsKCSAgICAgIC8vICRwYXJtc1sndGF4X2NhcnQnXSA9IG51bWJlcl9mb3JtYXQoJHRoaXMtPl9kYXRhWydvcmRlcnRheCddLDIsJy4nLCcnKTsKICAgICAgfQoKICAgICAgJGJhc2tldCA9ICRjb3VudCAuICRiYXNrZXQ7CiAgICAgICR0cmFuc0luZm9bJ0Jhc2tldCddID0gJGJhc2tldDsKICAgICAgJHRyYW5zSW5mb1snQW1vdW50J10gPSBudW1iZXJfZm9ybWF0KCR0b3RhbCwyLCcuJywnJyk7CgogICAgICAvLyByb2xsIGFsbCB0cmFuc0luZm8gaW50byBhbiBlbmNyeXB0ZWQgcXVlcnkgc3RyaW5nCiAgICAgICRxdWVyeVN0ciA9ICR0aGlzLT5hcnJheVRvUXVlcnlTdHJpbmcoJHRyYW5zSW5mbyk7CiAgICAgIC8vIEVuY3J5cHQgb3JkZXIgZGV0YWlscyB1c2luZyBiYXNlNjQgYW5kIHRoZSBzZWNyZXQga2V5IGZyb20gdGhlIHNldHRpbmdzLgogICAgICAkcGFybXNbJ0NyeXB0J10gPSAkdGhpcy0+ZW5jcnlwdEFlcygkcXVlcnlTdHIsICRjcnlwdEtleSk7CgogICAgICAvLyBnaXZlIGV2ZXJ5dGhpbmcgdG8gc21hcnR5CiAgICAgICRnQ21zID0gY21zbXMoKTsKICAgICAgJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKICAgICAgJHNtYXJ0eSA9ICRnQ21zLT5HZXRTbWFydHkoKTsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwb3N0dXJsJywkdXJsKTsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdjaGVja291dF90ZXh0JywkdGhpcy0+TGFuZygnY2hlY2tvdXRfbWVzc2FnZScpKTsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdpbWFnZV91cmwnLCAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy8nLiR0aGlzLT5HZXROYW1lKCkuJy9pbWFnZXMvUGF5bWVudHNCeV9Ib3Jpem9udGFsXzIucG5nJyk7CgogICAgICAkc3RyID0gJyc7CiAgICAgICRmbXQgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJXMiIHZhbHVlPSIlcyIvPicuIlxuIjsKICAgICAgZm9yZWFjaCggJHBhcm1zIGFzICRrZXk9PiR2YWx1ZSApIHsKICAgICAgICAgJHN0ciAuPSBzcHJpbnRmKCRmbXQsJGtleSwoc3RyaW5nKSR2YWx1ZSk7CiAgICAgIH0KICAgICAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtdmFsdWVzJywkc3RyKTsKCiAgICAgIC8vIENUIGRlYnVnIC0gZXh0cmEgZGVidWcgaW5mbyBsb2dnZWQgaWYgcmVxdWlyZWQKICAgICAgJGV4dHJhQWRtaW5EZWJ1ZyA9IEZBTFNFOwogICAgICBpZiAoIGlzc2V0KCRleHRyYUFkbWluRGVidWcpICYmICRleHRyYUFkbWluRGVidWc9PT1UUlVFKSB7CiAgICAgICAgICR0aGlzLT5BdWRpdCggJHRoaXMtPl9kYXRhWydvcmRlcmlkJ10sICR0aGlzLT5HZXROYW1lKCksICJtb2R1bGUucGhwIDE6ICIuZGF0ZSgiZE15IEg6aTpzIikuIiwgc2Vzc2lvbl9pZDoiLnNlc3Npb25faWQoKS4iLCBJUCBBZGRyZXNzOiIuY2dlX3V0aWxzOjpnZXRfcmVhbF9pcCgpICk7CiAgICAgIH0KCiAgICAgIHJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCdmb3JtX3RlbXBsYXRlJyk7CiAgIH0KCgogICBwdWJsaWMgZnVuY3Rpb24gU2V0QmlsbGluZ0FkZHJlc3Mob3JkZXJzX2FkZHJlc3MmICRiaWxsaW5nX2FkZHkpCiAgIHsKICAgIGlmKCAhJGJpbGxpbmdfYWRkeSBpbnN0YW5jZW9mIGNnZV9hZGRyZXNzICkgcmV0dXJuIEZBTFNFOwogICAgJHRoaXMtPl9kYXRhWydiaWxsaW5nX2FkZHJlc3MnXSA9ICRiaWxsaW5nX2FkZHk7CiAgIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBTZXRTaGlwcGluZ0FkZHJlc3Mob3JkZXJzX2FkZHJlc3MmICRzaGlwcGluZ19hZGR5KQogIHsKICAgIGlmKCAhJHNoaXBwaW5nX2FkZHkgaW5zdGFuY2VvZiBjZ2VfYWRkcmVzcyApIHJldHVybiBGQUxTRTsKICAgICR0aGlzLT5fZGF0YVsnc2hpcHBpbmdfYWRkcmVzcyddID0gJHNoaXBwaW5nX2FkZHk7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIEdldFRyYW5zYWN0aW9uQW1vdW50KCkKICB7CiAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydhbW91bnQnXSkgKSByZXR1cm4gJHRoaXMtPl9kYXRhWydhbW91bnQnXTsKICAgIHJldHVybiBGQUxTRTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gU2V0VHJhbnNhY3Rpb25BbW91bnQoJHRpZCkKICB7CiAgICAkdGhpcy0+X2RhdGFbJ2Ftb3VudCddID0gJHRpZDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NhcnRpdGVtX3BvbGljeSgpCiAgewogICAgJHBvbGljeSA9IG5ldyBjZ19lY29tbV9jYXJ0aXRlbV9wb2xpY3k7CiAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X3N1YnNjcmlwdGlvbnMnKSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicpICkgewogICAgICAkcG9saWN5LT5zZXRfbWF4X3N1YnNjcmlwdGlvbnMoMSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgJHBvbGljeS0+c2V0X21heF9zdWJzY3JpcHRpb25zKDApOwogICAgfQogICAgJHBvbGljeS0+c2V0X21peGVkX3N1YnNjcmlwdGlvbnMoRkFMU0UpOwogICAgcmV0dXJuICRwb2xpY3k7CiAgfQoKCiAgZnVuY3Rpb24gR2V0Tm90aWZpY2F0aW9uT3V0cHV0KCRwcmlvcml0eT0yKQogIHsKICAgICRwcm9kbW9kZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kbW9kZScsMCk7CiAgICBpZiggISRwcm9kbW9kZSAmJiBjaGVja19sb2dpbihUUlVFKSApIHsKICAgICAgJGRhdGEgPSBuZXcgc3RkQ2xhc3M7CiAgICAgICRkYXRhLT5wcmlvcml0eSA9IDE7CiAgICAgICRkYXRhLT5odG1sID0gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ21zZ190ZXN0bW9kZScpKTsKICAgICAgcmV0dXJuICRkYXRhOwogICAgfQogIH0KCgogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIC8vIGFkZGVkIGZ1bmN0aW9ucyAtIGZyb20gU2FnZXBheSAtIGZvciBBUEkgdjMuMAogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgogICAvKioKICAgKiBQSFAncyBtY3J5cHQgZG9lcyBub3QgaGF2ZSBidWlsdCBpbiBQS0NTNSBQYWRkaW5nLCBzbyB3ZSB1c2UgdGhpcy4KICAgKgogICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IFRoZSBpbnB1dCBzdHJpbmcuCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgc3RyaW5nIHdpdGggcGFkZGluZy4KICAgKi8KICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFkZFBLQ1M1UGFkZGluZygkaW5wdXQpIHsKICAgICAkYmxvY2tTaXplID0gMTY7CiAgICAgJHBhZGQgPSAiIjsKCiAgICAgLy8gUGFkIGlucHV0IHRvIGFuIGV2ZW4gYmxvY2sgc2l6ZSBib3VuZGFyeS4KICAgICAkbGVuZ3RoID0gJGJsb2NrU2l6ZSAtIChzdHJsZW4oJGlucHV0KSAlICRibG9ja1NpemUpOwogICAgIGZvciAoJGkgPSAxOyAkaSA8PSAkbGVuZ3RoOyAkaSsrKQogICAgIHsKICAgICAgICAgJHBhZGQgLj0gY2hyKCRsZW5ndGgpOwogICAgIH0KCiAgICAgcmV0dXJuICRpbnB1dCAuICRwYWRkOwogICB9CgoKICAgLyoqCiAgICogUmVtb3ZlIFBLQ1M1IFBhZGRpbmcgZnJvbSBhIHN0cmluZy4KICAgKgogICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IFRoZSBkZWNyeXB0ZWQgc3RyaW5nLgogICAqCiAgICogQHJldHVybiBzdHJpbmcgU3RyaW5nIHdpdGhvdXQgdGhlIHBhZGRpbmcuCiAgICogQHRocm93cyBTYWdlcGF5QXBpRXhjZXB0aW9uCiAgICovCiAgIHByb3RlY3RlZCBmdW5jdGlvbiByZW1vdmVQS0NTNVBhZGRpbmcoJGlucHV0KSB7CiAgICAgICRibG9ja1NpemUgPSAxNjsKICAgICAgJHBhZENoYXIgPSBvcmQoJGlucHV0W3N0cmxlbigkaW5wdXQpIC0gMV0pOwoKICAgICAgLyogQ2hlY2sgZm9yIFBhZENoYXIgaXMgbGVzcyB0aGVuIEJsb2NrIHNpemUgKi8KICAgICAgaWYgKCRwYWRDaGFyID4gJGJsb2NrU2l6ZSkgewogICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9lbmNyeXB0aW9uX3N0cmluZycpKTsKICAgICAgfQogICAgICAvKiBDaGVjayBieSBwYWRkaW5nIGJ5IGNoYXJhY3RlciBtYXNrICovCiAgICAgIGlmIChzdHJzcG4oJGlucHV0LCBjaHIoJHBhZENoYXIpLCBzdHJsZW4oJGlucHV0KSAtICRwYWRDaGFyKSAhPSAkcGFkQ2hhcikgewogICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9lbmNyeXB0aW9uX3N0cmluZycpKTsKICAgICAgfQoKICAgICAgJHVucGFkZGVkID0gc3Vic3RyKCRpbnB1dCwgMCwgKC0xKSAqICRwYWRDaGFyKTsKICAgICAgLyogQ2hlY2ggcmVzdWx0IGZvciBwcmludGFibGUgY2hhcmFjdGVycyAqLwogICAgICBpZiAocHJlZ19tYXRjaCgnL1tbOl5wcmludDpdXS8nLCAkdW5wYWRkZWQpKSB7CiAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2Vycm9yX2VuY3J5cHRpb25fc3RyaW5nJykpOwogICAgICB9CiAgICAgIHJldHVybiAkdW5wYWRkZWQ7CiAgIH0KCgogICAvKioKICAgKiBFbmNyeXB0IGEgc3RyaW5nIHJlYWR5IHRvIHNlbmQgdG8gU2FnZVBheSB1c2luZyBlbmNyeXB0aW9uIGtleS4KICAgKgogICAqIEBwYXJhbSAgc3RyaW5nICAkc3RyaW5nICBUaGUgdW5lbmNyeXB5dGVkIHN0cmluZy4KICAgKiBAcGFyYW0gIHN0cmluZyAgJGtleSAgICAgVGhlIGVuY3J5cHRpb24ga2V5LgogICAqCiAgICogQHJldHVybiBzdHJpbmcgVGhlIGVuY3J5cHRlZCBzdHJpbmcuCiAgICovCiAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0QWVzKCRzdHJpbmcsICRrZXkpIHsKICAgLy8gQUVTIGVuY3J5cHRpb24sIENCQyBibG9ja2luZyB3aXRoIFBLQ1M1IHBhZGRpbmcgdGhlbiBIRVggZW5jb2RpbmcuCiAgIC8vIEFkZCBQS0NTNSBwYWRkaW5nIHRvIHRoZSB0ZXh0IHRvIGJlIGVuY3lwdGVkLgogICAkc3RyaW5nID0gc2VsZjo6YWRkUEtDUzVQYWRkaW5nKCRzdHJpbmcpOwoKICAgLy8gUGVyZm9ybSBlbmNyeXB0aW9uIHdpdGggUEhQJ3MgTUNSWVBUIG1vZHVsZS4KICAgJGNyeXB0ID0gbWNyeXB0X2VuY3J5cHQoTUNSWVBUX1JJSk5EQUVMXzEyOCwgJGtleSwgJHN0cmluZywgTUNSWVBUX01PREVfQ0JDLCAka2V5KTsKCiAgIC8vIFBlcmZvcm0gaGV4IGVuY29kaW5nIGFuZCByZXR1cm4uCiAgIHJldHVybiAiQCIgLiBzdHJ0b3VwcGVyKGJpbjJoZXgoJGNyeXB0KSk7CiAgIH0KCgogICAvKioKICAgKiBEZWNvZGUgYSByZXR1cm5lZCBzdHJpbmcgZnJvbSBTYWdlUGF5LgogICAqCiAgICogQHBhcmFtIHN0cmluZyAkc3RySW4gICAgICAgICBUaGUgZW5jcnlwdGVkIFN0cmluZy4KICAgKiBAcGFyYW0gc3RyaW5nICRwYXNzd29yZCAgICAgIFRoZSBlbmN5cHRpb24gcGFzc3dvcmQgdXNlZCB0byBlbmNyeXB0IHRoZSBzdHJpbmcuCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgdW5lY3J5cHRlZCBzdHJpbmcuCiAgICogQHRocm93cyBTYWdlcGF5QXBpRXhjZXB0aW9uCiAgICovCiAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0QWVzKCRzdHJJbiwgJHBhc3N3b3JkKSB7CiAgICAgIC8vIEhFWCBkZWNvZGluZyB0aGVuIEFFUyBkZWNyeXB0aW9uLCBDQkMgYmxvY2tpbmcgd2l0aCBQS0NTNSBwYWRkaW5nLgogICAgICAvLyBVc2UgaW5pdGlhbGl6YXRpb24gdmVjdG9yIChJVikgc2V0IGZyb20gJHN0cl9lbmNyeXB0aW9uX3Bhc3N3b3JkLgogICAgICAkc3RySW5pdFZlY3RvciA9ICRwYXNzd29yZDsKCiAgICAgIC8vIFJlbW92ZSB0aGUgZmlyc3QgY2hhciB3aGljaCBpcyBAIHRvIGZsYWcgdGhpcyBpcyBBRVMgZW5jcnlwdGVkIGFuZCBIRVggZGVjb2RpbmcuCiAgICAgICRoZXggPSBzdWJzdHIoJHN0ckluLCAxKTsKCiAgICAgIC8vIFRocm93IGV4Y2VwdGlvbiBpZiBzdHJpbmcgaXMgbWFsZm9ybWVkCiAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bMC05YS1mQS1GXSskLycsICRoZXgpKSB7CiAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2Vycm9yX2VuY3J5cHRpb25fc3RyaW5nJykpOwogICAgICB9CiAgICAgICRzdHJJbiA9IHBhY2soJ0gqJywgJGhleCk7CgogICAgICAvLyBQZXJmb3JtIGRlY3J5cHRpb24gd2l0aCBQSFAncyBNQ1JZUFQgbW9kdWxlLgogICAgICAkc3RyaW5nID0gbWNyeXB0X2RlY3J5cHQoTUNSWVBUX1JJSk5EQUVMXzEyOCwgJHBhc3N3b3JkLCAkc3RySW4sIE1DUllQVF9NT0RFX0NCQywgJHN0ckluaXRWZWN0b3IpOwogICAgICByZXR1cm4gc2VsZjo6cmVtb3ZlUEtDUzVQYWRkaW5nKCRzdHJpbmcpOwogICB9CgoKICAgLyoqCiAgICogQ29udmVydCBhIGRhdGEgYXJyYXkgdG8gYSBxdWVyeSBzdHJpbmcgcmVhZHkgdG8gcG9zdC4KICAgKgogICAqIEBwYXJhbSAgYXJyYXkgICAkZGF0YSAgICAgICAgVGhlIGRhdGEgYXJyYXkuCiAgICogQHBhcmFtICBzdHJpbmcgICRkZWxpbWV0ZXIgICBEZWxpbWl0ZXIgdXNlZCBpbiBxdWVyeSBzdHJpbmcKICAgKiBAcGFyYW0gIGJvb2xlYW4gJHVybGVuY29kZWQgIElmIHRydWUgZW5jb2RlIHRoZSBmaW5hbCBxdWVyeSBzdHJpbmcKICAgKgogICAqIEByZXR1cm4gc3RyaW5nIFRoZSBhcnJheSBhcyBhIHN0cmluZy4KICAgKi8KICAgcHVibGljIGZ1bmN0aW9uIGFycmF5VG9RdWVyeVN0cmluZyhhcnJheSAkZGF0YSwgJGRlbGltaXRlciA9ICcmJywgJHVybGVuY29kZWQgPSBmYWxzZSkgewogICAgICAkcXVlcnlTdHJpbmcgPSAnJzsKICAgICAgJGRlbGltaXRlckxlbmd0aCA9IHN0cmxlbigkZGVsaW1pdGVyKTsKCiAgICAgIC8vIFBhcnNlIGVhY2ggdmFsdWUgcGFpcnMgYW5kIGNvbmNhdGUgdG8gcXVlcnkgc3RyaW5nCiAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAvLyBBcHBseSB1cmxlbmNvZGUgaWYgaXQgaXMgcmVxdWlyZWQKICAgICAgICAgaWYgKCR1cmxlbmNvZGVkKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHVybGVuY29kZSgkdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgICRxdWVyeVN0cmluZyAuPSAkbmFtZSAuICc9JyAuICR2YWx1ZSAuICRkZWxpbWl0ZXI7CiAgICAgIH0KCiAgICAgIC8vIHJlbW92ZSB0aGUgbGFzdCBkZWxpbWl0ZXIKICAgICAgcmV0dXJuIHN1YnN0cigkcXVlcnlTdHJpbmcsIDAsIC0xICogJGRlbGltaXRlckxlbmd0aCk7CiAgIH0KCgogICAvKioKICAgKiBDb252ZXJ0IHN0cmluZyB0byBkYXRhIGFycmF5LgogICAqCiAgICogQHBhcmFtIHN0cmluZyAgJGRhdGEgICAgICAgUXVlcnkgc3RyaW5nCiAgICogQHBhcmFtIHN0cmluZyAgJGRlbGltZXRlciAgRGVsaW1pdGVyIHVzZWQgaW4gcXVlcnkgc3RyaW5nCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgIHB1YmxpYyBmdW5jdGlvbiBxdWVyeVN0cmluZ1RvQXJyYXkoJGRhdGEsICRkZWxpbWV0ZXIgPSAiJiIpIHsKICAgICAgLy8gRXhwbG9kZSBxdWVyeSBieSBkZWxpbWl0ZXIKICAgICAgJHBhaXJzID0gZXhwbG9kZSgkZGVsaW1ldGVyLCAkZGF0YSk7CiAgICAgICRxdWVyeUFycmF5ID0gYXJyYXkoKTsKCiAgICAgIC8vIEV4cGxvZGUgcGFpcnMgYnkgIj0iCiAgICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkcGFpcikKICAgICAgewogICAgICAgICAka2V5VmFsdWUgPSBleHBsb2RlKCc9JywgJHBhaXIpOwoKICAgICAgICAgLy8gVXNlIGZpcnN0IHZhbHVlIGFzIGtleQogICAgICAgICAka2V5ID0gYXJyYXlfc2hpZnQoJGtleVZhbHVlKTsKCiAgICAgICAgIC8vIEltcGxvZGUgb3RoZXJzIGFzIHZhbHVlIGZvciAka2V5CiAgICAgICAgICRxdWVyeUFycmF5WyRrZXldID0gaW1wbG9kZSgnPScsICRrZXlWYWx1ZSk7CiAgICAgIH0KICAgICAgcmV0dXJuICRxdWVyeUFycmF5OwogICB9CgoKCn0gLy8gY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/orig_form_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9ybSB0ZW1wbGF0ZSAqfQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0ieyRwb3N0dXJsfSI+CnskZm9ybXZhbHVlc30KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9InskaW1hZ2VfdXJsfSIgbmFtZT0ic3VibWl0Ii8+CjwvZm9ybT4=]]></data>
	</file>
	<file>
	  <filename>/templates/prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJy5wc19yYWRpbycpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcucHNfdGV4dCcpLnZhbCgnJyk7CiAgfSk7CiAgJCgnLnBzX3RleHQnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgICQoJy5wc19yYWRpbycpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKfSk7Cjwvc2NyaXB0PgoKeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvZG1vZGUnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7Y2dlX3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXByb2Rtb2RlIHNlbGVjdGVkPSRwcm9kbW9kZX0KICA8L3A+CjwvZGl2Pgo8YnIvPgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9kdWN0aW9uX3NldHRpbmdzJyl9PC9sZWdlbmQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2FnZXBheV92ZW5kb3JfbmFtZScpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXByb2RfYWNjdCIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRwcm9kX2FjY3R9Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzYWdlcGF5X3Bhc3N3b3JkJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cHJvZF90b2tlbiIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRwcm9kX3Rva2VufSIvPgogIDwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+Cgo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Rlc3Rfc2V0dGluZ3MnKX08L2xlZ2VuZD4KPHAgY2xhc3M9InBhZ2VvdmVyZmxvdyI+eyRtb2QtPkxhbmcoJ2luZm9fdGVzdF9zZXR0aW5ncycpfTwvcD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzYWdlcGF5X3ZlbmRvcl9uYW1lJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dGVzdF9hY2N0IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JHRlc3RfYWNjdH0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NhZ2VwYXlfcGFzc3dvcmQnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH10ZXN0X3Rva2VuIiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JHRlc3RfdG9rZW59Ii8+CiAgPC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KPGJyLz4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VuZF9lbWFpbHMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7aHRtbF9vcHRpb25zIG5hbWU9InskYWN0aW9uaWR9c2VuZF9lbWFpbF9zZWxlY3RlZCIgb3B0aW9ucz0kc2VuZF9lbWFpbF9vcHRpb25zIHNlbGVjdGVkPSRzZW5kX2VtYWlsX3NlbGVjdGVkfQogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndmVuZG9yX2VtYWlsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dmVuZG9yX2VtYWlsIiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIxMDAiIHZhbHVlPSJ7JHZlbmRvcl9lbWFpbH0iLz4KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygndmVuZG9yX2VtYWlsX2luZm8nKX0KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+CjwvZGl2Pgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
</module>
