<?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>Uploads</name>
	<version>1.2.3</version>
  <mincmsversion>1.0-svn</mincmsversion>
	<help>CjxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5JdCBpcyBhIG1vZHVsZSBmb3IgYWxsb3dpbmcgcGVvcGxlIHRvIHVwbG9hZCBhbmQgZG93bmxvYWQgZmlsZXMgdG8gYW5kIGZyb20geW91ciBzaXRlLiAgSXQga2VlcHMgdHJhY2sgb2Ygd2hvIHVwbG9hZGVkIGEgZmlsZSwgYW5kIHdobyBoYXMgZG93bmxvYWRlZCBpdC4gIEFzIHdlbGwsIHlvdSBjYW4gc29ydCBmaWxlcyBpbnRvIGNhdGVnb3JpZXMsIGFuZCBtYW5hZ2UgdGhlIGZpbGVzIHRoYXQgd2VyZSB1cGxvYWRlZCBsaWtlIGV2ZXJ5IGFkbWluaXN0cmF0b3Igd291bGQgZG88L3A+IAo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+VG8gdXNlIHRoaXMgbW9kdWxlLCB0byBhbGxvdyB1c2VycyB0byB1cGxvYWQgZmlsZXMgdG8geW91ciBzaXRlLCB5b3Ugc2hvdWxkIGluc3RhbGwgdGhlIG1vZHVsZSwgYW5kIHRoZW4gY3JlYXRlIG9uZSBvciBtb3JlIGNhdGVnb3JpZXMgKGEuay5hKSBkaXJlY3RvcmllcyBmb3IgdGhlIHVwbG9hZGVkIGZpbGVzIHRvIGdvIGludG8uIFRoZW4gYWRkIGEgdGFnIGludG8gYSBwYWdlIG9yIHRlbXBsYXRlIHNvbWV3aGVyZSBsaWtlIHtjbXNfbW9kdWxlIG1vZHVsZT0iVXBsb2FkcyIgY2F0ZWdvcnk9InNvbWVjYXRlZ29yeSIgbW9kZT0ic29tZW1vZGUifS4gIFdoZXJlIG1vZGUgbWF0Y2hlcyBvbmUgb2YgdGhlIG1vZGVzIGxpc3RlZCBiZWxvdy4gIFRoZSBvdXRwdXQgd2lsbCBkaWZmZXIgZGVwZW5kaW5nIHVwb24gd2hpY2ggbW9kZSB5b3Ugc2VsZWN0LjwvcD4KPHA+VGhpcyBtb2R1bGUgY2FuIHVzZSB0aGUgRnJvbnRlbmRVc2VycyBtb2R1bGUgKG9wdGlvbmFsKSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcnMgdG8gcGFydGx5IGZpbGwgaW4gdGhlIGZvcm0gd2hlbiB1cGxvYWRpbmcgZmlsZXM7PC9wPgo8aDM+UGVybWlzc2lvbnM8L2gzPgo8dWw+CjxsaT48ZW0+TWFuYWdlIFVwbG9hZHM8L2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCB0byBtYW5hZ2UgY2F0ZWdvcmllcywgYW5kIHRoZSBmaWxlcyB3aXRoaW4gdGhlbS48L2xpPgo8bGk+PGVtPk1vZGlmeSBUZW1wbGF0ZXM8L2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCBlZGl0IGFueSBvZiB0aGUgdGVtcGxhdGVzLjwvbGk+CjxsaT48ZW0+TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMvZW0+IHBlcm1pc3Npb24gaXMgbmVlZGVkIGFueSBvZiB0aGUgZmlsZSBzZXR0aW5ncy48L2xpPgo8L3VsPgo8aDM+RW1haWxpbmc8L2gzPgo8cD5UaGlzIG1vZHVsZSBpcyBjYXBhYmxlIG9mIHNlbmRpbmcgYW4gZW1haWwgd2hlbmV2ZXIgYSBmaWxlIGlzIHVwbG9hZGVkLCBzZWUgdGhlIHByZWZlcmVuY2VzIHRhYi4gIEhvd2V2ZXIsIHRvIGRvIHRoaXMgdGhlIDxiPkNNU01haWxlcjwvYj4gcGFja2FnZSBtdXN0IGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC4gIFRoaXMgaXMgYW4gPGVtPm9wdGlvbmFsPC9lbT4gc3RlcCwgYW5kIGlmIHRoZSBDTVNNYWlsZXIgbW9kdWxlIGlzIG5vdCBpbnN0YWxsZWQsIG5vdGhpbmcgd2lsbCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIsIG9ubHkgYSBsb2cgbWVzc2FnZSB3aWxsIGJlIHBsYWNlZCBpbnRvIHRoZSBhZG1pbiBsb2c8L3A+CjxoMz5TeXN0ZW0gU2V0dGluZ3M8L2gzPgo8cD48Yj5Ob3RlOjwvYj4gVGhpcyBtb2R1bGUgZG9lcyBub3QgYnlwYXNzIG9yIGdldCBwYXN0IGFueSBmaWxlIHNpemUgbGltaXRhdGlvbnMgaW4gcGhwLiAgSXQgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVtLiAgVGhlcmVmb3JlIHlvdSBtYXkgbmVlZCB0byBtb2RpZnkgeW91ciBwaHAuaW5pIGZpbGUgYW5kL29yIHlvdXIgaHR0cGQuY29uZiBmaWxlKHMpIHRvIGFsbG93IHlvdSB0byB1cGxvYWQgZmlsZXMgYXMgbGFyZ2UgYXMgd2hhdCB5b3UgaGF2ZSBzZXQgaW4gdGhlIHVwbG9hZHMgbW9kdWxlIHByZWZlcmVuY2VzLjwvcD4KPGgzPkFwYWNoZSBOb3RlczwvaDM+CjxwPkluIG9yZGVyIHRvIGFsbG93IGxhcmdlIGZpbGUgdXBsb2FkcywgeW91IG1heSBuZWVkIHRvIG1vZGlmeSB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBwYXJhbWV0ZXIgaW4geW91ciBwaHAuaW5pICBJbiBhZGRpdGlvbiwgdGhlIExpbWl0UmVxdWVzdEJvZHkgcGFyYW1ldGVyIGluIHlvdXIgYXBhY2hlIGNvbmZpZ3VyYXRpb24sIG1heSBuZWVkIHRvIGJlIGFkanVzdGVkIHRvIG1hdGNoIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlcjwvcD4KPHA+Tm90ZTogIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlciBjYW4gYmUgc3BlY2lmaWVkIGluIGJ5dGVzLCBraWxvYnl0ZXMsIG9yIG1lZ2FieXRlcywgaG93ZXZlciB0aGUgTGltaXRSZXF1ZXRCb2R5IHBhcmFtZXRlciBpcyBvbmx5IHNwZWNpZmllZCBpbiBieXRlczwvcD4KPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0ZW1wbGF0ZT0idGVtcGxhdGUiIC0gVXNlIGEgdGVtcGxhdGUgd2l0aCB0aGlzIG5hbWUgZm9yIHRoaXMgcmVwb3J0IG9yIGZvcm0uICBUaGlzIHRlbXBsYXRlIGF1dG9tYXRpY2FsbHkgcHVsbHMgYSB0ZW1wbGF0ZSB3aXRoIHRoZSBtYXRjaGluZyBuYW1lIGZyb20gdGhlIGFwcHJvcHJpYXRlIGxpc3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBtb2RlPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB1c2Vfc3RyaWN0X3JlZ2V4cD0idXNlX3N0cmljdF9yZWdleHAiIC0gVGhlIGZpbHRlciBmaWVsZCBpcyB1c2VkIGFzIGEgc3RyaWN0IHJlZ2V4cCB3aXRob3V0IHByZXByb2Nlc3Npbmcgb2Ygc3BhY2VzPC9saT48bGk+bW9kZT0ibW9kZSIgLSAKICA8dWw+CiAgPGxpPjxlbT5kZXRhaWxlZDwvZW0+IC0gRGlzcGxheSBhIGRldGFpbGVkIGxpc3Qgb2YgYWxsIGZpbGVzIGluIHRoZSBjYXRlZ29yeTwvbGk+CiAgPGxpPjxlbT51cGxvYWQ8L2VtPiAtIERpc3BsYXkgYSBmb3JtIHRvIGFsbG93IGEgZnJvbnRlbmQgdXNlciB0byB1cGxvYWQgYSBmaWxlPC9saT4KICA8bGk+PGVtPnVybCA8aT5vcjwvaT4gbGluazwvZW0+IC0gRGlzcGxheSBhIGxpbmsgdG8gYSBmaWxlPC9saT4KICA8bGk+PGVtPnN1bW1hcnk8L2VtPiAtIERpc3BsYXkgYSBzdW1tYXJpemVkIGxpc3Qgb2YgYWxsIGZpbGVzIGluIHRoZSBjYXRlZ29yeTwvbGk+CiAgPGxpPjxlbT5zaW5nbGU8L2VtPiAtIERpc3BsYXkgYSBkZXRhaWxlZCByZXBvcnQgYWJvdXQgYSBzaW5nbGUgdXBsb2FkPC9saT4KICA8bGk+PGVtPnNpbmdsZXN1bW1hcnk8L2VtPiAtIERpc3BsYXkgYSBzdW1tYXJpemVkIHJlcG9ydCBhYm91dCBhIHNpbmdsZSB1cGxvYWQvbGk+CiAgPC91bD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IG5vX2luaXRpYWw9Im5vX2luaXRpYWwiIC0gLS1BZGQgTWUgLSBtb2R1bGU6VXBsb2FkcyBzdHJpbmc6cGFyYW1fbm9faW5pdGlhbC0tPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmaWx0ZXI9ImZpbHRlciIgLSBEaXNwbGF5IHRoZSBmaWx0ZXJpbmcgZm9ybTwvbGk+PGxpPmNhdGVnb3J5PSJ1cGxvYWRfY2F0ZWdvcnkiIC0gCmNhdGVnb3J5PSJuYW1lIgo8cD48Yj5Ob3RlOjwvYj4gQ2F0ZWdvcnkgY2FuIGJlICJhbGwiLCB3aGljaCB3aWxsIGxpc3QgYWxsIG9mIHRoZSB1cGxvYWRzIGZyb20gYWxsIDxlbT5saXN0YWJsZTwvZW0+IGNhdGVnb3JpZXM8L3A+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmaWxlX2V4dGVuc2lvbnM9ImV4dDEsZXh0MixleHQzIiAtICAKZmlsZV9leHRlbnNpb25zPSJleHQxLGV4dDIsZXh0MyIKPHA+dmFsaWQgb25seSB3aGVuIG1vZGU9dXBsb2FkLCB0aGlzIHBhcmFtZXRlciBsaW1pdHMgdGhlIHR5cGVzIG9mIGZpbGVzIHRoYXQgY2FuIGJlIHVwbG9hZGVkLiAgSXQgb3ZlcnJpZGVzIGFueSBzZXR0aW5ncyBpbiB0aGUgbW9kdWxlIHByZWZlcmVuY2VzLjwvcD48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNvcnRvcmRlcj0ic29ydG9yZGVyIiAtIAogIDxwPlNvcnQgT3JkZXJzCiAgPHVsPgogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRhdGU8L2xpPgogIDxsaT48ZW0+ZGF0ZV9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgZGF0ZTwvbGk+CiAgPGxpPjxlbT5uYW1lX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgbmFtZTwvbGk+CiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBuYW1lPC9saT4KICA8bGk+PGVtPnNpemVfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBzaXplPC9saT4KICA8bGk+PGVtPnNpemVfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIHNpemU8L2xpPgogIDxsaT48ZW0+ZGVzY19hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4KICA8bGk+PGVtPmRlc2NfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4KICA8bGk+PGVtPmF1dGhvcl9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGF1dGhvcjwvbGk+CiAgPGxpPjxlbT5hdXRob3JfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGF1dGhvcjwvbGk+CiAgPGxpPjxlbT5pcF9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGlwIGFkZHJlc3M8L2xpPgogIDxsaT48ZW0+aXBfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGlwIGFkZHJlc3M8L2xpPgogIDxsaT48ZW0+cmFuZG9tPC9lbT4gLSBSYW5kb20gc29ydCBvcmRlcjwvbGk+CiAgPC91bD4KICA8L3A+PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBjb3VudD0iTiIgLSAKY291bnQ9Ik4iCjxwPkEgcGFyYW1ldGVyIHRvIGxpc3Qgb25seSB0aGUgZmlyc3QgTiByZXN1bHRzIG9mIHRoZSBxdWVyeS4gIFBhZ2luYXRpb24gd291bGQgYmUgYmV0dGVyLCBidXQgdGhpcyB3aWxsIGRvIHRoZSB0cmljayBmb3Igbm93PC9wPjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdXBsb2FkX2lkPSJpZCIgLSAKdXBsb2FkX2lkPSJpZCIgLSBzcGVjaWZ5IGEgc2luZ2xlIGZpbGUgZm9yIHRoZSB1cmwvbGluayBvciBzaW5nbGUgbW9kZXMgKGFib3ZlKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbm9hdXRob3I9ImZhbHNlIiAtIEhpZGUgdGhlIGF1dGhvciBmaWVsZCBmcm9tIHRoZSB1cGxvYWQgZm9ybS4gIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgdmFsaWQgd2hlbiBtb2RlPSd1cGxvYWQnLiAgSWYgVGhlIEZyb250ZW5kVXNlcnMgbW9kdWxlIGlzIHByZXNlbnQsIGFuZCBhIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbiwgYSBoaWRkZW4gZmllbGQgd2lsbCBob2xkIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJuYW1lPC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBrZXk9Im51bGwiIC0gUHJvdmlkZSBhbiBhZGRpdGlvbmFsIGtleSB0byB0aGUgbW9kdWxlIGZvciBmdXJ0aGVyIG9yZ2FuaXppbmcgdXBsb2Fkcy4gIFRoaXMga2V5IGNvdWxkIGJlIGFuIGVuY29kZWQgc3RyaW5nIGxpa2U6ICdmZXVzZXJzOnVpZCcsIGV0Yy4gIFRoaXMgcGFyYW1ldGVyIGlzIHVzdWFsbHkgb25seSBuZWVkZWQgd2hlbiBlbWJlZGRpbmcgdGhlIHVwbG9hZHMgbW9kdWxlIGludG8gYW5vdGhlciBtb2R1bGU8L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==</help>
	<about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtyb2JAdGVjaGNvbS5keW5kbnMub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMi4zPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+CjxwPlZlcnNpb24gMS4wLiAtIFNlcHRlbWJlciAyMDA1LjwvcD4KPHA+IEluaXRpYWwgUmVsZWFzZS48L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjAxLiAtIFNlcHRlbWJlciAyMDA1PC9wPgo8cD5NaW5vciBmaXhlcy48L3A+PC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDIuIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBzb3J0IG9yZGVyPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wMy4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+Rml4IHJlZ2FyZGluZyBjb25mbGljdCBpbiB0ZW1wbGF0ZSBuYW1lczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDQuIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkFkZGVkIGFiaWxpdHkgdG8gcmUtc2NhbiBhIGRpcmVjdG9yeSwgYW5kIHRvIHVwbG9hZCBmaWxlcyBmcm9tIHRoZSBhZG1pbiBwYWdlPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wNS4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+Rml4ZWQgc29tZSBQSFAgdmFyaWFibGUgaXNzdWVzPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wNi4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+QWRkZWQgYXV0aG9yIGZpZWxkIHRvIHRoZSBhZG1pbiBwYW5lbCB1cGxvYWQgZm9ybSwgYWRkZWQgYSBzdW1tYXJ5IGZpZWxkLCBhbmQgbWFkZSBkZXNjcmlwdGlvbiBhIHRleHQgYXJlYSwgYW5kIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBmaWxlIG5hbWU8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjA3LiAtIFNlcHRlbWJlciAyMDA1PC9wPgo8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byByZW5hbWUgZmlsZXMgYW5kIGZpeGVkIGEgc2NhbiBlcnJvcjwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDguIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkJldHRlciBoYW5kbGluZyBvZiBuYW1lcyB3aXRoIHNwYWNlcywgYW5kIGEgZmV3IG1pbm9yIGVycm9ycyBmaXhlZC4gIEFkZGVkIHN3ZWRpc2ggdHJhbnNsYXRpb24gKHRoYW5rcyB3ZXN0aXMpPC9wPjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMC4gLSBPY3RvYmVyIDIwMDU8L3A+CiA8dWw+CiAgIDxsaT5Nb2RpZmllZCBBdHRlbXB0VXBsb2FkIGZ1bmN0aW9uIHNvIGl0IGNvdWxkIGJlIGNhbGxlZCBleHRlcm5hbGx5PC9saT4KICAgPGxpPkFkZGVkIEdldFVwbG9hZERldGFpbHMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZGV0YWlscyBhYm91dCBhIG1vZHVsZSwgaW5jbHVkaW5nIGEgbGluazwvbGk+CiAgIDxsaT5BZGRlZCBSZWRpcmVjdHMgc28gdGhhdCB3b3JraW5nIHdpdGggdGhlIG1vZHVsZSBpcyBhbG90IG5pY2VyLCBpdCByZXR1cm5zIHRvIHRoZSByaWdodCB0YWI8L2xpPgogICA8bGk+Q2hhbmdlZCB0aGUgZnJvbnQgdGVtcGxhdGUgdG8gbG9vayBhIGxpdHRsZSBiZXR0ZXIgYW5kIG1ha2UgbW9yZSBzZW5zZTwvbGk+CiAgIDxsaT5GaXhlcyB0byB0aGUgdXBsb2FkcyBzdHVmZiBzbyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBzZXQsIGFuZCBuYW1lIGFuZCBzdW1tYXJ5IGFyZSBwdXQgaW4gdGhlIHJpZ2h0IHBsYWNlPC9saT4KICAgPGxpPkZpeGVzIHRvIGV2ZW4gYmV0dGVyIGhhbmRsZSBzcGFjZXMgaW4gbmFtZXM8L2xpPgogICA8bGk+T3B0aW9uYWx5IHBsYWNlIGR1bW15IGluZGV4Lmh0bWwgZmlsZXMgaW4gZWFjaCB1cGxvYWQgZGlyZWN0b3J5PC9saT4KICAgPGxpPklmIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBuYW1lLCBhbmQgbm8gZXh0ZW5zaW9uIGlzIGdpdmVuLCB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBvcmlnaW5hdGluZyBmaWxlIChpZiBhbnkgZXhpc3RzIGlzIHVzZWQ8L2xpPgogPC91bD4KIDxwPjxlbT48Yj5JbXBvcnRhbnQhPC9iPjwvZW0+PGJyLz5JdCBpcyBub3QgcG9zc2libGUgdG8gdXBncmFkZSBmcm9tIGFueSBvdGhlciB2ZXJzaW9uIG9mIHRoZSBVcGxvYWRzIG1vZHVsZSB0byAxLjEuMC4gIFRoaXMgaXMgZHVlIHRvIHNvbWUgZXJyb3JzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBkYXRhYmFzZSByb3V0aW5lcywgYW5kIGV2ZW4gaW4gdGhlIHVwZ3JhZGUgcm91dGluZSBpbiAxLjAuNi4gIFlvdSBtdXN0IGRlLWluc3RhbGwgdGhlIG9sZCB2ZXJzaW9uLCBhbmQgdGhlbiByZS1pbnN0YWxsIHRoZSBuZXcgdmVyZXNpb24uIFRoaXMgd2lsbCBjYXVzZSBzaWduaWZpY2FudCBkaWZmaWN1bHR5IGlmIHlvdSBoYXZlIGRzY3JpcHRpb25zLCBldGMsIGluIHlvdXIgdGFibGVzPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjEuIC0gT2N0b2JlciwgMjAwNTwvcD4KPHA+Rml4ZWQgYSBjb3VwbGUgb2YgbWlub3IgYnVncyBpbiB0aGUgR2V0VXBsb2FkRGV0YWlscyBhbmQgYWRkZWQgYW5vdGhlciBsaW5rIChvciBhIHVybCkgdG8gdGhlIHVwbG9hZGVkIGZpbGUuPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjIuIC0gT2N0b2JlciwgMjAwNTwvcD4KPHA+Rml4ZWQgdGhlIFVSTCBmaWVsZCBpbiBHZXRVcGxvYWREZXRhaWxzIHRvIHJldHVybiBhIGRvd25sb2FkIGxpbmsgYW5kIGFkZGVkIGFuIGFic3VybCBmaWVsZCB3aGljaCByZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlIG9uIHRoZSB3ZWJzZXJ2ZXIuICBDbGlja3Mgb24gdGhpcyBsaW5rIHdpbGwgbm90IGJlIGNvdW50ZWQ8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMy4gLSBPY3RvYmVyLCAyMDA1PC9wPgo8cD5GaXhlZCB0aGUgdXBncmFkZSBwcm9ibGVtIGZyb20gdGhlIDEuMC54IHNlcmllcy4gIFVzZXJzIG9mIHRoZSAxLjAueCBzZXJpZXMgc2hvdWxkIGJlIGFibGUgdG8gdXBncmFkZSB0byAxLjEuMyBub3cgd2l0aCBubyBkaWZmaWN1bHR5LiA8Yj5UaG9zZSBhcmUgZmFtb3VzIGxhc3Qgd29yZHMsIHBsZWFzZSBiYWNrdXAgZmlyc3Q8L2I+LiBGaXhlZCB0aGUgY29udGVudCByZWRpcmVjdCB0aGluZ3MgdGhhdCB3ZXJlIGlycml0YXRpbmcgbWUuICBBbHNvIGFkZGVkIGNhdGVnb3J5PWFsbCB0byBsaXN0IGFsbCBvZiB0aGUgdXBsb2FkcyBpbiBhbGwgbGlzdGFibGUgY2F0ZWdvcmllcyA8ZW0+KGxldHMgYWxsIGhvcGUgSSBnb3QgdGhlIHNxbCBmaWd1cmVkIG91dCBwcm9wZXJseSk8L2VtPi48L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNC4gLSBPY3RvYmVyLCAyMDA1PC9wPgo8cD5BZGRlZCB0aGUgY291bnQgcGFyYW1ldGVyIHRvIGxpc3Qgb25seSB0aGUgZmlyc3QgTiByZWNvcmRzLCBhbmQgYWRkZWQgInN1bW1hcnlsaW5rIiwgYW5kICJjYXRlZ29yeSIgdG8gdGhlIHRlbXBsYXRlcyBmb3Igd2VzdGlzLiAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byB1c2UgdGhlbSByZXNldCB5b3VyIHRlbXBsYXRlcyBiYWNrIHRvIGRlZmF1bHQuPC9wPjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNS4gLSBOb3ZlbWJlciwgMjAwNTwvcD4KPHA+QWRkZWQgZW1haWwgbm90aWZpY2F0aW9uIGFuZCBzb21lIGJ1ZyBmaXhlczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS42LiAtIE5vdmVtYmVyLCAyMDA1PC9wPgo8cD5BZGRlZCBhbiBhcGkgZnVuY3Rpb24gYW5kIGZpeGVkIHNvbWUgcmVkaXJlY3Rpb24gc3R1ZmY8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNy4gLSBOb3ZlbWJlciwgMjAwNTwvcD4KPHA+TW9yZSBBUEkgZnVuY3Rpb25zLCBhbmQgbm93IGlnbm9yZSBkb3QgZmlsZXMgd2hlbiBzY2FubmluZy4gIEVtYWlsIG5vdGlmaWNhdGlvbiBpcyBub3cgaW4uPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjguIC0gSmFudWFyeSwgMjAwNjwvcD4KPHA+KiBJbXByb3ZlZCBkb2NzIHdydCBhcGFjaGUgYW5kIHBocCBjb25maWdzLjwvcD4KPHA+KiBGaXhlZCBwcm9ibGVtIHdoZXJlIGZpbGVzaXplIHdhcyBzaG93aW5nIHVwIGFzIDAuPC9wPgo8cD4qIE1vZGlmaWVkIHBlcm1pc3Npb25zIHRvIGJlIG1vcmUgZ3JhbnVsYXI8L3A+CjxwPiogQWRkZWQgc29tZSBjb21tZW50cyBhbmQgdmVyYm9zaXR5IHRvIHRoZSBjYXRlZ29yeSBhbmQgdXBsb2FkcyBmb3JtcyBpbiB0aGUgYWRtaW4gc2VjdGlvbjwvcD4KPHA+KiBBZGRlZCAicmFuZG9tIiBzb3J0IG9yZGVyPC9wPgo8cD4qIFNvbWUgUEhQNSBmaXhlczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS45LiAtIEphbnVhcnksIDIwMDY8L3A+CjxwPiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXBsb2FkIGEgdGh1bWJuYWlsIGltYWdlPC9wPgo8cD4qIFNvbWUgaW1wcm92ZWQgYXVkaXRpbmc8L3A+CjxwPiogeG1sIG5vdyBhZGRlZCB0byB0aGUgZGVmYXVsdCBmaWxlIHR5cGVzIChuZXcgaW5zdGFsbHMgb25seSk8L3A+CjxwPiogQWRkZWQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcmVzZXQgdG8gZGVmYXVsdHMgYnV0dG9ucyBvZiB0aGUgdGVtcGxhdGUgcGFnZXMuPC9wPgo8cD4qIEFkZGVkIHRoZSBmaWxlX2V4dGVuc2lvbnMgcGFyYW1ldGVyIGZvciB0aGUgdXBsb2FkIGZvcm08L3A+CjxwPiogVGhlIGN1cnJlbnQgY2F0ZWdvcnkgc2VsZWN0ZWQgaW4gdGhlIGZpbGVzIGZpbHRlciBpcyBzdGlja3kuCjxwPiogQWRkZWQgYSBwcmVmZXJlbmNlIHRvIGVuZm9yaWNlIGZpbGVuYW1lIGV4dGVuc2lvbnMgKGRlZmF1bHRzIHRvIG9uKTwvcD4KPHA+KiBBZGRlZCBhIGxpbmsgdG8gdGhlIGVkaXQgcGFnZSwgaW4gdGhlIG5hbWUgY29sdW1uIG9mIHRoZSBmaWxlcyBsaXN0LjwvcD4KPHA+KiBNaW5vciBjaGFuZ2VzIHRvIHRoZSBsYXlvdXQgYW5kIHRleHQgdG8gYWRkIGNsYXJpdHkuPC9wPgo8cD4qIEFkZGVkIGRvd25sb2FkX3VybCBhcyBhbiBhdmFpbGFibGUgc21hcnR5IHRhZyBpbiB0aGUgdGVtcGxhdGVzPC9wPgo8bGk+CjxwPlZlcnNpb24gMS4xLjEwLiAtIEZlYnJ1YXJ5LCAyMDA2PC9wPgo8cD4qIFN1bW1hcnkgbm93IGRlZmF1bHRzIHRvIHRoZSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSBpZiBub25lIGlzIHNwZWNpZmllZDwvcD4KPHA+KiBOb3cgY29ycmVjdGx5IGhhbmRsZSBpZiB0aGUgdGh1bWJuYWlsIGV4dGVuc2lvbiBpcyBub3QgaW4gdGhlIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0PC9wPgo8cD4qIE5vIGxvbmdlciBkaXNwbGF5IGFueSBjb250ZW50IGluIHRoZSBmaWxlcyB0YWIgaWYgdGhlcmUgYXJlIG5vIGNhdGVnb3JpZXMgZGVmaW5lZDwvcD4KPHA+KiBEaXNwbGF5IGEgbGluayBpbiB0aGUgZXJyb3IgcGFnZSB0aGF0IHRha2VzIHlvdSBiYWNrIHRvIHRoZSBtYWluIGFkbWluIHBhbmVsPC9wPgo8cD4qIEFsbG93IGZvciByZXBsYWNpbmcgb2YgdXBsb2FkZWQgZmlsZXM8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMTEuIC0gTWFyY2gsIDIwMDY8L3A+CjxwPkFkZGVkIHRoZSBhYmlsaXR5IGZvciBhIGxpbmsgdG8gYSBkZXRhaWxlZCBwYWdlIHdoZW4gaW4gc3VtbWFyeSBtb2RlLjwvcD4KPHA+U3BsaXQgdGhlIGRlZmF1bHQgYWN0aW9uIGFuZCBkZWZhdWx0YWRtaW4gYWN0aW9ucyBpbnRvIHNlcGFyYXRlIGZpbGVzLCBmb3IgYSBiaXQgb2YgbWVtb3J5IGltcHJvdmVtZW50LCBob3BlZnVsbHk8L3A+CjxwPkFkZCB0aGUgYWJpbGl0eSB0byByZWRpcmVjdCB0byBhbm90aGVyIHBhZ2UgYWZ0ZXIgYSBmcm9udGVuZCB1c2VyIHVwbG9hZGVkIGEgZmlsZTwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS4xMi4gLSBNYXJjaCwgMjAwNjwvcD4KPHA+QWRkZWQgdGhlIHNpbmdsZXN1bW1hcnkgbW9kZSB0byBkaXNwbGF5IGEgc2luZ2xlIHVwbG9hZCBpbiBzdW1tYXJ5IG1vZGU8L1A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMTMuIC0gQXByaWwsIDIwMDY8L3A+CjxwPkFkZGVkIG9wdGlvbmFsIGZpbHRlcmluZyBvbiB0aGUgZnJvbnRlbmQsIGFuZCBhIGNvdXBsZSBvZiBleHRyYSBwYXJhbWV0ZXJzIHRvIGdvIHdpdGggaXQ8L3A+CjxwPkZpeGVkIGEgcHJvYmxlbSB3aGVyZSBpdCB3b3VsZCBhbGxvdyB5b3UgdG8gZW50ZXIgYSBibGFuayBwYXRoIHdoZW4gY3JlYXRpbmcgYSBjYXRlZ29yeTwvcD4KPHA+U3BsaXQgc3R1ZmYgaW50byAoc29tZSkgc2VwYXJhdGUgYWN0aW9uIGZpbGVzIGZvciBzb21lIGhvcGVmdWwgcGVyZm9ybWFuY2UgaW5jcmVhc2VzPC9wPgo8cD5BZGRlZCBjb3B5cmlnaHQgbm90aWNlczwvcD4KPHA+Q2hhbmdlZCAob3B0aW9uYWwpIGRlcGVuZGVuY3kgZnJvbSBVc2VySUQgdG8gRnJvbnRFbmRVc2VycyBNb2R1bGUuPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4yLjEgLSBBcHJpbCwgMjAwNjwvcD4KPHA+Q2hhbmdlZCBfc2NhbkRpcmVjdG9yeSB0byBhbiBBUEkgZnVuY3Rpb24gU2NhbkRpcmVjdG9yeSBhbmQgdGhlbiBhZGRlZCBTbWFydFNjYW5EaXJlY3RvcnkgdG8gc2NhbiB0aGUgZGlyZWN0b3J5IGJlZm9yZSBkaXNwbGF5aW5nIHRoZSBzdW1tYXJ5IG9yIGRldGFpbCBsaXN0aW5nIHRvIGhhbmRsZSB0aGUKY2FzZSB3aGVyZSBzb21lYm9keSB1cGxvYWRlZCBmaWxlcyB2aWEgRlRQIG9yIHNvbWV0aGluZyBhbmQgZGlkIG5vdCBnbyBpbnRvIHRoZSBhZG1pbiBzZWN0aW9uIHRvIHVwZGF0ZSB0aGUgY2F0ZWdvcmllcy48L3A+CjxwPkNvcnJlY3Rpb24gdG8gYWxsIGRiIGFjY2VzcyBzdHVmZi4gSG9wZWZ1bGx5IHByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgaW5jcmVhc2UuPC9wPgo8cD5GaXhlcyB0byB0aGUgYWJvdXQgc3R1ZmYsIG5vdyB1c2UgQ3JlYXRlUGFyYW1ldGVyPC9wPgo8cD5BZGRlZCB0aGUgdXBsb2FkX3RlbXBsYXRlLCBzdW1tYXJ5X3RlbXBsYXRlLCBhbmQgZGV0YWlsX3RlbXBsYXRlIChvcHRpb25hbCkgcGFyYW1ldGVyPC9wPgo8cD5BZGRlZCB0aGUgbm9hdXRob3IgcGFyYW1ldGVyLCBhbmQgdGhlIGtleSBwYXJhbWV0ZXIuICBUaGUga2V5IHBhcmFtZXRlciBhbGxvd3MgdGhlIHVwbG9hZHMgbW9kdWxlIHRvIGJlIGVtYmVkZGVkIGludG8gb3RoZXIgbW9kdWxlczwvcD4KPHA+TW92ZWQgdG8gdW5kZXIgdGhlIGNvbnRlbnQgbWVudSwgYW5kIGVudGl0bGVkICdGaWxlcyAoVXBsb2FkIE1vZHVsZSknPC9wPjsKPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMi4yIC0gSnVuZSwgMjAwNgo8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBoYXZlIG11bHRpcGxlIGRhdGFiYXNlIHRlbXBsYXRlcywgYW5kIHRvIHNlbGVjdCBvbmUgb24gdGhlIHRhZyB3aXRoIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuPC9wPgo8cD5GaXhlZCBhbiBpc3N1ZSB3aGVyZSBmaWxlcyB3ZXJlIGdldHRpbmcgY29ycnVwdGVkIG9uIGRvd25sb2FkPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4yLjMgLSBKdW5lLCAyMDA2CjxwPkZpeGVzIHRvIHVzZSBhZG9kYi1saXRlIHByb3BlciwgcmF0aGVyIHRoYW4gdGVkcyBoYWNrPC9wPgo8cD5EZXRhaWwgbGluayBub3cgZGlzcGxheXMgaW5saW5lPC9wPgo8cD5PdGhlciBtaW5vciB0d2Vha3MgdGhhdCBJIGNhbnQgcmVtZW1iZXI8L3A+CjwvbGk+CjwvdWw+PGJyIC8+</about>
	<description>A module that allows users to upload files, and allows you to manage them.</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIEF1dGhvcjogUm9iZXJ0IENhbXBiZWxsIDxyb2JAdGVjaGNvbS5keW5kbnMub3JnPgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiR0bXBfcGFyYW1zID0gYXJyYXkoKTsKaWYgKGlzc2V0ICgkcGFyYW1zWydoaWRkZW5fcGFyYW1zJ10pICkKICB7CiAgICAkdG1wX3BhcmFtcyA9ICR0aGlzLT5leHBsb2RlX3dpdGhfa2V5KCRwYXJhbXNbJ2hpZGRlbl9wYXJhbXMnXSk7CiAgfQokcGFyYW1zID0gYXJyYXlfbWVyZ2UoICRwYXJhbXMsICR0bXBfcGFyYW1zICk7Ci8vIGNoZWNrIGZvciByZXF1aXJlZCBhcmd1bWVudHMKaWYgKCFpc3NldCAoJHBhcmFtc1snbW9kZSddKSApCiAgewogICAgLy8gaWYgbW9kZSBvciBjYXRlZ29yeSBpc24ndCBzZXQuLi4gd2UgZG9uJ3QgZGlzcGxheSBhbnl0aGluZwogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJICAgICAgJHRoaXMtPkxhbmcgKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICByZXR1cm47CiAgfQogICAgICAgIAovLyBzZXR1cAokdGVtcGxhdGUgPSAnJzsKJGZpbGV0ZW1wbGF0ZSA9IGZhbHNlOwokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRyb3dhcnJheSA9IGFycmF5ICgpOwoKLy8gbW9kZSBpcyBzZXQsIG5vdyBkZWNpZGUgd2hhdCB0byBkbwovLyBoYW5kbGUgc3RoZSBzaW1wbGUgc3R1ZmYgKG9uZSBzaW5nbGUgbGluaykKaWYgKCRwYXJhbXNbJ21vZGUnXSA9PSAndXBsb2FkJykKICB7CiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydjYXRlZ29yeSddICkgKQogICAgICB7CgkvLyBpZiBtb2RlIG9yIGNhdGVnb3J5IGlzbid0IHNldC4uLiB3ZSBkb24ndCBkaXNwbGF5IGFueXRoaW5nCgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGRpc3BsYXkgYSBmb3JtIHRvIGFsbG93IHRoZSB1c2VyIHRvIHVwbG9hZCBhIGZpbGUuLi4uIGJ1dCBtYXkgaGF2ZSB0byBoYXZlIHBlcm1pc3Npb24gZmlyc3QKICAgIC8vIGhtbW0sIEknbGwgdGhpbmsgYWJvdXQgdGhlIHBlcm1pc3Npb24gc3R1ZmYgbGF0ZXIuCiAgICAkdGVtcGxhdGUgPSAndXBsb2FkZm9ybV9kZWZhdWx0JzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKICAgICAgewoJJHRlbXBsYXRlID0gJ3VwbG9hZGZvcm1fJy4kcGFyYW1zWyd0ZW1wbGF0ZSddOwogICAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3RhcnRmb3JtJywKCQkJICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fdXBsb2FkJywkcmV0dXJuaWQsJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF91cGxvYWQnLCAkdGhpcy0+TGFuZyAoJ3VwbG9hZCcpKTsKCiAgICAvLyBpcyB0aGVyZSBhIGtleQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydrZXknXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9rZXknLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfa2V5JywgJHBhcmFtc1sna2V5J10pKTsKICAgICAgfQoKICAgIC8vIGF0dGVtcHQgdG8gZ2V0IGFuIGF1dGhvcgogICAgJGF1dGhvciA9ICcnOwogICAgJHVzZXJpZCA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwogICAgaWYoICR1c2VyaWQgKQogICAgICB7CgkkYXV0aG9yID0gJHVzZXJpZC0+TG9nZ2VkSW5OYW1lKCk7CiAgICAgIH0KCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ25vYXV0aG9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfYXV0aG9yJywKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2lucHV0X2F1dGhvcicsICRhdXRob3IpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbm9hdXRob3InLDEpOwoJCQkJCQkgICAgICAgCiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X2F1dGhvcicsICR0aGlzLT5MYW5nICgnYXV0aG9yJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfYXV0aG9yJywKCQkJICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X2F1dGhvcicsIAoJCQkJCQkgICAgICAgJGF1dGhvciwgMjAsIDI1NSkpOwogICAgICB9CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfc3VtbWFyeScsCgkJCSAgICR0aGlzLT5MYW5nICgnc3VtbWFyeScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3N1bW1hcnknLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9zdW1tYXJ5JywKCQkJCQkJICAgJycsIDQwLCAyNTUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9kZXN0bmFtZScsCgkJCSAgICR0aGlzLT5MYW5nICgnZGVzdG5hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9kZXN0bmFtZScsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X2Rlc3RuYW1lJywKCQkJCQkJICAgJycsIDQwLCAyNTUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2luZm9fZGVzdG5hbWUnLAoJCQkgICAkdGhpcy0+TGFuZyAoJ2luZm9fZGVzdG5hbWUnKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X2Rlc2NyaXB0aW9uJywKCQkJICAgJHRoaXMtPkxhbmcgKCdkZXNjcmlwdGlvbicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X2Rlc2NyaXB0aW9uJywKCQkJICAgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCAkaWQsICcnLCAnaW5wdXRfZGVzY3JpcHRpb24nICkpOwogICAgJGhpZGRlbiA9IAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4gKCRpZCwgJ01BWF9GSUxFX1NJWkUnLAoJCQkJJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91cGxvYWRzaXplJywnMTAwMDAwMCcpKS4KICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdjYXRlZ29yeScsCgkJCQkkcGFyYW1zWydjYXRlZ29yeSddKTsgCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2ZpbGVfZXh0ZW5zaW9ucyddICkgKQogICAgICB7CgkkaGlkZGVuIC49IAoJICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ2ZpbGVfZXh0ZW5zaW9ucycsCgkJCQkgICAgJHBhcmFtc1snZmlsZV9leHRlbnNpb25zJ10gKTsKICAgICAgfQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaGlkZGVuJywgJGhpZGRlbiApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfYnJvd3NlJywKCQkJICAgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCAoJGlkLCdpbnB1dF9icm93c2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZXBsYWNlJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9yZXBsYWNlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yZXBsYWNlJywgCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0X3JlcGxhY2UnLCAxICkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbmZvX3JlcGxhY2UnLAoJCQkgICR0aGlzLT5MYW5nKCdpbmZvX3JlcGxhY2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfdGh1bWJuYWlsJywKCQkJICAgJHRoaXMtPkxhbmcgKCd0aHVtYm5haWwnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbmZvX3RodW1ibmFpbCcsCgkJCSAgICR0aGlzLT5MYW5nICgnaW5mb190aHVtYm5haWwnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF90aHVtYm5haWwnLAoJCQkgICAkdGhpcy0+Q3JlYXRlRmlsZVVwbG9hZElucHV0ICgkaWQsJ2lucHV0X3RodW1ibmFpbCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdkb191cGxvYWRmaWxlJywKCQkJCQkJCQkgICAgJHRoaXMtPkxhbmcgKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKICB9CiBlbHNlCiAgIHsKICAgICAka2V5ID0gbnVsbDsKICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2tleSddICkgKQogICAgICAgewoJICRrZXkgPSAkcGFyYW1zWydrZXknXTsKICAgICAgIH0KCiAgICAgaWYoICFpc3NldCggJHBhcmFtc1snY2F0ZWdvcnknXSApICkKICAgICAgIHsKCSAvLyBpZiBtb2RlIG9yIGNhdGVnb3J5IGlzbid0IHNldC4uLiB3ZSBkb24ndCBkaXNwbGF5IGFueXRoaW5nCgkgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJIHJldHVybjsKICAgICAgIH0KCiAgICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgYSBzb3J0IG9yZGVyCiAgICAgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfZGF0ZSBBU0MiOwogICAgIGlmKCBpc3NldCgkcGFyYW1zWydzb3J0b3JkZXInXSkgKSB7CiAgICAgICBzd2l0Y2goICRwYXJhbXNbJ3NvcnRvcmRlciddICkgewogICAgICAgY2FzZSAiZGF0ZV9hc2MiOgoJIC8vIGFzY2VuZGluZyBkYXRlCgkgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfZGF0ZSBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAiZGF0ZV9kZXNjIjoKCSAvLyBkZXNjZW5kaW5nIGRhdGUKCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHVwbG9hZF9kYXRlIERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAibmFtZV9hc2MiOgoJIC8vIGFzY2VuZGluZyBuYW1lCgkgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfbmFtZSBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAibmFtZV9kZXNjIjoKCSAvLyBkZXNjZW5kaW5nIG5hbWUKCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHVwbG9hZF9uYW1lIERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAic2l6ZV9hc2MiOgoJIC8vIGFzY2VuZGluZyBzaXplCgkgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfc2l6ZSBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAic2l6ZV9kZXNjIjoKCSAvLyBkZXNjZW5kaW5nIHNpemUKCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHVwbG9hZF9zaXplIERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAic3VtbV9hc2MiOgoJIC8vIGFzY2VuZGluZyBzdW1tYXJ5CgkgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfc3VtbWFyeSBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAic3VtbV9kZXNjIjoKCSAvLyBkZXNjZW5kaW5nIHN1bW1hcnkKCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHVwbG9hZF9zdW1tYXJ5IERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAiYXV0aG9yX2FzYyI6CgkgLy8gYXNjZW5kaW5nIGF1dGhvcgoJICRzb3J0b3JkZXIgPSAiT1JERVIgQlkgdXBsb2FkX2F1dGhvciBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAiYXV0aG9yX2Rlc2MiOgoJIC8vIGRlc2NlbmRpbmcgYXV0aG9yCgkgJHNvcnRvcmRlciA9ICJPUkRFUiBCWSB1cGxvYWRfYXV0aG9yIERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAiaXBfYXNjIjoKCSAvLyBhc2NlbmRpbmcgaXAKCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHVwbG9hZF9pcCBBU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAiaXBfZGVzYyI6CgkgLy8gZGVzY2VuZGluZyBpcAoJICRzb3J0b3JkZXIgPSAiT1JERVIgQlkgdXBsb2FkX2lwIERFU0MiOwoJIGJyZWFrOwogICAgICAgY2FzZSAicmFuZG9tIjoKCSAvLyByYW5kb20KCSAkc29ydG9yZGVyID0gIk9SREVSIEJZIHJhbmQoKSI7CiAgICAgICB9CiAgICAgfQogICAgICRzb3J0b3JkZXIgPSAiICIuJHNvcnRvcmRlcjsKCiAgICAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IHdlJ3JlIGdvaW5nIHRvIGRpc3BsYXkKICAgICAkY291bnQgPSAiIjsKICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2NvdW50J10gKSApCiAgICAgICB7CgkgJGNvdW50ID0gIiBMSU1JVCAwLCIuJHBhcmFtc1snY291bnQnXTsKICAgICAgIH0KCiAgICAgLy8gZ2V0IHRoZSBjYXRlZ29yeSBpZAogICAgICRjYXRlZ29yeSA9IGFycmF5KCk7CiAgICAgaWYoICRwYXJhbXNbJ2NhdGVnb3J5J10gIT0gJ2FsbCcgKQogICAgICAgewoJICRjYXRlZ29yeSA9ICR0aGlzLT5nZXRDYXRlZ29yeUZyb21OYW1lKCAkcGFyYW1zWydjYXRlZ29yeSddICk7CgkgaWYoICEkY2F0ZWdvcnkgKQoJICAgewoJICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgICR0aGlzLT5MYW5nICgnZXJyb3JfY2F0ZWdvcnlub3Rmb3VuZCcpKTsKCSAgICAgcmV0dXJuOwoJICAgfQogICAgICAgfQoKICAgICAvLyBnZXQgdGhlIGZpbHRlciBzdHJpbmcKICAgICAkZmlsdGVyID0gJyc7CiAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZpbHRlciddKSAmJiAkcGFyYW1zWydpbnB1dF9maWx0ZXInXSAhPSAnJyApCiAgICAgICB7CgkgJGZpbHRlciA9ICRwYXJhbXNbJ2lucHV0X2ZpbHRlciddOwogICAgICAgfQogICAgIGlmKCAkZmlsdGVyID09ICcnICkKICAgICAgIHsKCSB1bnNldCgkcGFyYW1zWydoaWRkZW5fcGFyYW1zJ10pOwogICAgICAgfQogICAgIAogICAgIGlmKCAoaXNzZXQoJHBhcmFtc1snZmlsdGVyJ10pICYmICRwYXJhbXNbJ2ZpbHRlciddID09ICd5ZXMnKSApCiAgICAgICB7CgkgLy8gb3B0aW9uYWxseSBkaXNwbGF5IHRoZSBmaWx0ZXIgZm9ybQoJICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHQnLCRyZXR1cm5pZCwKCQkJCQkJCQkgICAkbWV0aG9kPSdwb3N0JywgJycsIHRydWUpKTsKCSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0ZXInKSk7CgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWx0ZXInLAoJCQkgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2ZpbHRlcicsJGZpbHRlciwxNSkpOwoJICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfc3VibWl0JywKCQkJICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2lucHV0X3N1Ym1pdCcsCgkJCQkJCQkkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKCSB1bnNldCggJHBhcmFtc1snaW5wdXRfZmlsdGVyJ10gKTsKCSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbl9wYXJhbXMnLAoJCQkgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaGlkZGVuX3BhcmFtcycsCgkJCQkJCQkkdGhpcy0+aW1wbG9kZV93aXRoX2tleSgkcGFyYW1zKSkpOwoJICR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAgICB9CgogICAgICRkb19xdWVyeSA9IHRydWU7CiAgICAgaWYoIChpc3NldCggJHBhcmFtc1snbm9faW5pdGlhbCddICkgJiYgJHBhcmFtc1snbm9faW5pdGlhbCddICE9ICcnKSAmJgoJIChpc3NldCggJHBhcmFtc1snaGlkZGVuX3BhcmFtcyddKSA9PSBmYWxzZSkgKQogICAgICAgewoJICRkb19xdWVyeSA9IGZhbHNlOwogICAgICAgfQoKICAgICAvLyBhZGp1c3QgdGhlIGZpbHRlcgogICAgICRhZGp1c3RlZF9maWx0ZXIgPSAkZmlsdGVyOwogICAgIGlmKCAkZmlsdGVyICE9ICcnICYmICFpc3NldCgkcGFyYW1zWyd1c2Vfc3RyaWN0X3JlZ2V4J10pICkKICAgICAgIHsKCSAkYWRqdXN0ZWRfZmlsdGVyID0gc3RyX3JlcGxhY2UoICcgJywgJy4qJywgJGFkanVzdGVkX2ZpbHRlciApOwogICAgICAgfQoKICAgICAvLyBnZXQgcmVhZHkgZm9yIGFycmF5IHByb2Nlc3NpbmcKICAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgICRxdWVyeSA9ICcnOwogICAgICRkYnJlc3VsdCA9ICRmYWxzZTsKICAgICAKICAgICBpZiggJHBhcmFtc1snY2F0ZWdvcnknXSA9PSAnYWxsJyApCiAgICAgICB7CgkgLy8gaGFuZGxlIGRpc3BsYXkgYWxsIGxpc3RhYmxlIGNhdGVnb3JpZXMKCSAkcXBhcm1zID0gYXJyYXkoKTsKCSAkcXVlcnkgPSAiU0VMRUNUIHVwbG9hZF9pZCwgQS51cGxvYWRfY2F0ZWdvcnlfaWQgQVMgCiAgICAgICAgICAgICAgICAgIHVwbG9hZF9jYXRlZ29yeV9pZCwgdXBsb2FkX25hbWUsIHVwbG9hZF9hdXRob3IsIHVwbG9hZF9zdW1tYXJ5LCB1cGxvYWRfZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgIHVwbG9hZF9pcCwgdXBsb2FkX3NpemUsIHVwbG9hZF9kYXRlLCB1cGxvYWRfY2F0ZWdvcnlfbmFtZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIEFTIEEsIi4KCSAgIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMgQVMgQiBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfbGlzdGFibGUgPSAxIjsKCSBpZiggJGtleSAhPSBudWxsICkKCSAgIHsKCSAgICAgJHF1ZXJ5IC49ICIgQU5EIHVwbG9hZF9rZXkgPSA/IjsKCSAgICAgJHFwYXJtc1tdID0gJGtleTsKCSAgIH0KCSBpZiggJGFkanVzdGVkX2ZpbHRlciAhPSAnJyApCgkgICB7CgkgICAgICRxdWVyeSAuPSAiQU5EIHVwbG9hZF9uYW1lIFJFR0VYUCA/ICI7CgkgICAgICRxcGFybXNbXSA9ICRhZGp1c3RlZF9maWx0ZXI7CgkgICB9CgkgJHF1ZXJ5IC49ICJBTkQgQS51cGxvYWRfY2F0ZWdvcnlfaWQgPSBCLnVwbG9hZF9jYXRlZ29yeV9pZCIuJHNvcnRvcmRlci4kY291bnQ7ICAgICAKCSAKCSBzd2l0Y2goICRwYXJhbXNbJ21vZGUnXSApCgkgICB7CgkgICBjYXNlICdkZXRhaWxlZCc6CgkgICAgICR0ZW1wbGF0ZSA9ICdkZXRhaWxycHRfZGVmYXVsdCc7CiAgICAgICAgICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCgkgICAgICAgewoJCSAkdGVtcGxhdGUgPSAnZGV0YWlscnB0XycuJHBhcmFtc1sndGVtcGxhdGUnXTsKCSAgICAgICB9CgkgICAgIGJyZWFrOwoJICAgICAKCSAgIGNhc2UgJ3N1bW1hcnknOgogCSAgICAgJHRlbXBsYXRlID0gJ3VwbG9hZF9kaXNwbGF5c3VtbWFyeSc7CiAgICAgICAgICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCgkgICAgICAgewoJCSAkdGVtcGxhdGUgPSAnc3VtbWFyeXJwdF8nLiRwYXJhbXNbJ3RlbXBsYXRlJ107CgkgICAgICAgfQoJICAgICBicmVhazsKCSAgIH0KCSAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgJHFwYXJtcyApOwogICAgICAgfQogICAgIGVsc2UgewogICAgICAgLy8gaWYgdGhlIGNhdGVnb3J5IGlzbid0IGxpc3RhYmxlLCB3ZSBjYW4gc3RvcCBoZXJlCiAgICAgICBpZiggJGNhdGVnb3J5Wyd1cGxvYWRfY2F0ZWdvcnlfbGlzdGFibGUnXSA9PSAwICkgewoJIHJldHVybjsKICAgICAgIH0KICAgICAgICRjYXRlZ29yeV9pZCA9ICRjYXRlZ29yeVsndXBsb2FkX2NhdGVnb3J5X2lkJ107CiAgICAgICAkY2F0cGF0aDEgPSAkdGhpcy0+Z2V0Q2F0ZWdvcnlQYXRoRnJvbUlEKCRjYXRlZ29yeV9pZCk7CgogICAgICAgLy8gd2UncmUgZ29ubmEgc2NhbiB0aGUgZGlyZWN0b3J5IGFuZCBzZWUgaWYgYW55Ym9keSB1cGxvYWRlZAogICAgICAgLy8gYW55IGZpbGVzIHZpYSBmdHAgb3Igc2NwIG9yIGFueXRoaW5nIHNpbGx5LgogICAgICAgJHRoaXMtPlNtYXJ0U2NhbkRpcmVjdG9yeSggJGNhdGVnb3J5X2lkLCAkY2F0cGF0aDEgKTsKCiAgICAgICBpZiAoJHBhcmFtc1snbW9kZSddID09ICdkZXRhaWxlZCcpCgkgewoJICAgLy8gYSBicmllZiBsaXN0aW5nIG9mIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGNhdGVnb3J5CgkgICAkcXBhcm1zID0gYXJyYXkoKTsKCSAgICRxcGFybXNbXSA9ICRjYXRlZ29yeV9pZDsKCSAgICR0ZW1wbGF0ZSA9ICdkZXRhaWxycHRfZGVmYXVsdCc7CgkgICBpZiggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCgkgICAgIHsKCSAgICAgICAkdGVtcGxhdGUgPSAnZGV0YWlscnB0XycuJHBhcmFtc1sndGVtcGxhdGUnXTsKCSAgICAgfQoJICAgJHF1ZXJ5ID0KCSAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4ICgpLgoJICAgICAibW9kdWxlX3VwbG9hZHMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyI7CgkgICBpZiggJGtleSAhPSBudWxsICkKCSAgICAgewoJICAgICAgICRxdWVyeSAuPSAiIEFORCB1cGxvYWRfa2V5ID0gPyI7CgkgICAgICAgJHFwYXJtc1tdID0gJGtleTsKCSAgICAgfQoJICAgaWYoICRhZGp1c3RlZF9maWx0ZXIgIT0gJycgKQoJICAgICB7CgkgICAgICAgJHF1ZXJ5IC49ICIgQU5EIHVwbG9hZF9uYW1lIFJFR0VYUCA/IjsKCSAgICAgICAkcXBhcm1zW10gPSAkYWRqdXN0ZWRfZmlsdGVyOwoJICAgICB9CgkgICAkcXVlcnkgLj0gJHNvcnRvcmRlci4kY291bnQ7CgkgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUgKCRxdWVyeSwgJHFwYXJtcyk7CgkgfQogICAgICAgZWxzZSBpZiAoJHBhcmFtc1snbW9kZSddID09ICdzaW5nbGUnKQoJIHsKCSAgIC8vIGRpc3BsYXkgaW5mbyBhYm91dCBhIHNpbmdsZSBmaWxlLCBpbiBleHBhbmRlZCBmb3JtCgkgICBpZiggIWlzc2V0KCRwYXJhbXNbJ3VwbG9hZF9pZCddKSApIHsKCSAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCSAgICAgcmV0dXJuOwoJICAgfQoJICAgICAgIAoJICAgJHRlbXBsYXRlID0gJ2RldGFpbHJwdF9kZWZhdWx0JzsKCSAgIGlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKCSAgICAgewoJICAgICAgICR0ZW1wbGF0ZSA9ICdkZXRhaWxycHRfJy4kcGFyYW1zWyd0ZW1wbGF0ZSddOwoJICAgICB9CgkgICAkcXVlcnkgPQoJICAgICAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4KCSAgICAgIm1vZHVsZV91cGxvYWRzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iLiIgQU5EIHVwbG9hZF9pZCA9ID8iOwoJICAgJHFwYXJtcyA9IGFycmF5KCAkY2F0ZWdvcnlfaWQsICRwYXJhbXNbJ3VwbG9hZF9pZCddICk7CgkgICBpZiggJGtleSAhPSBudWxsICkKCSAgICAgewoJICAgICAgICRxdWVyeSAuPSAiIEFORCB1cGxvYWRfa2V5ID0gPyI7CgkgICAgICAgJHFwYXJtc1tdID0gJGtleTsKCSAgICAgfQoJICAgJGRicmVzdWx0ID0KCSAgICAgJGRiLT5FeGVjdXRlICgkcXVlcnksICRxcGFybXMgKTsKCSB9CiAgICAgICBlbHNlIGlmICgkcGFyYW1zWydtb2RlJ10gPT0gJ3NpbmdsZXN1bW1hcnknKQoJIHsKCSAgIGlmKCAhaXNzZXQoJHBhcmFtc1sndXBsb2FkX2lkJ10pICkgewoJICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJICAgICByZXR1cm47CgkgICB9CgkgICAgICAgCgkgICAkdGVtcGxhdGUgPSAnc3VtbWFyeXJwdF9kZWZhdWx0JzsKCSAgIGlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKCSAgICAgewoJICAgICAgICR0ZW1wbGF0ZSA9ICdzdW1tYXJ5cnB0XycuJHBhcmFtc1sndGVtcGxhdGUnXTsKCSAgICAgfQoJICAgJHF1ZXJ5ID0KCSAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuCgkgICAgICJtb2R1bGVfdXBsb2FkcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/Ii4iIEFORCB1cGxvYWRfaWQgPSA/IEFORCI7CgkgICAkcXBhcm1zID0gYXJyYXkoJGNhdGVnb3J5X2lkLCAkcGFyYW1zWyd1cGxvYWRfaWQnXSk7CgkgICBpZiggJGtleSAhPSBudWxsICkKCSAgICAgewoJICAgICAgICRxdWVyeSAuPSAiIEFORCB1cGxvYWRfa2V5ID0gPyI7CgkgICAgICAgJHFwYXJtc1tdID0gJGtleTsKCSAgICAgfQoJICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksICRxcGFybXMgKTsKCSB9CiAgICAgICBlbHNlIGlmICgkcGFyYW1zWydtb2RlJ10gPT0gImxpbmsiKQoJIHsKCSAgICR0ZW1wbGF0ZSA9ICcnOwoJICAgJHF1ZXJ5ID0gCgkgICAgICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLgoJICAgICAibW9kdWxlX3VwbG9hZHMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyIuIiBBTkQgdXBsb2FkX2lkID0gPyI7CgkgICAkcXBhcm1zID0gYXJyYXkoICRjYXRlZ29yeV9pZCwgJHBhcmFtc1sndXBsb2FkX2lkJ10gKTsKCSAgIGlmKCAka2V5ICE9IG51bGwgKQoJICAgICB7CgkgICAgICAgJHF1ZXJ5IC49ICIgQU5EIHVwbG9hZF9rZXkgPSA/IjsKCSAgICAgICAkcXBhcm1zW10gPSAka2V5OwoJICAgICB9CgkgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUgKCRxdWVyeSwgJHFwYXJtcyApOwoJICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCSAgIGVjaG8gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluayAoJGlkLCAkcmV0dXJuaWQsICdnZXRmaWxlJywgJHJvd1sndXBsb2FkX25hbWUnXSwKCQkJCQkgICBhcnJheSAoJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJywgJ3VwbG9hZF9pZCcgPT4gJHJvd1sndXBsb2FkX2lkJ10pKTsKCSB9CiAgICAgICBlbHNlIGlmICgkcGFyYW1zWydtb2RlJ10gPT0gJ3VybCcpCgkgewoJICAgLy8gb3V0cHV0IGp1c3QgYSB1cmwKCSAgIGlmKCAhaXNzZXQoJHBhcmFtc1sndXBsb2FkX2lkJ10pICkgewoJICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJICAgICByZXR1cm47CgkgICB9CgkgICAgICAgCgkgICAkdGVtcGxhdGUgPSAnJzsKCSAgICRxdWVyeSA9IAoJICAgICAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4KCSAgICAgIm1vZHVsZV91cGxvYWRzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iLiIgQU5EIHVwbG9hZF9pZCA9ID8iOwoJICAgJHFwYXJtcyA9IGFycmF5KCAkY2F0ZWdvcnlfaWQsICRwYXJhbXNbJ3VwbG9hZF9pZCddICk7CgkgICBpZiggJGtleSAhPSBudWxsICkKCSAgICAgewoJICAgICAgICRxdWVyeSAuPSAiIEFORCB1cGxvYWRfa2V5ID0gPyI7CgkgICAgICAgJHFwYXJtc1tdID0gJGtleTsKCSAgICAgfQoJICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksICRxcGFybXMgKTsKCSAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rICgkaWQsICdnZXRmaWxlJywgJHJldHVybmlkLCAnJywgCgkJCQkgICBhcnJheSAoJ3Nob3d0ZW1wbGF0ZSc9PidmYWxzZScsICd1cGxvYWRfaWQnID0+ICRyb3dbJ3VwbG9hZF9pZCddKSwgJycsIHRydWUpOwoJIH0KICAgICAgIGVsc2UgaWYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnc3VtbWFyeScpCgkgewoJICAgLy8gZGlzcGxheSBpbmZvIGFib3V0IGFsbCBvZiB0aGUgZmlsZXMgaW4gdGhlIGNhdGVnb3J5CgkgICAkdGVtcGxhdGUgPSAnc3VtbWFyeXJwdF9kZWZhdWx0JzsKCSAgIGlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKCSAgICAgewoJICAgICAgICR0ZW1wbGF0ZSA9ICdzdW1tYXJ5cnB0XycuJHBhcmFtc1sndGVtcGxhdGUnXTsKCSAgICAgfQoJICAgJHFwYXJtcyA9IGFycmF5KCRjYXRlZ29yeV9pZCk7CgkgICAkcXVlcnkgPQoJICAgICAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4KCSAgICAgIm1vZHVsZV91cGxvYWRzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwoJICAgaWYoICRrZXkgIT0gbnVsbCApCgkgICAgIHsKCSAgICAgICAkcXVlcnkgLj0gIiBBTkQgdXBsb2FkX2tleSA9ID8iOwoJICAgICAgICRxcGFybXNbXSA9ICRrZXk7CgkgICAgIH0KCSAgIGlmKCAkYWRqdXN0ZWRfZmlsdGVyICE9ICcnICkKCSAgICAgewoJICAgICAgICRxdWVyeSAuPSAiIEFORCB1cGxvYWRfbmFtZSBSRUdFWFAgPyI7CgkgICAgICAgJHFwYXJtc1tdID0gJGFkanVzdGVkX2ZpbHRlcjsKCSAgICAgfQoJICAgJHF1ZXJ5IC49ICRzb3J0b3JkZXIuJGNvdW50OwoJICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksICRxcGFybXMpOwoJIH0KICAgICB9CgogICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbWF0Y2hlc3RleHQnLCR0aGlzLT5MYW5nKCdtYXRjaGVzZm91bmQnKSk7CgogICAgICRtYXRjaGVzID0gMDsKCiAgICAgaWYoICRkb19xdWVyeSA9PSB0cnVlICkKICAgICAgIHsKICAgICAgIGlmKCAkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpICkKICAgICAgICAgewogIAkgICAkbWF0Y2hlcyA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKICAgICAgICAgfQoKCSAvLyBzZXR1cCBzdHJpbmdzCgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeScsJHRoaXMtPkxhbmcoJ2NhdGVnb3J5JykpOwoJICR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCR0aGlzLT5MYW5nKCdpZCcpKTsKCSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25hbWUnLCR0aGlzLT5MYW5nKCduYW1lJykpOwoJICR0aGlzLT5zbWFydHktPmFzc2lnbignZGF0ZScsJHRoaXMtPkxhbmcoJ2RhdGUnKSk7CgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRob3InLCR0aGlzLT5MYW5nKCdhdXRob3InKSk7CgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzaXplJywkdGhpcy0+TGFuZygnc2l6ZWtiJykpOwoJICR0aGlzLT5zbWFydHktPmFzc2lnbignZGV0YWlscycsJHRoaXMtPkxhbmcoJ2RldGFpbHMnKSk7CgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdW1tYXJ5JywkdGhpcy0+TGFuZygnc3VtbWFyeScpKTsKCSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uJywkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSk7CgkgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aHVtYm5haWwnLCR0aGlzLT5MYW5nKCd0aHVtYm5haWwnKSk7CgoJIGlmICghJGRicmVzdWx0KQoJICAgewoJICAgICAvLyBtYXliZSB0aGVyZSBhcmUgbm8gZmlsZXMgaW4gdGhpcyBjYXRlZ29yeQoJICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCdlcnJvcl9ub2ZpbGVzJykpOwoJICAgfQoJIGVsc2UgaWYoICR0ZW1wbGF0ZSAhPSAnJyApIAoJICAgewoJICAgICAvLyBkbyB0aGUgbGlzdAoJICAgICAkcm93Y2xhc3MgPSAncm93MSc7CgkgICAgIHdoaWxlICgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdyAoKSkKCSAgICAgICB7CgkJICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MgKCk7CgkJICRvbmVyb3ctPmlkID0gJHJvd1sndXBsb2FkX2lkJ107CgkJIGlmKCAkcGFyYW1zWydjYXRlZ29yeSddID09ICdhbGwnICkKCQkgICB7CgkJICAgICAkb25lcm93LT5jYXRlZ29yeSA9ICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9uYW1lJ107CgkJICAgfQoJCSBlbHNlIAoJCSAgIHsKCQkgICAgICRvbmVyb3ctPmNhdGVnb3J5ID0gJHBhcmFtc1snY2F0ZWdvcnknXTsKCQkgICB9CgkJICRvbmVyb3ctPmRvd25sb2FkX3VybCA9CgkJICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2dldGZpbGUnLCAkcmV0dXJuaWQsICcnLCAKCQkJCSAgICAgIGFycmF5ICgnc2hvd3RlbXBsYXRlJz0+J2ZhbHNlJywndXBsb2FkX2lkJyA9PiAkcm93Wyd1cGxvYWRfaWQnXSksICcnLCB0cnVlICk7CgkJICRvbmVyb3ctPm5hbWUgPQoJCSAgICR0aGlzLT5DcmVhdGVMaW5rICgkaWQsICdnZXRmaWxlJywgJHJldHVybmlkLCAkcm93Wyd1cGxvYWRfbmFtZSddLAoJCQkJICAgICAgYXJyYXkgKCdzaG93dGVtcGxhdGUnPT4nZmFsc2UnLCd1cGxvYWRfaWQnID0+ICRyb3dbJ3VwbG9hZF9pZCddKSk7CgkJICRvbmVyb3ctPmF1dGhvciA9ICRyb3dbJ3VwbG9hZF9hdXRob3InXTsKCQkgJG9uZXJvdy0+ZGV0YWlsbGluayA9CgkJICAgJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluayAoJGlkLCAkcmV0dXJuaWQsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2RldGFpbHMnKSwKCQkJCSAgICAgIGFycmF5KCdtb2RlJyA9PiAnc2luZ2xlJywKCQkJCQkgICAgJ3VwbG9hZF9pZCcgPT4gJHJvd1sndXBsb2FkX2lkJ10sCgkJCQkJICAgICdjYXRlZ29yeScgPT4gJHBhcmFtc1snY2F0ZWdvcnknXSkpOwoJCSAkb25lcm93LT5zdW1tYXJ5ID0gJHJvd1sndXBsb2FkX3N1bW1hcnknXTsKCQkgaWYoIGlzc2V0KCAkcm93Wyd1cGxvYWRfc3VtbWFyeSddICkgJiYgJHJvd1sndXBsb2FkX3N1bW1hcnknXSAhPSAiIiApCgkJICAgewoJCSAgICAgJG9uZXJvdy0+c3VtbWFyeWxpbmsgPQoJCSAgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZ2V0ZmlsZScsICRyZXR1cm5pZCwgJHJvd1sndXBsb2FkX3N1bW1hcnknXSwKCQkJCQkgIGFycmF5ICgnc2hvd3RlbXBsYXRlJz0+J2ZhbHNlJywndXBsb2FkX2lkJyA9PiAkcm93Wyd1cGxvYWRfaWQnXSkpOwoJCSAgIH0KCQkgICAgIAoJCSAvLyB0aHVtYm5haWwKCQkgJGNhdHBhdGggPSAkdGhpcy0+Z2V0Q2F0ZWdvcnlQYXRoRnJvbUZpbGVJRCgkcm93Wyd1cGxvYWRfaWQnXSk7CgkJICR0bmZpbGUgPSAkdGhpcy0+X2NhdGVnb3J5UGF0aCggJGNhdHBhdGguRElSRUNUT1JZX1NFUEFSQVRPUi4KCQkJCQkJICcudGh1bWJzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRyb3dbJ3VwbG9hZF9pZCddLidfdGh1bWInKTsKCQkgaWYoIGZpbGVfZXhpc3RzKCAkdG5maWxlICkgKQoJCSAgIHsKCQkgICAgICR0bnVybCA9ICR0aGlzLT5jbXMtPmNvbmZpZ1sndXBsb2Fkc191cmwnXS4iLyIuJGNhdHBhdGguJy8udGh1bWJzLycuJHJvd1sndXBsb2FkX2lkJ10uJ190aHVtYic7CgkJICAgICAkb25lcm93LT50aHVtYm5haWxfdXJsID0gJHRudXJsOwoJCSAgIH0KCgkJICRvbmVyb3ctPmRlc2NyaXB0aW9uID0gJHJvd1sndXBsb2FkX2Rlc2NyaXB0aW9uJ107CgkJICRvbmVyb3ctPmlwID0gJHJvd1sndXBsb2FkX2lwJ107CgkJICRvbmVyb3ctPnNpemUgPSBpbnR2YWwoJHJvd1sndXBsb2FkX3NpemUnXSAvIDEwMjQuMCArIDAuNSk7CgkJICRvbmVyb3ctPmRhdGUgPSAkcm93Wyd1cGxvYWRfZGF0ZSddOwoJCSAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkgICAgIAoJCSBhcnJheV9wdXNoICgkcm93YXJyYXksICRvbmVyb3cpOwoJCSAoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7CgkgICAgICAgfQoJCSAKCSAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaXRlbXMnLCAkcm93YXJyYXkpOwoJICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKCSAgIH0KICAgICAgIH0KICAgfQoKICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnbWF0Y2hlcycsICRtYXRjaGVzICk7CgogICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlICgkdGVtcGxhdGUpOwoKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIEF1dGhvcjogUm9iZXJ0IENhbXBiZWxsIDxyb2JAdGVjaGNvbS5keW5kbnMub3JnPgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTWFuYWdlIFVwbG9hZHMnKSkKICAgICAgewoJLy8gZG8gbm90aGluZywgdG9kbzogdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2hhbmdlZAoJcmV0dXJuOwogICAgICB9CgogICAgLy8gZ2V0IHRoZSBjdXJyZW50IGNhdGVnb3J5IGZvciB0aGUgZmlsdGVyCiAgICAkY3VyY2F0ZWdvcnkgPQogICAgICAoaXNzZXQgKCRwYXJhbXNbJ2N1cmNhdGVnb3J5J10pID8gJHBhcmFtc1snY3VyY2F0ZWdvcnknXSA6ICcnKTsKICAgIGlmIChpc3NldCAoJHBhcmFtc1snc3VibWl0Y2F0ZWdvcnknXSkpCiAgICAgIHsKCSRjdXJjYXRlZ29yeSA9CgkgIChpc3NldCAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnknXSkgPyAkcGFyYW1zWydpbnB1dF9jYXRlZ29yeSddIDoKCSAgICcnKTsKICAgICAgfQogICAgICAgIAogICAgLy8gYXJlIHdlIHVwbG9hZGluZyBhIGZpbGUgICAgICAKICAgIGlmIChpc3NldCggJHBhcmFtc1snc3VibWl0dXBsb2FkJ10gKSApCiAgICAgIHsKCSR1c2VyaWQgPSBnZXRfdXNlcmlkKCk7CgkkdXNlcm5hbWUgPSAkX1NFU1NJT05bImNtc19hZG1pbl91c2VybmFtZSJdOwoJJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSA9ICRjdXJjYXRlZ29yeTsKCQoJJHJldCA9ICR0aGlzLT5BdHRlbXB0VXBsb2FkKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJaWYoICRyZXRbMF0gPT0gZmFsc2UgKQoJICB7CgkgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgJHJldFsxXSApOwoJICAgIHJldHVybjsKCSAgfQogICAgICB9CgogICAgJGFjdGl2ZV90YWIgPSAtMTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhY3RpdmVfdGFiJ10pKQogICAgICB7CgkkYWN0aXZlX3RhYiA9ICRwYXJhbXNbJ2FjdGl2ZV90YWInXTsKICAgICAgfQogICAgCiAgICAvL1RoZSB0YWJzCiAgICBlY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMgKCk7CiAgICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01hbmFnZSBVcGxvYWRzJykpCiAgICAgIHsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlciAoJ2ZpbGVzJywgJHRoaXMtPkxhbmcgKCdmaWxlcycpLAoJCQkJICAoJGFjdGl2ZV90YWIgPT0gJ2ZpbGVzJykpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyICgnY2F0ZWdvcmllcycsICR0aGlzLT5MYW5nICgnY2F0ZWdvcmllcycpLAoJCQkJICAoJGFjdGl2ZV90YWIgPT0gJ2NhdGVnb3JpZXMnKSk7CiAgICAgIH0KICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTW9kaWZ5IFRlbXBsYXRlcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyICgndXBsb2FkZm9ybV90ZW1wbGF0ZScsCgkJCQkgICR0aGlzLT5MYW5nICgndXBsb2FkZm9ybV90ZW1wbGF0ZScpLAoJCQkJICAoJGFjdGl2ZV90YWIgPT0gJ3VwbG9hZGZvcm1fdGVtcGxhdGUnKSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIgKCdzdW1tYXJ5X3RlbXBsYXRlJywKCQkJCSAgJHRoaXMtPkxhbmcgKCdzdW1tYXJ5X3RlbXBsYXRlJyksCgkJCQkgICgkYWN0aXZlX3RhYiA9PSAnc3VtbWFyeV90ZW1wbGF0ZScpKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlciAoJ2RldGFpbF90ZW1wbGF0ZScsCgkJCQkgICR0aGlzLT5MYW5nICgnZGV0YWlsX3RlbXBsYXRlJyksCgkJCQkgICgkYWN0aXZlX3RhYiA9PSAnZGV0YWlsX3RlbXBsYXRlJykpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyICgnZW1haWxfdGVtcGxhdGUnLAoJCQkJICAkdGhpcy0+TGFuZyAoJ2VtYWlsX3RlbXBsYXRlJyksCgkJCQkgICgkYWN0aXZlX3RhYiA9PSAnZW1haWxfdGVtcGxhdGUnKSk7CiAgICAgIH0KICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyICgnYWRtaW5fcHJlZnMnLAoJCQkJICAkdGhpcy0+TGFuZyAoJ3ByZWZlcmVuY2VzJyksCgkJCQkgICgkYWN0aXZlX3RhYiA9PSAnYWRtaW5fcHJlZnMnKSk7CiAgICAgIH0KICAgIGVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMgKCk7CiAgICAKICAgIC8vVGhlIGNvbnRlbnQgb2YgdGhlIHRhYnMKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCAoKTsKCiAgICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01hbmFnZSBVcGxvYWRzJykpCiAgICAgIHsKCS8vIHRoZSBmaWxlcyB0YWIKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiICgiZmlsZXMiKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluUGFuZWxGaWxlc1RhYigkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CgllY2hvICR0aGlzLT5FbmRUYWIgKCk7CgllY2hvICR0aGlzLT5TdGFydFRhYiAoImNhdGVnb3JpZXMiKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluUGFuZWxDYXRlZ29yaWVzVGFiKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCWVjaG8gJHRoaXMtPkVuZFRhYiAoKTsKICAgICAgfQoKICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTW9kaWZ5IFRlbXBsYXRlcycpKQogICAgICB7CgkvLyB0aGUgdXBsb2FkIGZvcm0gdGVtcGxhdGUgdGFiCgllY2hvICR0aGlzLT5TdGFydFRhYiAoInVwbG9hZGZvcm1fdGVtcGxhdGUiKTsKCXsKCSAgJHRoaXMtPl9BZG1pbkNyZWF0ZVRlbXBsYXRlTGlzdCggJGlkLCAkcmV0dXJuaWQsICd1cGxvYWRmb3JtXycpOwoJfQoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgkKCS8vIHRoZSBzdW1tYXJ5IHRlbXBsYXRlIHRhYgoJZWNobyAkdGhpcy0+U3RhcnRUYWIgKCJzdW1tYXJ5X3RlbXBsYXRlIik7Cgl7CgkgICR0aGlzLT5fQWRtaW5DcmVhdGVUZW1wbGF0ZUxpc3QoICRpZCwgJHJldHVybmlkLCAnc3VtbWFyeXJwdF8nKTsKCX0KCWVjaG8gJHRoaXMtPkVuZFRhYiAoKTsKCQoJLy8gdGhlIGRldGFpbCB0ZW1wbGF0ZSB0YWIKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiICgiZGV0YWlsX3RlbXBsYXRlIik7Cgl7CgkgICR0aGlzLT5fQWRtaW5DcmVhdGVUZW1wbGF0ZUxpc3QoICRpZCwgJHJldHVybmlkLCAnZGV0YWlscnB0XycpOwoJfQoJZWNobyAkdGhpcy0+RW5kVGFiICgpOwoJCgkvLyB0aGUgZW1haWwgdGVtcGxhdGUgdGFiCgllY2hvICR0aGlzLT5TdGFydFRhYignZW1haWxfdGVtcGxhdGUnKTsKCXsKCSAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICd1cGRhdGVlbWFpbHRlbXBsYXRlJyk7CgkgIGVjaG8gJzxici8+PHA+Jy4kdGhpcy0+Q3JlYXRlVGV4dEFyZWEgKGZhbHNlLCAkaWQsCgkJCQkJCSAkdGhpcy0+CgkJCQkJCSBHZXRUZW1wbGF0ZSAoJ3VwbG9hZF9lbWFpbHRlbXBsYXRlJyksCgkJCQkJCSAndGVtcGxhdGVjb250ZW50JywgJycpLic8L3A+JzsKCSAgZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdGJ1dHRvbicsCgkJCQkJICR0aGlzLT5MYW5nICgnc3VibWl0JykpOwoJICBlY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnZGVmYXVsdGJ1dHRvbicsICR0aGlzLT5MYW5nICgnZGVmYXVsdCcpLCAnJywgJycsIAoJCQkJCSAkdGhpcy0+TGFuZygncmVzdG9yZWRlZmF1bHRzY29uZmlybScpKTsKCSAgZWNobyAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKTsKCX0KCWVjaG8gJHRoaXMtPkVuZFRhYigpOwogICAgICB9CgogICAgaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKQogICAgICB7CgllY2hvICR0aGlzLT5TdGFydFRhYiggJ2FkbWluX3ByZWZzJyApOwoJewoJICAkdGhpcy0+X0Rpc3BsYXlBZG1pblByZWZzKCRpZCwkcGFyYW1zLCRyZXR1cm5pZCk7Cgl9CgllY2hvICR0aGlzLT5FbmRUYWIgKCk7CiAgICAgIH0KCiAgICAvLyBkb25lIHRhYnMKICAgIGVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQgKCk7CiAgICByZXR1cm47Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkKICAgIHsKICAgICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCiAgICAgIHJldHVybjsKICAgIH0KCiAgaWYoICEoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpICkKICAgIHsKICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICByZXR1cm47CiAgICB9CgogICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3VwbG9hZGZvcm1fdGVtcGxhdGUnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.do_addcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIEF1dGhvcjogUm9iZXJ0IENhbXBiZWxsIDxyb2JAdGVjaGNvbS5keW5kbnMub3JnPgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24gKCdNYW5hZ2UgVXBsb2FkcycpKQogICAgICB7CgkvLyBkbyBub3RoaW5nLCB0b2RvOiB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBjaGFuZ2VkCglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBhcmUgd2UgY2FuY2VsbGluZwogICAgaWYgKGlzc2V0ICgkcGFyYW1zWydjYW5jZWwnXSkpCiAgICB7CiAgICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCdjYXRlZ29yaWVzJyk7CiAgICB9CgogICAgJGVycm9yID0gZmFsc2U7CgogICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgc29tZXRoaW5nIHRvIHdvcmsgd2l0aAogICAgaWYgKCFpc3NldCAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnluYW1lJ10pCgl8fCAkcGFyYW1zWydpbnB1dF9jYXRlZ29yeW5hbWUnXSA9PSAiIikKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgiZXJyb3JfZW1wdHljYXRlZ29yeSIpKTsKCSRlcnJvciA9IHRydWU7CiAgICAgIH0KICAgIGVsc2UgaWYgKCFpc3NldCAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlwYXRoJ10pIHx8IHRyaW0oJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlwYXRoJ10pID09ICIiKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsICIxIik7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCJlcnJvcl9lbXB0eXBhdGgiKSk7CgkkZXJyb3IgPSB0cnVlOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCS8vIGNoZWNrIGlmIHRoZSBjYXRlZ29yeSBkb2Vzbid0IGFscmVhZHkgZXhpc3QKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSRxdWVyeSA9CgkgICJTRUxFQ1QgKiBmcm9tICIuY21zX2RiX3ByZWZpeCAoKS4KCSAgIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X25hbWUgPSA/IjsKCSRkYnJlc3VsdCA9CgkgICRkYi0+RXhlY3V0ZSAoJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnluYW1lJ10pKTsKCQoJLy8geWVwIGl0IGRvZXMKCWlmICgkZGJyZXN1bHQtPkZldGNoUm93ICgpKQoJICB7CgkgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLAoJCQkJICAgJHRoaXMtPkxhbmcgKCJlcnJvcl9jYXRlZ29yeWV4aXN0cyIpKTsKCSAgICAkZXJyb3IgPSB0cnVlOwoJICB9CgllbHNlCgkgIHsKCSAgICAvLyBjaGVjayBpZiB0aGUgZGlyZWN0b3J5IGlzIGFscmVhZHkgaW4gdXNlCgkgICAgJHF1ZXJ5ID0KCSAgICAgICJTRUxFQ1QgKiBmcm9tICIuY21zX2RiX3ByZWZpeCAoKS4KCSAgICAgICJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9wYXRoID0gPyI7CgkgICAgJGRicmVzdWx0ID0KCSAgICAgICRkYi0+RXhlY3V0ZSAoJHF1ZXJ5LCBhcnJheSAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlwYXRoJ10pKTsKCSAgICAKCSAgICBpZiAoJGRicmVzdWx0LT5GZXRjaFJvdyAoKSkKCSAgICAgIHsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsICIxIik7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgiZXJyb3JfcGF0aGludXNlIikpOwoJCSRlcnJvciA9IHRydWU7CgkgICAgICB9CgkgICAgZWxzZQoJICAgICAgewoJCS8vIENyZWF0ZSB0aGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKCQkkZG9fc2NhbiA9IGZhbHNlOwoJCSRkaXIgPSAkdGhpcy0+X2NhdGVnb3J5UGF0aCgkcGFyYW1zWydpbnB1dF9jYXRlZ29yeXBhdGgnXSk7CgoJCWlmKCBmaWxlX2V4aXN0cyggJGRpciApICkgCgkJICB7CgkJICAgICRkb19zY2FuID0gdHJ1ZTsKCQkgIH0KCQllbHNlCgkJICB7CgkJICAgIC8vIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CgkJICAgICRyZXN1bHQgPSAkdGhpcy0+X21rZGlyciAoJGRpcik7CgkJICAgIGlmICgkcmVzdWx0ID09IGZhbHNlKSAKCQkgICAgICB7CgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsCgkJCQkJICAgICAgICR0aGlzLT5MYW5nICgiZXJyb3JfY2F0ZWdvcnlleGlzdHMiKSk7CgkJCSRlcnJvciA9IHRydWU7CgkJICAgICAgfQoJCSAgICAvLyBjcmVhdGUgYW4gaW5kZXguaHRtbCBmaWxlIChlbXB0eSkKCQkgICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfZHVtbXlfaW5kZXhfaHRtbCcpICkKCQkgICAgICB7CgkJCXRvdWNoKCAkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuImluZGV4Lmh0bWwiICk7CgkJICAgICAgfQoJCSAgfQoKCQlpZiggISRlcnJvciApCgkJICB7CgkJICAgIC8vIEFkZCB0aGUgcmVjb3JkIHRvIHRoZSBjYXRlZ29yeSB0YWJsZQoJCSAgICAkY2F0aWQgPQoJCSAgICAgICRkYi0+R2VuSUQgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXNfc2VxIik7CgkJICAgICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gPSAkY2F0aWQ7CgkJICAgICRxdWVyeSA9CgkJICAgICAgIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCAoKS4KCQkgICAgICAibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBWQUxVRVMgKD8sPyw/LD8sPykiOwoJCSAgICAkZGJyZXN1bHQgPQoJCSAgICAgICRkYi0+RXhlY3V0ZSAoJHF1ZXJ5LAoJCQkJICAgIGFycmF5ICgkY2F0aWQsCgkJCQkJICAgJHBhcmFtc1siaW5wdXRfY2F0ZWdvcnluYW1lIl0sCgkJCQkJICAgJHBhcmFtc1siaW5wdXRfY2F0ZWdvcnlkZXNjIl0sCgkJCQkJICAgJHBhcmFtc1siaW5wdXRfY2F0ZWdvcnlwYXRoIl0sCgkJCQkJICAgJHBhcmFtc1siaW5wdXRfY2F0ZWdvcnlsaXN0YWJsZSJdKSk7CgkJICAgIGlmICghJGRicmVzdWx0KQoJCSAgICAgIHsKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywKCQkJCQkgICAgICAgJHRoaXMtPkxhbmcgKCJtZXNzYWdlX2NhdGVnb3J5YWRkZWQiKSk7CgkJCSRlcnJvciA9IHRydWU7CgkJICAgICAgfQoJCSAgICBlbHNlCgkJICAgICAgewoJCQlpZiggJGRvX3NjYW4gKQoJCQkgIHsKCQkJICAgIC8vIGNhdGVnb3J5IGlzIGFkZGVkLCBhbmQgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0ZWQuLi4gc28gbm93CgkJCSAgICAvLyB3ZSdyZSBnb25uYSBzY2FuIHRoZSBkaXJlY3RvcnkgYW5kIGFkZCBmaWxlcyB0byB0aGUgZGF0YWJhc2UKCQkJICAgICR0aGlzLT5TY2FuRGlyZWN0b3J5KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJGRpciApOwoJCQkgIH0KCgkJCS8vIHNlbmQgYW4gZXZlbnQKCQkJJHBhcm1zID0gYXJyYXkoKTsKCQkJJHBhcm1zWyduYW1lJ10gPSAkcGFyYW1zWydpbnB1dF9jYXRlZ29yeW5hbWUnXTsKCQkJJHBhcm1zWydkZXNjcmlwdGlvbiddID0gJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlkZXNjJ107CgkJCSRwYXJtc1sncGF0aCddID0gJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlwYXRoJ107CgkJCSRwYXJtc1snbGlzdGFibGUnXSA9ICRwYXJhbXNbJ2lucHV0X2NhdGVnb3J5bGlzdGFibGUnXTsKCQkJJHRoaXMtPlNlbmRFdmVudCggJ09uQ3JlYXRlQ2F0ZWdvcnknLCAkcGFybXMgKTsKCQkgICAgICB9CgkJICB9CgkgICAgICB9CgkgIH0KICAgICAgfQogICAgCiAgICBpZiAoJGVycm9yKQogICAgICB7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZGRjYXRlZ29yeS50cGwnKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiICgkaWQsICdjYXRlZ29yaWVzJyk7CiAgICAgIH0KPz4K]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICAgIHsKICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICd1cGxvYWRmb3JtX3RlbXBsYXRlJyk7CiAgICB9CgogIGlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgICB7CiAgICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQogICAgICByZXR1cm47CiAgICB9CgogICR0ZW1wbGF0ZSA9ICIiOwogIGlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKICAgIHsKICAgICAgJHRlbXBsYXRlID0gdHJpbSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKICAgIH0KICAKICAkcHJlZml4ID0gIiI7CiAgaWYoIGlzc2V0KCAkcGFyYW1zWydwcmVmaXgnXSApICkKICAgIHsKICAgICAgJHByZWZpeCA9IHRyaW0oJHBhcmFtc1sncHJlZml4J10pOwogICAgfQoKICBpZiggIWlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSApICkKICAgIHsKICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICByZXR1cm47CiAgICB9CgogIGlmKCAkdGVtcGxhdGUgPT0gIiIgfHwgJHByZWZpeCA9PSAiIiApCiAgICB7CiAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsIAoJCQkJJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAkbmV3dGVtcGxhdGUgPSAkcHJlZml4IC4gJHRlbXBsYXRlOwoKICAvLyBjaGVjayBpZiB0aGlzIHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzCiAgJHR4dCA9IHRyaW0oJHRoaXMtPkdldFRlbXBsYXRlKCRuZXd0ZW1wbGF0ZSkpOwogIGlmKCAkdHh0ICE9ICIiICkKICAgIHsKICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGxhdGVuYW1lZXhpc3RzJykpOwogICAgICByZXR1cm47CiAgICB9CgogIC8vIHdlJ3JlIHJlYWR5IHRvIHNldCBpdAogICR0aGlzLT5TZXRUZW1wbGF0ZSgkbmV3dGVtcGxhdGUsJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pOwogICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAndXBsb2FkZm9ybV90ZW1wbGF0ZScpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICAgIHsKICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICd1cGxvYWRmb3JtX3RlbXBsYXRlJyk7CiAgICB9CgogIGlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgICB7CiAgICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQogICAgICByZXR1cm47CiAgICB9CgogIGlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddICkgKQogICAgewogICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAKCQkJCSR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgaWYoICFpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkKICAgIHsKICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICByZXR1cm47CiAgICB9CgogICR0aGlzLT5TZXRUZW1wbGF0ZSggJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10gKTsKICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3VwbG9hZGZvcm1fdGVtcGxhdGUnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgaWYoICEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkKICAgIHsKICAgICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCiAgICAgIHJldHVybjsKICAgIH0KCiAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBhIHRlbXBsYXRlIG5hbWUKICBpZiggIShpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSB8fCBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSkpICkKICAgIHsKICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICByZXR1cm47CiAgICB9CgogICRjb250ZW50cyA9ICIiOwogIGlmKCBpc3NldCggJHBhcmFtc1sncHJlZml4J10gKSApCiAgICB7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsICdkb19hZGR0ZW1wbGF0ZScpKTsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZW5hbWUnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGVtcGxhdGUnLCAiIiwgNDAgKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdwcmVmaXgnLCAkcGFyYW1zWydwcmVmaXgnXSApKTsKICAgIH0KICBlbHNlIAogICAgewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHRlbXBsYXRlJykpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlbmFtZScsJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZScsICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSk7CiAgICAgICRjb250ZW50cyA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKICAgIH0KCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGVuYW1lJywkdGhpcy0+TGFuZygncHJvbXB0X3RlbXBsYXRlbmFtZScpKTsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZScpKTsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlJywKCQkJJHRoaXMtPkNyZWF0ZVRleHRBcmVhIChmYWxzZSwgJGlkLAoJCQkJCSAgICAgICAkY29udGVudHMsICd0ZW1wbGF0ZWNvbnRlbnQnLCAnJykpOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdGJ1dHRvbicsCgkJCQkJCQkgICAkdGhpcy0+TGFuZyAoJ3N1Ym1pdCcpKSk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgCgkJCQkJCQkgICAkdGhpcy0+TGFuZyAoJ2NhbmNlbCcpKSk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZW1wbGF0ZS50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.getfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIEF1dGhvcjogUm9iZXJ0IENhbXBiZWxsIDxyb2JAdGVjaGNvbS5keW5kbnMub3JnPgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgaWYoICFpc3NldCggJHBhcmFtc1sndXBsb2FkX2lkJ10gKSApCiAgICAgIHsKCS8vIHRvZG8gZGlzcGxheSBlcnJvcgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgaWQKICAgICRmaWxlX2lkID0gJHBhcmFtc1sndXBsb2FkX2lkJ107CiAgICAKICAgIC8vIGdldCB0aGUgZGV0YWlscwogICAgJGZpbGVfZGV0YWlscyA9ICR0aGlzLT5fZ2V0VXBsb2FkRmlsZURldGFpbHMoICRmaWxlX2lkICk7CiAgICBpZiggISRmaWxlX2RldGFpbHNbJ3VwbG9hZF9uYW1lJ10gKSAKICAgICAgewoJLy8gdG9kbyBkaXNwbGF5IGVycm9yCgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAkdGhpcy0+TGFuZyggJ2Vycm9yX2ZpbGVub3Rmb3VuZCcsICRmaWxlX2lkICkgKTsKCXJldHVybjsKICAgICAgfQogICAgJGNhdGVnb3J5X2RldGFpbHMgPSAkdGhpcy0+X2dldFVwbG9hZENhdGVnb3J5RGV0YWlscyggJGZpbGVfZGV0YWlsc1sndXBsb2FkX2NhdGVnb3J5X2lkJ10gKTsKICAgICRwYXRoID0gJy8nOwogICAgaWYoICEkY2F0ZWdvcnlfZGV0YWlsc1sndXBsb2FkX2NhdGVnb3J5X3BhdGgnXSApIAogICAgICB7CgkvLyB0b2RvIGRpc3BsYXkgZXJyb3IKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgJHRoaXMtPkxhbmcoICdlcnJvcl9kYmVycm9yJyApICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAKICAgICRmaWxlID0gJHRoaXMtPl91cGxvYWRQYXRoKCAkY2F0ZWdvcnlfZGV0YWlsc1sndXBsb2FkX2NhdGVnb3J5X3BhdGgnXSwKCQkJICAgICAgIHN0cl9yZXBsYWNlKCBhcnJheSgnICcsJyUyMCcpLGFycmF5KCdfJywnXycpLCRmaWxlX2RldGFpbHNbJ3VwbG9hZF9uYW1lJ10gKSApOwogICAgCiAgICBpZiggIWZpbGVfZXhpc3RzKCAkZmlsZSApIHx8ICFpc19yZWFkYWJsZSggJGZpbGUgKSApCiAgICAgIHsKCS8vIHRvZG8gZGlzcGxheSBlcnJvcgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyggJ2Vycm9yX2ZpbGVub3Rmb3VuZCcsICRmaWxlICkgKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIHR1cm4gb2ZmIHpsaWIgY29tcHJlc3Npb24gCiAgICBpZihpbmlfZ2V0KCd6bGliLm91dHB1dF9jb21wcmVzc2lvbicpKQogICAgICAgIHsKICAgICAgICBpbmlfc2V0KCd6bGliLm91dHB1dF9jb21wcmVzc2lvbicsICdPZmYnKTsKICAgICAgICB9CgogICAgQG9iX2NsZWFuKCk7CiAgICBAb2JfY2xlYW4oKTsKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsKICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmlsZSkpOwogICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpKTsKICAgIHJlYWRmaWxlKCRmaWxlKTsgIAoKICAgIC8vIG5vdyB0byBhZGQgdGhlIGRvd25sb2FkIHNodHVmZiB0byB0aGUgZGF0YWJhc2UKICAgIC8vIGlmIHdlIGFyZSBub3QgZXhjbHVkaW5nIHRoaXMgc3VibmV0CiAgICAkc3VibmV0cyA9IHNwbGl0KCIsIiwkdGhpcy0+R2V0UHJlZmVyZW5jZSgic3VibmV0X2V4Y2x1c2lvbiIpKTsKICAgICR0ZXN0ID0gMDsKICAgIGZvcmVhY2goJHN1Ym5ldHMgYXMgJHN1Ym5ldCkKICAgIHsKICAgICAgJHRlc3QgPSAkdGhpcy0+X3Rlc3RpcCggJHN1Ym5ldCwgZ2V0ZW52KCJSRU1PVEVfQUREUiIgKSApOwogICAgICBpZiggJHRlc3QgKQoJewoJICAvLyBkb24ndCBhbGxvdyBhbnkgbW9yZSBwcm9jZXNzaW5nCgkgIGV4aXQoKTsKCX0KICAgIH0KICAgIAogICAgLy8gZ2V0IGEgbmV3IHZhbHVlIGZyb20gdGhlIHNlcXVlbmNlIGRhdGFiYXNlCiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkbmV3aWQgPSAkZGItPkdlbklEKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2Rvd25sb2Fkc19zZXEiICk7CiAgICAkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2Rvd25sb2FkcyBWQUxVRVMgKD8sPyw/LD8sPykiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIAoJCQkgICAgICBhcnJheSggJG5ld2lkLCAkZmlsZV9pZCwgCgkJCQkgICAgIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCInIiksCgkJCQkgICAgICBnZXRlbnYoIlJFTU9URV9BRERSIiksICJ1bmtub3duIiAvKiBUT0RPLCBmaWxsIHRoaXMgaW4gbGF0ZXIgKi8gKSApOwogICAgLyogSSB3b3VsZCBub3JtYWxseSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBkb24ndCB3YW50IHBlb3BsZSB0byBuZWNlc3NhcmlseSBrbm93IEkgYW0gdHJhY2tpbmcgdGhlbSAqLwogICAgJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+bGFuZygnZnJpZW5kbHluYW1lJyksCgkJICAkdGhpcy0+bGFuZygnZG93bmxvYWRlZCcsICRmaWxlKSApOwoKICAgIC8vIHNlbmQgYW4gZXZlbnQKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkcGFybXNbJ2lkJ10gPSAkZmlsZV9pZDsKICAgICRwYXJtc1snbmFtZSddID0gJGZpbGU7CiAgICAkcGFybXNbJ2lwJ10gPSBnZXRlbnYoIlJFTU9URV9BRERSIik7CiAgICAkdGhpcy0+U2VuZEV2ZW50KCAnT25Eb3dubG9hZCcsICRwYXJtcyApOwoKICAgIC8vIGRvbid0IGFsbG93IGFueSBtb3JlIHByb2Nlc3NpbmcKICAgIGV4aXQoKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnlpZCddID0gJ05vIENhdGVnb3J5IGlkIHdhcyBzdXBwbGllZCc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnTm8gQ2F0ZWdvcnkgaWQgd2FzIHN1cHBsaWVkJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0EgdGVtcGxhdGUgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ0NyZWF0ZSBhIG5ldyB0ZW1wbGF0ZSc7CiRsYW5nWydoZWxwX09uRG93bmxvYWQnXSA9ICcKPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGZpbmlzaGVzIGRvd25sb2FkaW5nIGEgZmlsZTwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+aWQ8L2VtPiAtIFVwbG9hZCBJRDwvbGk+CjxsaT48ZW0+bmFtZTwvZW0+IC0gRmlsZSBuYW1lPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIElQIEFkZHJlc3Mgb2YgdGhlIGRvd25sb2FkZXI8L2xpPgo8L3VsPgonOwokbGFuZ1snaGVscF9PbkRlbGV0ZUNhdGVnb3J5J10gPSAnCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgY2F0ZWdvcnkgaXMgRGVsZXRlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+bmFtZTwvZW0+IC0gQ2F0ZWdvcnkgbmFtZTwvbGk+CjxsaT48ZW0+cGF0aDwvZW0+IC0gQ2F0ZWdvcnkgcGF0aDwvbGk+CjwvdWw+Cic7CiRsYW5nWydoZWxwX09uQ3JlYXRlQ2F0ZWdvcnknXSA9ICcKPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBjYXRlZ29yeSBpcyBDcmVhdGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgY2F0ZWdvcnk8L2xpPgo8bGk+PGVtPmRlc2NyaXB0aW9uPC9lbT4gLSBUaGUgY2F0ZWdvcnkgZGVzY3JpcHRpb248L2xpPgo8bGk+PGVtPnBhdGg8L2VtPiAtIFRoZSBjYXRlZ29yeSBwYXRoPC9saT4KPGxpPjxlbT5wYXRoPC9lbT4gLSBBIGZsYWcgaW5kaWNhdGluZyBpZiB0aGUgY2F0ZWdvcnkgaXMgbGlzdGFibGU8L2xpPgo8L3VsPgonOwokbGFuZ1snaGVscF9PblJlbW92ZSddID0gJwo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGZpbGUgaXMgcmVtb3ZlZCB2aWEgdGhlIGFkbWluIG9yIGZyb250ZW5kIGludGVyZmFjZXM8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSByZW1vdmVkIGZpbGU8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIHJlbW92ZWQgZmlsZTwvbGk+CjxsaT48ZW0+Y2F0ZWdvcnlfaWQ8L2VtPiAtIFRoZSBpZCBvZiB0aGUgY2F0ZWdvcnk8L2xpPgo8L3VsPgonOwokbGFuZ1snaGVscF9PblVwbG9hZCddID0gJwo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyBmaWxlIGlzIHVwbG9hZGVkIHZpYSB0aGUgYWRtaW4gb3IgZnJvbnRlbmQgaW50ZXJmYWNlczwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+Y2F0ZWdvcnk8L2VtPiAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgdXBsb2FkZWQgZmlsZTwvbGk+CjxsaT48ZW0+c2l6ZTwvZW0+IC0gVGhlIHNpemUgb2YgdGhlIHVwbG9hZGVkIGZpbGU8L2xpPgo8bGk+PGVtPnN1bW1hcnk8L2VtPiAtIFRoZSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhlIHVwbG9hZGVkIGZpbGUgKG1heSBiZSBlbXB0eSk8L2VtPjwvbGk+CjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIFRoZSBsb25nIGRlc2NyaXB0aW9uIGZvciB0aGUgdXBsb2FkZWQgZmlsZSAobWF5IGJlIGVtcHR5KTwvZW0+PC9saT4KPGxpPjxlbT5hdXRob3I8L2VtPiAtIFRoZSBhdXRob3Igb2YgdGhlIHVwbG9hZGVkIGZpbGUgKGlmIGF2YWlsYWJsZSk8L2VtPjwvbGk+CjxsaT48ZW0+aXBfYWRkcmVzczwvZW0+IC0gVGhlIGludGVybmV0IGFkZHJlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVwbG9hZGVkIHRoZSBmaWxlPC9saT4KPC91bD4KJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25kZWxldGVjYXRlZ29yeSddID0gJ0V2ZW50IGdlbmVyYXRlZCB3aGVuIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZCc7CiRsYW5nWydpbmZvX2V2ZW50X29uY3JlYXRlY2F0ZWdvcnknXSA9ICdFdmVudCBnZW5lcmF0ZWQgd2hlbiBhIGNhdGVnb3J5IGlzIGNyZWF0ZWQnOwokbGFuZ1snaW5mb19ldmVudF9vbmRvd25sb2FkJ10gPSAnRXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBmaWxlIGlzIGRvd25sb2FkZWQnOwokbGFuZ1snaW5mb19ldmVudF9vbnVwbG9hZCddID0gJ0V2ZW50IGdlbmVyYXRlZCB3aGVuIGEgbmV3IGZpbGUgaXMgdXBsb2FkZWQnOwokbGFuZ1snaW5mb19ldmVudF9vbnJlbW92ZSddID0gJ0V2ZW50IGdlbmVyYXRlZCB3aGVuIGEgZmlsZSBpcyByZW1vdmVkJzsKJGxhbmdbJ3RpdGxlX3VzZXJ0YWdfb251cGxvYWQnXSA9ICdVc2VyIGRlZmluZWQgdGFnIHRvIGNhbGwgYWZ0ZXIgdXBsb2FkIGlzIGNvbXBsZXRlJzsKJGxhbmdbJ25vbmUnXSA9ICdOb25lJzsKJGxhbmdbJ21hdGNoZXNmb3VuZCddID0gJ01hdGNoZXMgZm91bmQnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3RpdGxlX3JlZGlyZWN0b251cGxvYWQnXSA9ICdSZWRpcmVjdCB0byBwYWdlIGlkL2FsaWFzIG9uIHVzZXIgdXBsb2FkJzsKJGxhbmdbJ2RldGFpbHMnXSA9ICdEZXRhaWxzJzsKJGxhbmdbJ2NvbmZpcm1fcHJlZmVyZW5jZXMnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gYWRqdXN0IHRoZSBwcmVmZXJlbmNlcz8nOwokbGFuZ1snZXJyb3Jfbm9maWxlc3VwbG9hZGVkJ10gPSAnTm8gZmlsZXMgd2VyZSB1cGxvYWRlZC4nOwokbGFuZ1sncHJvbXB0X3JlcGxhY2UnXSA9ICdBbGxvdyBPdmVyd3JpdGUnOwokbGFuZ1snaW5mb19yZXBsYWNlJ10gPSAnUmVwbGFjZSBhbnkgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgKGRvZXMgbm90IGNoYW5nZSBpZCknOwokbGFuZ1snbm9faW5pdGlhbCddID0gJ0RvIG5vdCBkaXNwbGF5IGFueSBpbml0aWFsIHJlc3VsdHMgd2hlbiB0aGUgZmlsdGVyIGlzIG9uJzsKJGxhbmdbJ3BhcmFtX2tleSddID0gJ1Byb3ZpZGUgYW4gYWRkaXRpb25hbCBrZXkgdG8gdGhlIG1vZHVsZSBmb3IgZnVydGhlciBvcmdhbml6aW5nIHVwbG9hZHMuICBUaGlzIGtleSBjb3VsZCBiZSBhbiBlbmNvZGVkIHN0cmluZyBsaWtlOiBcJ2ZldXNlcnM6dWlkXCcsIGV0Yy4gIFRoaXMgcGFyYW1ldGVyIGlzIHVzdWFsbHkgb25seSBuZWVkZWQgd2hlbiBlbWJlZGRpbmcgdGhlIHVwbG9hZHMgbW9kdWxlIGludG8gYW5vdGhlciBtb2R1bGUnOwokbGFuZ1sncGFyYW1fbm9hdXRob3InXSA9ICdIaWRlIHRoZSBhdXRob3IgZmllbGQgZnJvbSB0aGUgdXBsb2FkIGZvcm0uICBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIHdoZW4gbW9kZT1cJ3VwbG9hZFwnLiAgSWYgVGhlIEZyb250ZW5kVXNlcnMgbW9kdWxlIGlzIHByZXNlbnQsIGFuZCBhIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbiwgYSBoaWRkZW4gZmllbGQgd2lsbCBob2xkIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJuYW1lJzsKJGxhbmdbJ3BhcmFtX3VwbG9hZF9pZCddID0gJwp1cGxvYWRfaWQ9ImlkIiAtIHNwZWNpZnkgYSBzaW5nbGUgZmlsZSBmb3IgdGhlIHVybC9saW5rIG9yIHNpbmdsZSBtb2RlcyAoYWJvdmUpJzsKJGxhbmdbJ3BhcmFtX3VzZV9zdHJpY3RfcmVnZXhwJ10gPSAnVGhlIGZpbHRlciBmaWVsZCBpcyB1c2VkIGFzIGEgc3RyaWN0IHJlZ2V4cCB3aXRob3V0IHByZXByb2Nlc3Npbmcgb2Ygc3BhY2VzJzsKJGxhbmdbJ3BhcmFtX3RlbXBsYXRlJ10gPSAnVXNlIGEgdGVtcGxhdGUgd2l0aCB0aGlzIG5hbWUgZm9yIHRoaXMgcmVwb3J0IG9yIGZvcm0uICBUaGlzIHRlbXBsYXRlIGF1dG9tYXRpY2FsbHkgcHVsbHMgYSB0ZW1wbGF0ZSB3aXRoIHRoZSBtYXRjaGluZyBuYW1lIGZyb20gdGhlIGFwcHJvcHJpYXRlIGxpc3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBtb2RlJzsKJGxhbmdbJ3BhcmFtX2ZpbHRlciddID0gJ0Rpc3BsYXkgdGhlIGZpbHRlcmluZyBmb3JtJzsKJGxhbmdbJ3BhcmFtX25vX2ludGl0aWFsJ10gPSAnT25seSB1c2VmdWwgd2hlbiB0aGUgZmlsdGVyIHBhcmFtZXRlciBpcyBzdXBwbGllZCwgb3Igb24gYnkgZGVmYXVsdCwgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdldGhlciBpbml0aWFsIHJlc3VsdHMgc2hvdWxkIGJlIHJldHVybmVkJzsKJGxhbmdbJ3BhcmFtX3NvcnRvcmRlciddID0gJwogIDxwPlNvcnQgT3JkZXJzCiAgPHVsPgogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRhdGU8L2xpPgogIDxsaT48ZW0+ZGF0ZV9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgZGF0ZTwvbGk+CiAgPGxpPjxlbT5uYW1lX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgbmFtZTwvbGk+CiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBuYW1lPC9saT4KICA8bGk+PGVtPnNpemVfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBzaXplPC9saT4KICA8bGk+PGVtPnNpemVfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIHNpemU8L2xpPgogIDxsaT48ZW0+ZGVzY19hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4KICA8bGk+PGVtPmRlc2NfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4KICA8bGk+PGVtPmF1dGhvcl9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGF1dGhvcjwvbGk+CiAgPGxpPjxlbT5hdXRob3JfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGF1dGhvcjwvbGk+CiAgPGxpPjxlbT5pcF9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGlwIGFkZHJlc3M8L2xpPgogIDxsaT48ZW0+aXBfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGlwIGFkZHJlc3M8L2xpPgogIDxsaT48ZW0+cmFuZG9tPC9lbT4gLSBSYW5kb20gc29ydCBvcmRlcjwvbGk+CiAgPC91bD4KICA8L3A+JzsKJGxhbmdbJ3BhcmFtX2ZpbGVleHRlbnNpb25zJ10gPSAnIApmaWxlX2V4dGVuc2lvbnM9ImV4dDEsZXh0MixleHQzIgo8cD52YWxpZCBvbmx5IHdoZW4gbW9kZT11cGxvYWQsIHRoaXMgcGFyYW1ldGVyIGxpbWl0cyB0aGUgdHlwZXMgb2YgZmlsZXMgdGhhdCBjYW4gYmUgdXBsb2FkZWQuICBJdCBvdmVycmlkZXMgYW55IHNldHRpbmdzIGluIHRoZSBtb2R1bGUgcHJlZmVyZW5jZXMuPC9wPic7CiRsYW5nWydwYXJhbV9jb3VudCddID0gJwpjb3VudD0iTiIKPHA+QSBwYXJhbWV0ZXIgdG8gbGlzdCBvbmx5IHRoZSBmaXJzdCBOIHJlc3VsdHMgb2YgdGhlIHF1ZXJ5LiAgUGFnaW5hdGlvbiB3b3VsZCBiZSBiZXR0ZXIsIGJ1dCB0aGlzIHdpbGwgZG8gdGhlIHRyaWNrIGZvciBub3c8L3A+JzsKJGxhbmdbJ3BhcmFtX2NhdGVnb3J5J10gPSAnCmNhdGVnb3J5PSJuYW1lIgo8cD48Yj5Ob3RlOjwvYj4gQ2F0ZWdvcnkgY2FuIGJlICJhbGwiLCB3aGljaCB3aWxsIGxpc3QgYWxsIG9mIHRoZSB1cGxvYWRzIGZyb20gYWxsIDxlbT5saXN0YWJsZTwvZW0+IGNhdGVnb3JpZXM8L3A+JzsKJGxhbmdbJ3BhcmFtX21vZGUnXSA9ICcKICA8dWw+CiAgPGxpPjxlbT5kZXRhaWxlZDwvZW0+IC0gRGlzcGxheSBhIGRldGFpbGVkIGxpc3Qgb2YgYWxsIGZpbGVzIGluIHRoZSBjYXRlZ29yeTwvbGk+CiAgPGxpPjxlbT51cGxvYWQ8L2VtPiAtIERpc3BsYXkgYSBmb3JtIHRvIGFsbG93IGEgZnJvbnRlbmQgdXNlciB0byB1cGxvYWQgYSBmaWxlPC9saT4KICA8bGk+PGVtPnVybCA8aT5vcjwvaT4gbGluazwvZW0+IC0gRGlzcGxheSBhIGxpbmsgdG8gYSBmaWxlPC9saT4KICA8bGk+PGVtPnN1bW1hcnk8L2VtPiAtIERpc3BsYXkgYSBzdW1tYXJpemVkIGxpc3Qgb2YgYWxsIGZpbGVzIGluIHRoZSBjYXRlZ29yeTwvbGk+CiAgPGxpPjxlbT5zaW5nbGU8L2VtPiAtIERpc3BsYXkgYSBkZXRhaWxlZCByZXBvcnQgYWJvdXQgYSBzaW5nbGUgdXBsb2FkPC9saT4KICA8bGk+PGVtPnNpbmdsZXN1bW1hcnk8L2VtPiAtIERpc3BsYXkgYSBzdW1tYXJpemVkIHJlcG9ydCBhYm91dCBhIHNpbmdsZSB1cGxvYWQvbGk+CiAgPC91bD4nOwoKJGxhbmdbJ3JldHVybnRvbW9kdWxlJ10gPSAnUmV0dXJuIHRvIG1vZHVsZSBwYW5lbCc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3JpZXMnXSA9ICdUaGVyZSBhcmUgbm8gZGVmaW5lZCBjYXRlZ29yaWVzJzsKJGxhbmdbJ3RpdGxlX2VuZm9yY2VleHRlbnNpb25zJ10gPSAnUmVxdWlyZSBleHRlbnNpb25zIG9uIGFsbCB1cGxvYWRlZCBmaWxlcyc7CiRsYW5nWydyZXN0b3JlZGVmYXVsdHNjb25maXJtJ10gPSAnVGhpcyBvcGVyYXRpb24gd2lsbCByZXN0b3JlIHRoZSB0ZW1wbGF0ZSB0byBzeXN0ZW0gZGVmYXVsdHMuICBBbnkgY2hhbmdlcyB5b3UgaGF2ZSBtYWRlIHdpbGwgYmUgbG9zdC4gIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwcm9jZWVkPyc7CiRsYW5nWydpbmZvX3RodW1ibmFpbCddID0gJ0FuIG9wdGlvbmFsIHRodW1ibmFpbCBmaWxlJzsKJGxhbmdbJ3RodW1ibmFpbCddID0gJ1RodW1ibmFpbCc7CiRsYW5nWydpbmZvX3N1bW1hcnknXSA9ICdBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIChpZiBlbXB0eSwgdGhlIGZpbGUgbmFtZSBpcyB1c2VkIHdpdGhvdXQgdGhlIGV4dGVuc2lvbiknOwokbGFuZ1snaW5mb19jYXRlZ29yeW5hbWUnXSA9ICdBIGJyaWVmIG5hbWUgZm9yIHlvdXIgY2F0ZWdvcnkgKGh1bWFuIHJlYWRhYmxlKSc7CiRsYW5nWydpbmZvX2NhdGVnb3J5ZGVzYyddID0gJ0EgZGVzY3JpcHRpb24gZm9yIHlvdXIgY2F0ZWdvcnknOwokbGFuZ1snaW5mb19jYXRlZ29yeXBhdGgnXSA9ICdUaGUgZGlyZWN0b3J5IG5hbWUgaW5zaWRlIHRoZSB1cGxvYWRzIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzdG9yZSBmaWxlcyBpbiB0aGlzIGNhdGVnb3J5LiAgSWYgdGhlIGRpcmVjdG9yeSBvZiB0aGlzIG5hbWUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgaXQgbWF5IGJlIGNyZWF0ZWQnOwokbGFuZ1snaW5mb19kZXN0bmFtZSddID0gJ1VzZSB0aGUgXCdVcGxvYWQgQXNcJyBmaWVsZCB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGZpbGUgb24gdXBsb2FkLiAgTGVhdmUgYmxhbmsgdG8gcHJlc2VydmUgdGhlIGZpbGVuYW1lIGFzLWlzLic7CiRsYW5nWydlcnJvcl9jYW50Y3JlYXRlZGlyZWN0b3J5J10gPSAnQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnknOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdUaGUgQ01TTWFpbGVyIG1vZHVsZSBjb3VsZCBub3QgYmUgaW5zdGFudGlhdGVkJzsKJGxhbmdbJ3VwbG9hZF9ub3RpZmljYXRpb24nXSA9ICdBIG5ldyBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkJzsKJGxhbmdbJ3RpdGxlX2VtYWlsX29uX3VwbG9hZCddID0gJ1NlbmQgdXBsb2FkIG5vdGlmaWNhdGlvbiB0bzonOwokbGFuZ1snZW1haWxfdGVtcGxhdGUnXSA9ICdFbWFpbCBUZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9kdW1teV9pbmRleF9odG1sJ10gPSAnQ3JlYXRlIGR1bW15IGluZGV4Lmh0bWwgZmlsZXMgaW4gZWFjaCBkaXJlY3Rvcnk/PGJyLz48ZW0+QW55IGV4aXN0aW5nIGluZGV4Lmh0bWwgZmlsZXMgd2lsbCByZW1haW48L2VtPic7CiRsYW5nWydhYm91dCddID0gJ0Fib3V0JzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb25kZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3JfY291bGRub3R3cml0ZSddID0gJ0NvdWxkIG5vdCB3cml0ZSc7CiRsYW5nWydhZGRjYXRlZ29yeSddID0gJ0FkZCBDYXRlZ29yeSc7CiRsYW5nWydhbGwnXSA9ICdBbGwnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyZSBZb3UgU3VyZT8nOwokbGFuZ1snYXV0aG9yJ10gPSAnQXV0aG9yJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjYW5ub3Rtb2RpZnlwYXRoJ10gPSAnKFRoZSBwYXRoIGNhbm5vdCBiZSBtb2RpZmllZCknOwokbGFuZ1snY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydtZXNzYWdlX2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBzdWNjZXNzZnVsbHkgYWRkZWQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+CjxwPlZlcnNpb24gMS4wLiAtIFNlcHRlbWJlciAyMDA1LjwvcD4KPHA+IEluaXRpYWwgUmVsZWFzZS48L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjAxLiAtIFNlcHRlbWJlciAyMDA1PC9wPgo8cD5NaW5vciBmaXhlcy48L3A+PC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDIuIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBzb3J0IG9yZGVyPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wMy4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+Rml4IHJlZ2FyZGluZyBjb25mbGljdCBpbiB0ZW1wbGF0ZSBuYW1lczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDQuIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkFkZGVkIGFiaWxpdHkgdG8gcmUtc2NhbiBhIGRpcmVjdG9yeSwgYW5kIHRvIHVwbG9hZCBmaWxlcyBmcm9tIHRoZSBhZG1pbiBwYWdlPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wNS4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+Rml4ZWQgc29tZSBQSFAgdmFyaWFibGUgaXNzdWVzPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4wNi4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4KPHA+QWRkZWQgYXV0aG9yIGZpZWxkIHRvIHRoZSBhZG1pbiBwYW5lbCB1cGxvYWQgZm9ybSwgYWRkZWQgYSBzdW1tYXJ5IGZpZWxkLCBhbmQgbWFkZSBkZXNjcmlwdGlvbiBhIHRleHQgYXJlYSwgYW5kIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBmaWxlIG5hbWU8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjA3LiAtIFNlcHRlbWJlciAyMDA1PC9wPgo8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byByZW5hbWUgZmlsZXMgYW5kIGZpeGVkIGEgc2NhbiBlcnJvcjwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMDguIC0gU2VwdGVtYmVyIDIwMDU8L3A+CjxwPkJldHRlciBoYW5kbGluZyBvZiBuYW1lcyB3aXRoIHNwYWNlcywgYW5kIGEgZmV3IG1pbm9yIGVycm9ycyBmaXhlZC4gIEFkZGVkIHN3ZWRpc2ggdHJhbnNsYXRpb24gKHRoYW5rcyB3ZXN0aXMpPC9wPjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMC4gLSBPY3RvYmVyIDIwMDU8L3A+CiA8dWw+CiAgIDxsaT5Nb2RpZmllZCBBdHRlbXB0VXBsb2FkIGZ1bmN0aW9uIHNvIGl0IGNvdWxkIGJlIGNhbGxlZCBleHRlcm5hbGx5PC9saT4KICAgPGxpPkFkZGVkIEdldFVwbG9hZERldGFpbHMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZGV0YWlscyBhYm91dCBhIG1vZHVsZSwgaW5jbHVkaW5nIGEgbGluazwvbGk+CiAgIDxsaT5BZGRlZCBSZWRpcmVjdHMgc28gdGhhdCB3b3JraW5nIHdpdGggdGhlIG1vZHVsZSBpcyBhbG90IG5pY2VyLCBpdCByZXR1cm5zIHRvIHRoZSByaWdodCB0YWI8L2xpPgogICA8bGk+Q2hhbmdlZCB0aGUgZnJvbnQgdGVtcGxhdGUgdG8gbG9vayBhIGxpdHRsZSBiZXR0ZXIgYW5kIG1ha2UgbW9yZSBzZW5zZTwvbGk+CiAgIDxsaT5GaXhlcyB0byB0aGUgdXBsb2FkcyBzdHVmZiBzbyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBzZXQsIGFuZCBuYW1lIGFuZCBzdW1tYXJ5IGFyZSBwdXQgaW4gdGhlIHJpZ2h0IHBsYWNlPC9saT4KICAgPGxpPkZpeGVzIHRvIGV2ZW4gYmV0dGVyIGhhbmRsZSBzcGFjZXMgaW4gbmFtZXM8L2xpPgogICA8bGk+T3B0aW9uYWx5IHBsYWNlIGR1bW15IGluZGV4Lmh0bWwgZmlsZXMgaW4gZWFjaCB1cGxvYWQgZGlyZWN0b3J5PC9saT4KICAgPGxpPklmIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBuYW1lLCBhbmQgbm8gZXh0ZW5zaW9uIGlzIGdpdmVuLCB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBvcmlnaW5hdGluZyBmaWxlIChpZiBhbnkgZXhpc3RzIGlzIHVzZWQ8L2xpPgogPC91bD4KIDxwPjxlbT48Yj5JbXBvcnRhbnQhPC9iPjwvZW0+PGJyLz5JdCBpcyBub3QgcG9zc2libGUgdG8gdXBncmFkZSBmcm9tIGFueSBvdGhlciB2ZXJzaW9uIG9mIHRoZSBVcGxvYWRzIG1vZHVsZSB0byAxLjEuMC4gIFRoaXMgaXMgZHVlIHRvIHNvbWUgZXJyb3JzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBkYXRhYmFzZSByb3V0aW5lcywgYW5kIGV2ZW4gaW4gdGhlIHVwZ3JhZGUgcm91dGluZSBpbiAxLjAuNi4gIFlvdSBtdXN0IGRlLWluc3RhbGwgdGhlIG9sZCB2ZXJzaW9uLCBhbmQgdGhlbiByZS1pbnN0YWxsIHRoZSBuZXcgdmVyZXNpb24uIFRoaXMgd2lsbCBjYXVzZSBzaWduaWZpY2FudCBkaWZmaWN1bHR5IGlmIHlvdSBoYXZlIGRzY3JpcHRpb25zLCBldGMsIGluIHlvdXIgdGFibGVzPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjEuIC0gT2N0b2JlciwgMjAwNTwvcD4KPHA+Rml4ZWQgYSBjb3VwbGUgb2YgbWlub3IgYnVncyBpbiB0aGUgR2V0VXBsb2FkRGV0YWlscyBhbmQgYWRkZWQgYW5vdGhlciBsaW5rIChvciBhIHVybCkgdG8gdGhlIHVwbG9hZGVkIGZpbGUuPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjIuIC0gT2N0b2JlciwgMjAwNTwvcD4KPHA+Rml4ZWQgdGhlIFVSTCBmaWVsZCBpbiBHZXRVcGxvYWREZXRhaWxzIHRvIHJldHVybiBhIGRvd25sb2FkIGxpbmsgYW5kIGFkZGVkIGFuIGFic3VybCBmaWVsZCB3aGljaCByZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlIG9uIHRoZSB3ZWJzZXJ2ZXIuICBDbGlja3Mgb24gdGhpcyBsaW5rIHdpbGwgbm90IGJlIGNvdW50ZWQ8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMy4gLSBPY3RvYmVyLCAyMDA1PC9wPgo8cD5GaXhlZCB0aGUgdXBncmFkZSBwcm9ibGVtIGZyb20gdGhlIDEuMC54IHNlcmllcy4gIFVzZXJzIG9mIHRoZSAxLjAueCBzZXJpZXMgc2hvdWxkIGJlIGFibGUgdG8gdXBncmFkZSB0byAxLjEuMyBub3cgd2l0aCBubyBkaWZmaWN1bHR5LiA8Yj5UaG9zZSBhcmUgZmFtb3VzIGxhc3Qgd29yZHMsIHBsZWFzZSBiYWNrdXAgZmlyc3Q8L2I+LiBGaXhlZCB0aGUgY29udGVudCByZWRpcmVjdCB0aGluZ3MgdGhhdCB3ZXJlIGlycml0YXRpbmcgbWUuICBBbHNvIGFkZGVkIGNhdGVnb3J5PWFsbCB0byBsaXN0IGFsbCBvZiB0aGUgdXBsb2FkcyBpbiBhbGwgbGlzdGFibGUgY2F0ZWdvcmllcyA8ZW0+KGxldHMgYWxsIGhvcGUgSSBnb3QgdGhlIHNxbCBmaWd1cmVkIG91dCBwcm9wZXJseSk8L2VtPi48L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNC4gLSBPY3RvYmVyLCAyMDA1PC9wPgo8cD5BZGRlZCB0aGUgY291bnQgcGFyYW1ldGVyIHRvIGxpc3Qgb25seSB0aGUgZmlyc3QgTiByZWNvcmRzLCBhbmQgYWRkZWQgInN1bW1hcnlsaW5rIiwgYW5kICJjYXRlZ29yeSIgdG8gdGhlIHRlbXBsYXRlcyBmb3Igd2VzdGlzLiAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byB1c2UgdGhlbSByZXNldCB5b3VyIHRlbXBsYXRlcyBiYWNrIHRvIGRlZmF1bHQuPC9wPjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNS4gLSBOb3ZlbWJlciwgMjAwNTwvcD4KPHA+QWRkZWQgZW1haWwgbm90aWZpY2F0aW9uIGFuZCBzb21lIGJ1ZyBmaXhlczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS42LiAtIE5vdmVtYmVyLCAyMDA1PC9wPgo8cD5BZGRlZCBhbiBhcGkgZnVuY3Rpb24gYW5kIGZpeGVkIHNvbWUgcmVkaXJlY3Rpb24gc3R1ZmY8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuNy4gLSBOb3ZlbWJlciwgMjAwNTwvcD4KPHA+TW9yZSBBUEkgZnVuY3Rpb25zLCBhbmQgbm93IGlnbm9yZSBkb3QgZmlsZXMgd2hlbiBzY2FubmluZy4gIEVtYWlsIG5vdGlmaWNhdGlvbiBpcyBub3cgaW4uPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4xLjguIC0gSmFudWFyeSwgMjAwNjwvcD4KPHA+KiBJbXByb3ZlZCBkb2NzIHdydCBhcGFjaGUgYW5kIHBocCBjb25maWdzLjwvcD4KPHA+KiBGaXhlZCBwcm9ibGVtIHdoZXJlIGZpbGVzaXplIHdhcyBzaG93aW5nIHVwIGFzIDAuPC9wPgo8cD4qIE1vZGlmaWVkIHBlcm1pc3Npb25zIHRvIGJlIG1vcmUgZ3JhbnVsYXI8L3A+CjxwPiogQWRkZWQgc29tZSBjb21tZW50cyBhbmQgdmVyYm9zaXR5IHRvIHRoZSBjYXRlZ29yeSBhbmQgdXBsb2FkcyBmb3JtcyBpbiB0aGUgYWRtaW4gc2VjdGlvbjwvcD4KPHA+KiBBZGRlZCAicmFuZG9tIiBzb3J0IG9yZGVyPC9wPgo8cD4qIFNvbWUgUEhQNSBmaXhlczwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS45LiAtIEphbnVhcnksIDIwMDY8L3A+CjxwPiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXBsb2FkIGEgdGh1bWJuYWlsIGltYWdlPC9wPgo8cD4qIFNvbWUgaW1wcm92ZWQgYXVkaXRpbmc8L3A+CjxwPiogeG1sIG5vdyBhZGRlZCB0byB0aGUgZGVmYXVsdCBmaWxlIHR5cGVzIChuZXcgaW5zdGFsbHMgb25seSk8L3A+CjxwPiogQWRkZWQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcmVzZXQgdG8gZGVmYXVsdHMgYnV0dG9ucyBvZiB0aGUgdGVtcGxhdGUgcGFnZXMuPC9wPgo8cD4qIEFkZGVkIHRoZSBmaWxlX2V4dGVuc2lvbnMgcGFyYW1ldGVyIGZvciB0aGUgdXBsb2FkIGZvcm08L3A+CjxwPiogVGhlIGN1cnJlbnQgY2F0ZWdvcnkgc2VsZWN0ZWQgaW4gdGhlIGZpbGVzIGZpbHRlciBpcyBzdGlja3kuCjxwPiogQWRkZWQgYSBwcmVmZXJlbmNlIHRvIGVuZm9yaWNlIGZpbGVuYW1lIGV4dGVuc2lvbnMgKGRlZmF1bHRzIHRvIG9uKTwvcD4KPHA+KiBBZGRlZCBhIGxpbmsgdG8gdGhlIGVkaXQgcGFnZSwgaW4gdGhlIG5hbWUgY29sdW1uIG9mIHRoZSBmaWxlcyBsaXN0LjwvcD4KPHA+KiBNaW5vciBjaGFuZ2VzIHRvIHRoZSBsYXlvdXQgYW5kIHRleHQgdG8gYWRkIGNsYXJpdHkuPC9wPgo8cD4qIEFkZGVkIGRvd25sb2FkX3VybCBhcyBhbiBhdmFpbGFibGUgc21hcnR5IHRhZyBpbiB0aGUgdGVtcGxhdGVzPC9wPgo8bGk+CjxwPlZlcnNpb24gMS4xLjEwLiAtIEZlYnJ1YXJ5LCAyMDA2PC9wPgo8cD4qIFN1bW1hcnkgbm93IGRlZmF1bHRzIHRvIHRoZSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSBpZiBub25lIGlzIHNwZWNpZmllZDwvcD4KPHA+KiBOb3cgY29ycmVjdGx5IGhhbmRsZSBpZiB0aGUgdGh1bWJuYWlsIGV4dGVuc2lvbiBpcyBub3QgaW4gdGhlIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0PC9wPgo8cD4qIE5vIGxvbmdlciBkaXNwbGF5IGFueSBjb250ZW50IGluIHRoZSBmaWxlcyB0YWIgaWYgdGhlcmUgYXJlIG5vIGNhdGVnb3JpZXMgZGVmaW5lZDwvcD4KPHA+KiBEaXNwbGF5IGEgbGluayBpbiB0aGUgZXJyb3IgcGFnZSB0aGF0IHRha2VzIHlvdSBiYWNrIHRvIHRoZSBtYWluIGFkbWluIHBhbmVsPC9wPgo8cD4qIEFsbG93IGZvciByZXBsYWNpbmcgb2YgdXBsb2FkZWQgZmlsZXM8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMTEuIC0gTWFyY2gsIDIwMDY8L3A+CjxwPkFkZGVkIHRoZSBhYmlsaXR5IGZvciBhIGxpbmsgdG8gYSBkZXRhaWxlZCBwYWdlIHdoZW4gaW4gc3VtbWFyeSBtb2RlLjwvcD4KPHA+U3BsaXQgdGhlIGRlZmF1bHQgYWN0aW9uIGFuZCBkZWZhdWx0YWRtaW4gYWN0aW9ucyBpbnRvIHNlcGFyYXRlIGZpbGVzLCBmb3IgYSBiaXQgb2YgbWVtb3J5IGltcHJvdmVtZW50LCBob3BlZnVsbHk8L3A+CjxwPkFkZCB0aGUgYWJpbGl0eSB0byByZWRpcmVjdCB0byBhbm90aGVyIHBhZ2UgYWZ0ZXIgYSBmcm9udGVuZCB1c2VyIHVwbG9hZGVkIGEgZmlsZTwvcD4KPC9saT4KPGxpPgo8cD5WZXJzaW9uIDEuMS4xMi4gLSBNYXJjaCwgMjAwNjwvcD4KPHA+QWRkZWQgdGhlIHNpbmdsZXN1bW1hcnkgbW9kZSB0byBkaXNwbGF5IGEgc2luZ2xlIHVwbG9hZCBpbiBzdW1tYXJ5IG1vZGU8L1A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjEuMTMuIC0gQXByaWwsIDIwMDY8L3A+CjxwPkFkZGVkIG9wdGlvbmFsIGZpbHRlcmluZyBvbiB0aGUgZnJvbnRlbmQsIGFuZCBhIGNvdXBsZSBvZiBleHRyYSBwYXJhbWV0ZXJzIHRvIGdvIHdpdGggaXQ8L3A+CjxwPkZpeGVkIGEgcHJvYmxlbSB3aGVyZSBpdCB3b3VsZCBhbGxvdyB5b3UgdG8gZW50ZXIgYSBibGFuayBwYXRoIHdoZW4gY3JlYXRpbmcgYSBjYXRlZ29yeTwvcD4KPHA+U3BsaXQgc3R1ZmYgaW50byAoc29tZSkgc2VwYXJhdGUgYWN0aW9uIGZpbGVzIGZvciBzb21lIGhvcGVmdWwgcGVyZm9ybWFuY2UgaW5jcmVhc2VzPC9wPgo8cD5BZGRlZCBjb3B5cmlnaHQgbm90aWNlczwvcD4KPHA+Q2hhbmdlZCAob3B0aW9uYWwpIGRlcGVuZGVuY3kgZnJvbSBVc2VySUQgdG8gRnJvbnRFbmRVc2VycyBNb2R1bGUuPC9wPgo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4yLjEgLSBBcHJpbCwgMjAwNjwvcD4KPHA+Q2hhbmdlZCBfc2NhbkRpcmVjdG9yeSB0byBhbiBBUEkgZnVuY3Rpb24gU2NhbkRpcmVjdG9yeSBhbmQgdGhlbiBhZGRlZCBTbWFydFNjYW5EaXJlY3RvcnkgdG8gc2NhbiB0aGUgZGlyZWN0b3J5IGJlZm9yZSBkaXNwbGF5aW5nIHRoZSBzdW1tYXJ5IG9yIGRldGFpbCBsaXN0aW5nIHRvIGhhbmRsZSB0aGUKY2FzZSB3aGVyZSBzb21lYm9keSB1cGxvYWRlZCBmaWxlcyB2aWEgRlRQIG9yIHNvbWV0aGluZyBhbmQgZGlkIG5vdCBnbyBpbnRvIHRoZSBhZG1pbiBzZWN0aW9uIHRvIHVwZGF0ZSB0aGUgY2F0ZWdvcmllcy48L3A+CjxwPkNvcnJlY3Rpb24gdG8gYWxsIGRiIGFjY2VzcyBzdHVmZi4gSG9wZWZ1bGx5IHByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgaW5jcmVhc2UuPC9wPgo8cD5GaXhlcyB0byB0aGUgYWJvdXQgc3R1ZmYsIG5vdyB1c2UgQ3JlYXRlUGFyYW1ldGVyPC9wPgo8cD5BZGRlZCB0aGUgdXBsb2FkX3RlbXBsYXRlLCBzdW1tYXJ5X3RlbXBsYXRlLCBhbmQgZGV0YWlsX3RlbXBsYXRlIChvcHRpb25hbCkgcGFyYW1ldGVyPC9wPgo8cD5BZGRlZCB0aGUgbm9hdXRob3IgcGFyYW1ldGVyLCBhbmQgdGhlIGtleSBwYXJhbWV0ZXIuICBUaGUga2V5IHBhcmFtZXRlciBhbGxvd3MgdGhlIHVwbG9hZHMgbW9kdWxlIHRvIGJlIGVtYmVkZGVkIGludG8gb3RoZXIgbW9kdWxlczwvcD4KPHA+TW92ZWQgdG8gdW5kZXIgdGhlIGNvbnRlbnQgbWVudSwgYW5kIGVudGl0bGVkIFwnRmlsZXMgKFVwbG9hZCBNb2R1bGUpXCc8L3A+Owo8L2xpPgo8bGk+CjxwPlZlcnNpb24gMS4yLjIgLSBKdW5lLCAyMDA2CjxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbXVsdGlwbGUgZGF0YWJhc2UgdGVtcGxhdGVzLCBhbmQgdG8gc2VsZWN0IG9uZSBvbiB0aGUgdGFnIHdpdGggdGhlIHRlbXBsYXRlIHBhcmFtZXRlci48L3A+CjxwPkZpeGVkIGFuIGlzc3VlIHdoZXJlIGZpbGVzIHdlcmUgZ2V0dGluZyBjb3JydXB0ZWQgb24gZG93bmxvYWQ8L3A+CjwvbGk+CjxsaT4KPHA+VmVyc2lvbiAxLjIuMyAtIEp1bmUsIDIwMDYKPHA+Rml4ZXMgdG8gdXNlIGFkb2RiLWxpdGUgcHJvcGVyLCByYXRoZXIgdGhhbiB0ZWRzIGhhY2s8L3A+CjxwPkRldGFpbCBsaW5rIG5vdyBkaXNwbGF5cyBpbmxpbmU8L3A+CjxwPk90aGVyIG1pbm9yIHR3ZWFrcyB0aGF0IEkgY2FudCByZW1lbWJlcjwvcD4KPC9saT4KPC91bD4nOwokbGFuZ1snZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snZGF0ZXVwbG9hZGVkJ10gPSAnRGF0ZSBVcGxvYWRlZCc7CiRsYW5nWydkZWZhdWx0J10gPSAnRGVmYXVsdHMnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snZGVzdG5hbWUnXSA9ICdVcGxvYWQgQXMnOwokbGFuZ1snZGV0YWlsX3RlbXBsYXRlJ10gPSAnRGV0YWlsIFRlbXBsYXRlJzsKJGxhbmdbJ2Rvd25sb2FkZWQnXSA9ICdGaWxlICVzIHdhcyBkb3dubG9hZGVkLic7CiRsYW5nWydkb3dubG9hZHMnXSA9ICdEb3dubG9hZHMnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZWRpdGNhdGVnb3J5J10gPSAnRWRpdCBDYXRlZ29yeSc7CiRsYW5nWydlZGl0dXBsb2FkJ10gPSAnRWRpdCBVcGxvYWQnOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snZXJyb3JfcGF0aGludXNlJ10gPSAnQSBjYXRlZ29yeSB1c2luZyB0aGF0IHBhdGggYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFcnJvcjogQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlub3RlbXB0eSddID0gJ0Vycm9yISBDYW5ub3QgZGVsZXRlIGEgY2F0ZWdvcnkgdGhhdCBpcyBub3QgZW1wdHknOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlub3Rmb3VuZCddID0gJ0Vycm9yOiBDYXRlZ29yeSBub3QgZm91bmQhJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdFcnJvcjogRGF0YWJhc2UgZXJyb3IhJzsKJGxhbmdbJ2Vycm9yX2VtcHR5Y2F0ZWdvcnknXSA9ICdFcnJvcjogRW1wdHkgQ2F0ZWdvcnkhJzsKJGxhbmdbJ2Vycm9yX2VtcHR5cGF0aCddID0gJ0Vycm9yOiBFbXB0eSBQYXRoISc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRXJyb3IhIEZpbGUgJXMgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2ZpbGVub3Rmb3VuZCddID0gJ0Vycm9yISBGaWxlICVzIHdhcyBub3QgZm91bmQuJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ0Vycm9yOiBJbnN1ZmZpY2llbnQgcGFyYW1ldGVycyBzdXBwbGllZCB0byBtb2R1bGUhJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRhdXRob3InXSA9ICdFcnJvcjogSW52YWxpZCAob3IgZW1wdHkpIGF1dGhvci4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNhdGVnb3J5J10gPSAnRXJyb3I6IEludmFsaWQgKG9yIGVtcHR5KSBjYXRlZ29yeS4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGRlc2NyaXB0aW9uJ10gPSAnRXJyb3I6IEludmFsaWQgKG9yIGVtcHR5KSBkZXNjcmlwdGlvbi4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGUnXSA9ICdFcnJvcjogSW52YWxpZCAob3IgZW1wdHkpIGZpbGVuYW1lLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXBsb2FkZmlsZW5hbWUnXSA9ICdFcnJvcjogRmlsZXMgd2l0aCB0aGF0IG5hbWUgKHByb2JhYmx5IGV4dGVuc2lvbikgYXJlIG5vdCBhbGxvd2VkICglcykuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1cGxvYWRpZCddID0gJ0Vycm9yOiBJbnZhbGlkIHVwbG9hZCBpZCc7CiRsYW5nWydlcnJvcl9ub2ZpbGVzJ10gPSAnRXJyb3I6IE5vIE1hdGNoaW5nIEZpbGVzISc7CiRsYW5nWydmaWxlcyddID0gJ0ZpbGVzJzsKJGxhbmdbJ2ZpeG1lJ10gPSAnRml4IFNwYWNlcyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdGaWxlcyAoVXBsb2FkcyBNb2R1bGUpJzsKJGxhbmdbJ2hlbHAnXSA9ICcKPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPkl0IGlzIGEgbW9kdWxlIGZvciBhbGxvd2luZyBwZW9wbGUgdG8gdXBsb2FkIGFuZCBkb3dubG9hZCBmaWxlcyB0byBhbmQgZnJvbSB5b3VyIHNpdGUuICBJdCBrZWVwcyB0cmFjayBvZiB3aG8gdXBsb2FkZWQgYSBmaWxlLCBhbmQgd2hvIGhhcyBkb3dubG9hZGVkIGl0LiAgQXMgd2VsbCwgeW91IGNhbiBzb3J0IGZpbGVzIGludG8gY2F0ZWdvcmllcywgYW5kIG1hbmFnZSB0aGUgZmlsZXMgdGhhdCB3ZXJlIHVwbG9hZGVkIGxpa2UgZXZlcnkgYWRtaW5pc3RyYXRvciB3b3VsZCBkbzwvcD4gCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5UbyB1c2UgdGhpcyBtb2R1bGUsIHRvIGFsbG93IHVzZXJzIHRvIHVwbG9hZCBmaWxlcyB0byB5b3VyIHNpdGUsIHlvdSBzaG91bGQgaW5zdGFsbCB0aGUgbW9kdWxlLCBhbmQgdGhlbiBjcmVhdGUgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyAoYS5rLmEpIGRpcmVjdG9yaWVzIGZvciB0aGUgdXBsb2FkZWQgZmlsZXMgdG8gZ28gaW50by4gVGhlbiBhZGQgYSB0YWcgaW50byBhIHBhZ2Ugb3IgdGVtcGxhdGUgc29tZXdoZXJlIGxpa2Uge2Ntc19tb2R1bGUgbW9kdWxlPSJVcGxvYWRzIiBjYXRlZ29yeT0ic29tZWNhdGVnb3J5IiBtb2RlPSJzb21lbW9kZSJ9LiAgV2hlcmUgbW9kZSBtYXRjaGVzIG9uZSBvZiB0aGUgbW9kZXMgbGlzdGVkIGJlbG93LiAgVGhlIG91dHB1dCB3aWxsIGRpZmZlciBkZXBlbmRpbmcgdXBvbiB3aGljaCBtb2RlIHlvdSBzZWxlY3QuPC9wPgo8cD5UaGlzIG1vZHVsZSBjYW4gdXNlIHRoZSBGcm9udGVuZFVzZXJzIG1vZHVsZSAob3B0aW9uYWwpIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBhbnkgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VycyB0byBwYXJ0bHkgZmlsbCBpbiB0aGUgZm9ybSB3aGVuIHVwbG9hZGluZyBmaWxlczs8L3A+CjxoMz5QZXJtaXNzaW9uczwvaDM+Cjx1bD4KPGxpPjxlbT5NYW5hZ2UgVXBsb2FkczwvZW0+IHBlcm1pc3Npb24gaXMgbmVlZGVkIHRvIG1hbmFnZSBjYXRlZ29yaWVzLCBhbmQgdGhlIGZpbGVzIHdpdGhpbiB0aGVtLjwvbGk+CjxsaT48ZW0+TW9kaWZ5IFRlbXBsYXRlczwvZW0+IHBlcm1pc3Npb24gaXMgbmVlZGVkIGVkaXQgYW55IG9mIHRoZSB0ZW1wbGF0ZXMuPC9saT4KPGxpPjxlbT5Nb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcy9lbT4gcGVybWlzc2lvbiBpcyBuZWVkZWQgYW55IG9mIHRoZSBmaWxlIHNldHRpbmdzLjwvbGk+CjwvdWw+CjxoMz5FbWFpbGluZzwvaDM+CjxwPlRoaXMgbW9kdWxlIGlzIGNhcGFibGUgb2Ygc2VuZGluZyBhbiBlbWFpbCB3aGVuZXZlciBhIGZpbGUgaXMgdXBsb2FkZWQsIHNlZSB0aGUgcHJlZmVyZW5jZXMgdGFiLiAgSG93ZXZlciwgdG8gZG8gdGhpcyB0aGUgPGI+Q01TTWFpbGVyPC9iPiBwYWNrYWdlIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLiAgVGhpcyBpcyBhbiA8ZW0+b3B0aW9uYWw8L2VtPiBzdGVwLCBhbmQgaWYgdGhlIENNU01haWxlciBtb2R1bGUgaXMgbm90IGluc3RhbGxlZCwgbm90aGluZyB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciwgb25seSBhIGxvZyBtZXNzYWdlIHdpbGwgYmUgcGxhY2VkIGludG8gdGhlIGFkbWluIGxvZzwvcD4KPGgzPlN5c3RlbSBTZXR0aW5nczwvaDM+CjxwPjxiPk5vdGU6PC9iPiBUaGlzIG1vZHVsZSBkb2VzIG5vdCBieXBhc3Mgb3IgZ2V0IHBhc3QgYW55IGZpbGUgc2l6ZSBsaW1pdGF0aW9ucyBpbiBwaHAuICBJdCB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZW0uICBUaGVyZWZvcmUgeW91IG1heSBuZWVkIHRvIG1vZGlmeSB5b3VyIHBocC5pbmkgZmlsZSBhbmQvb3IgeW91ciBodHRwZC5jb25mIGZpbGUocykgdG8gYWxsb3cgeW91IHRvIHVwbG9hZCBmaWxlcyBhcyBsYXJnZSBhcyB3aGF0IHlvdSBoYXZlIHNldCBpbiB0aGUgdXBsb2FkcyBtb2R1bGUgcHJlZmVyZW5jZXMuPC9wPgo8aDM+QXBhY2hlIE5vdGVzPC9oMz4KPHA+SW4gb3JkZXIgdG8gYWxsb3cgbGFyZ2UgZmlsZSB1cGxvYWRzLCB5b3UgbWF5IG5lZWQgdG8gbW9kaWZ5IHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlciBpbiB5b3VyIHBocC5pbmkgIEluIGFkZGl0aW9uLCB0aGUgTGltaXRSZXF1ZXN0Qm9keSBwYXJhbWV0ZXIgaW4geW91ciBhcGFjaGUgY29uZmlndXJhdGlvbiwgbWF5IG5lZWQgdG8gYmUgYWRqdXN0ZWQgdG8gbWF0Y2ggdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgcGFyYW1ldGVyPC9wPgo8cD5Ob3RlOiAgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgcGFyYW1ldGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gYnl0ZXMsIGtpbG9ieXRlcywgb3IgbWVnYWJ5dGVzLCBob3dldmVyIHRoZSBMaW1pdFJlcXVldEJvZHkgcGFyYW1ldGVyIGlzIG9ubHkgc3BlY2lmaWVkIGluIGJ5dGVzPC9wPgonOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ2lwX2FkZHJlc3MnXSA9ICdJUCBBZGRyZXNzJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBtb2R1bGUgdGhhdCBhbGxvd3MgdXNlcnMgdG8gdXBsb2FkIGZpbGVzLCBhbmQgYWxsb3dzIHlvdSB0byBtYW5hZ2UgdGhlbS4nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncmVuYW1lbWVzc2FnZSddID0gJ0NoYW5nZSB0aGUgbmFtZSBoZXJlIHRvIGV4ZWN1dGUgYSByZW5hbWUnOwokbGFuZ1sncGF0aCddID0gJ1BhdGgnOwokbGFuZ1sncGF0aG1lc3NhZ2UnXSA9ICdDaGFuZ2UgdGhlIGNhdGVnb3J5IGhlcmUgdG8gbW92ZSB0aGUgZmlsZSB0byBhbm90aGVyIGRpcmVjdG9yeSc7CiRsYW5nWydwYXRoaW51cGxvYWRzJ10gPSAnKFJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcmVjdG9yeSknOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGUgdXBsb2FkcyBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZC4gQmUgc3VyZSB0byBzZXQgIk1hbmFnZSBVcGxvYWRzIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdUaGUgVXBsb2FkcyBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuICBObyBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHlvdXIgdXBsb2FkcyBkaXJlY3RvcnksIGFuZCBmaWxlIGludGVncml0eSBpcyBpbnRhY3QnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5ZGVzYyddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yeWxpc3RhYmxlJ10gPSAnRmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2FuIGJlIGxpc3RlZCc7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnluYW1lJ10gPSAnQ2F0ZWdvcnkgTmFtZSc7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlwYXRoJ10gPSAnU2VydmVyIFBhdGgnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZWRpcmVjdG9yeSddID0gJ0RlbGV0ZSBjYXRlZ29yeSBkaXJlY3Rvcnk/JzsKJGxhbmdbJ3Byb21wdF9tYXhfdXBsb2Fkc2l6ZSddID0gJ01heGltdW0gZmlsZSBzaXplIGFsbG93ZWQgKEtiKSc7CiRsYW5nWydwcm9tcHRfdmFsaWRfdXBsb2FkZXh0ZW5zaW9ucyddID0gJ1ZhbGlkIHVwbG9hZCBleHRlbnNpb25zJzsKJGxhbmdbJ3NjYW4nXSA9ICdTY2FuJzsKJGxhbmdbJ3NlbGVjdGNhdGVnb3J5J10gPSAnU2VsZWN0IENhdGVnb3J5JzsKJGxhbmdbJ3NpemUnXSA9ICdTaXplJzsKJGxhbmdbJ3NpemVrYiddID0gJ1NpemUgKEtiKSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snc3VtbWFyeV90ZW1wbGF0ZSddID0gJ1N1bW1hcnkgVGVtcGxhdGUnOwokbGFuZ1snc3VtbWFyeSddID0gJ1N1bW1hcnknOwokbGFuZ1sndGl0bGVfYWRtaW5fcGFuZWwnXSA9ICdVcGxvYWRzIE1vZHVsZSc7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdNb2R1bGUgQWRtaW4gUGFuZWwnOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3RpdGxlX3NpbmdfbG91ZGx5J10gPSAnU2luZyBMb3VkbHk/JzsKJGxhbmdbJ3RpdGxlX3N1Ym5ldF9leGNsdXNpb25zJ10gPSAnRXhjbHVkZSBzdWJuZXRzIGZyb20gc3RhdGlzdGljcyc7CiRsYW5nWyd0aXRsZV92YWxpZF91cGxvYWRleHRlbnNpb25zJ10gPSAnVmFsaWQgRXh0ZW5zaW9ucyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1sndXBsb2FkJ10gPSAnVXBsb2FkJzsKJGxhbmdbJ3VwbG9hZGVkJ10gPSAnRmlsZSAlcyB3YXMgdXBsb2FkZWQgYnkgJXMuJzsKJGxhbmdbJ3JlcGxhY2VkJ10gPSAnRmlsZSAlcyB3YXMgcmVwbGFjZWQgYnkgJXMuJzsKJGxhbmdbJ2RlbGV0ZWQnXSA9ICdGaWxlICVzIHdhcyBkZWxldGVkLic7CiRsYW5nWyd1cGxvYWRmb3JtX3RlbXBsYXRlJ10gPSAnVXBsb2FkIFRlbXBsYXRlJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snd2FybmluZ19kZWxldGVjYXRlZ29yeSddID0gJ1dBUk5JTkc6IFVzZSBjYXV0aW9uIHdoZW4gZGVsZXRpbmcgY2F0ZWdvcmllcy4gIEZpbGVzIG1heSBiZSBsb3N0JzsKJGxhbmdbJ3dlbGNvbWVfdGV4dCddID0gJzxwPldlbGNvbWUgdG8gdGhlIFVwbG9hZHMgTW9kdWxlIGFkbWluIHNlY3Rpb24uIFNvbWV0aGluZyBlbHNlIHdvdWxkIHByb2JhYmx5IGdvIGhlcmUgaWYgdGhlIG1vZHVsZSBhY3R1YWxseSBkaWQgc29tZXRoaW5nLjwvcD4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hlbHBfT25Eb3dubG9hZCddID0gJzxoMz5PbkRvd25sb2FkPC9oMz4NCjx1bD4NCjxsaT48ZW0+aWQ8L2VtPiAtIFVwbG9hZCBJRDwvbGk+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIEZpbGUgbmFtZTwvbGk+DQo8bGk+PGVtPmlwPC9lbT4gLSBUaGUgSVAgQWRkcmVzcyBvZiB0aGUgZG93bmxvYWRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfT25EZWxldGVDYXRlZ29yeSddID0gJzxoMz5PbkRlbGV0ZUNhdGVnb3J5PC9oMz4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gQ2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+PGVtPnBhdGg8L2VtPiAtIENhdGVnb3J5IHBhdGg8L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uQ3JlYXRlQ2F0ZWdvcnknXSA9ICc8aDM+T25DcmVhdGVDYXRlZ29yeTwvaDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGNhdGVnb3J5IGlzIHJlbW92ZWQ8L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBjYXRlZ29yeTwvbGk+DQo8bGk+PGVtPmRlc2NyaXB0aW9uPC9lbT4gLSBUaGUgY2F0ZWdvcnkgZGVzY3JpcHRpb248L2xpPg0KPGxpPjxlbT5wYXRoPC9lbT4gLSBUaGUgY2F0ZWdvcnkgcGF0aDwvbGk+DQo8bGk+PGVtPnBhdGg8L2VtPiAtIEEgZmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBjYXRlZ29yeSBpcyBsaXN0YWJsZTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfT25SZW1vdmUnXSA9ICc8aDM+T25SZW1vdmU8L2gzPg0KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBmaWxlIGlzIHJlbW92ZWQgdmlhIHRoZSBhZG1pbiBvciBmcm9udGVuZCBpbnRlcmZhY2VzPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgcmVtb3ZlZCBmaWxlPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBpZCBvZiB0aGUgcmVtb3ZlZCBmaWxlPC9saT4NCjxsaT48ZW0+Y2F0ZWdvcnlfaWQ8L2VtPiAtIFRoZSBpZCBvZiB0aGUgY2F0ZWdvcnk8L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uVXBsb2FkJ10gPSAnPGgzPk9uVXBsb2FkPC9oMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgbmV3IGZpbGUgaXMgdXBsb2FkZWQgdmlhIHRoZSBhZG1pbiBvciBmcm9udGVuZCBpbnRlcmZhY2VzPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT5jYXRlZ29yeTwvZW0+IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgdXBsb2FkZWQgZmlsZTwvbGk+DQo8bGk+PGVtPnNpemU8L2VtPiAtIFRoZSBzaXplIG9mIHRoZSB1cGxvYWRlZCBmaWxlPC9saT4NCjxsaT48ZW0+c3VtbWFyeTwvZW0+IC0gVGhlIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGUgdXBsb2FkZWQgZmlsZSAobWF5IGJlIGVtcHR5KTwvZW0+PC9saT4NCjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIFRoZSBsb25nIGRlc2NyaXB0aW9uIGZvciB0aGUgdXBsb2FkZWQgZmlsZSAobWF5IGJlIGVtcHR5KTwvZW0+PC9saT4NCjxsaT48ZW0+YXV0aG9yPC9lbT4gLSBUaGUgYXV0aG9yIG9mIHRoZSB1cGxvYWRlZCBmaWxlIChpZiBhdmFpbGFibGUpPC9lbT48L2xpPg0KPGxpPjxlbT5pcF9hZGRyZXNzPC9lbT4gLSBUaGUgaW50ZXJuZXQgYWRkcmVzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXBsb2FkZWQgdGhlIGZpbGU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydpbmZvX2V2ZW50X29uZGVsZXRlY2F0ZWdvcnknXSA9ICdVZCZhYWN1dGU7bG9zdCBnZW5lcm92YW4mYWFjdXRlOyBrZHnFviBqZSBzbWF6JmFhY3V0ZTtuYSBrYXRlZ29yaWUnOwokbGFuZ1snaW5mb19ldmVudF9vbmNyZWF0ZWNhdGVnb3J5J10gPSAnVWQmYWFjdXRlO2xvc3QgZ2VuZXJvdmFuJmFhY3V0ZTssIGtkecW+IGplIHZ5dHZvxZllbmEga2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25kb3dubG9hZCddID0gJ1VkJmFhY3V0ZTtsb3N0IGdlbmVyb3ZhbiZhYWN1dGU7LCBrZHnFviBqZSBzdGHFvmVuIHNvdWJvcic7CiRsYW5nWydpbmZvX2V2ZW50X29udXBsb2FkJ10gPSAnVWQmYWFjdXRlO2xvc3QgZ2VuZXJvdmFuJmFhY3V0ZTssIGtkecW+IGplIG5haHImYWFjdXRlO24gbm92JnlhY3V0ZTsgc291Ym9yJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25yZW1vdmUnXSA9ICdVZCZhYWN1dGU7bG9zdCBnZW5lcm92YW4mYWFjdXRlOywga2R5xb4gamUgb2RlYnImYWFjdXRlO24gc291Ym9yJzsKJGxhbmdbJ3RpdGxlX3VzZXJ0YWdfb251cGxvYWQnXSA9ICdVxb5pdmF0ZWxzayZ5YWN1dGU7IHRhZywga3RlciZ5YWN1dGU7IG0mYWFjdXRlOyBiJnlhY3V0ZTt0IHZvbCZhYWN1dGU7biBwbyBkb2tvbsSNZW4maWFjdXRlOyBuYWhyJmFhY3V0ZTtuJmlhY3V0ZTsnOwokbGFuZ1snbm9uZSddID0gJ8W9JmFhY3V0ZTtkbiZ5YWN1dGU7JzsKJGxhbmdbJ21hdGNoZXNmb3VuZCddID0gJ1omYWFjdXRlO3puYW15IG5hbGV6ZW55JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyJzsKJGxhbmdbJ3RpdGxlX3JlZGlyZWN0b251cGxvYWQnXSA9ICdSZWRpcmVjdCB0byBwYWdlIGlkL2FsaWFzIG9uIHVzZXIgdXBsb2FkJzsKJGxhbmdbJ2RldGFpbHMnXSA9ICdEZXRhaWx5JzsKJGxhbmdbJ2NvbmZpcm1fcHJlZmVyZW5jZXMnXSA9ICdKc3RlIHNpIGppc3RpICZ1YWN1dGU7cHJhdm91IHByZWZlcmVuYyZpYWN1dGU7Pyc7CiRsYW5nWydlcnJvcl9ub2ZpbGVzdXBsb2FkZWQnXSA9ICfFvSZhYWN1dGU7ZG4mZWFjdXRlOyBzb3Vib3J5IG5lYnlseSBuYWhyJmFhY3V0ZTtueS4nOwokbGFuZ1sncHJvbXB0X3JlcGxhY2UnXSA9ICdQb3ZvbGl0IHDFmWVwcyZhYWN1dGU7biZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fcmVwbGFjZSddID0gJ04mYWFjdXRlO2hyYWRhIGphayZlYWN1dGU7aG9rb2xpdiBzb3Vib3J1IHQmaWFjdXRlO20gc2FtJnlhY3V0ZTttIChpZCBzZSBuZXptxJtuJmlhY3V0ZTspJzsKJGxhbmdbJ25vX2luaXRpYWwnXSA9ICdOZXpvYnJheiZpYWN1dGU7IHNlIMW+JmFhY3V0ZTtkbiZlYWN1dGU7IHZzdHVwbiZpYWN1dGU7IHYmeWFjdXRlO3NsZWRreSwgcG9rdWQgamUgZmlsdHIgemFwbnV0JnlhY3V0ZTsnOwokbGFuZ1sncGFyYW1fdXBsb2FkX2lkJ10gPSAndXBsb2FkX2lkPSZxdW90O2lkJnF1b3Q7IC0gc3BlY2lmeSBhIHNpbmdsZSBmaWxlIGZvciB0aGUgdXJsL2xpbmsgb3Igc2luZ2xlIG1vZGVzIChhYm92ZSknOwokbGFuZ1sncGFyYW1fdXNlX3N0cmljdF9yZWdleHAnXSA9ICdUaGUgZmlsdGVyIGZpZWxkIGlzIHVzZWQgYXMgYSBzdHJpY3QgcmVnZXhwIHdpdGhvdXQgcHJlcHJvY2Vzc2luZyBvZiBzcGFjZXMnOwokbGFuZ1sncGFyYW1fZGV0YWlsX2ZpbGV0ZW1wbGF0ZSddID0gJ1BvdcW+JmlhY3V0ZTt2JmFhY3V0ZTsgLnRwbCBzb3Vib3IgeiBhZHJlcyZhYWN1dGU7xZllIFVwbG9hZHMvdGVtcGxhdGVzLyBtJmlhY3V0ZTtzdG8gZGF0YWImYWFjdXRlO3plIHDFmWkgem9icmF6b3YmYWFjdXRlO24maWFjdXRlOyBkZXRhaWxuJmlhY3V0ZTsgenByJmFhY3V0ZTt2eSc7CiRsYW5nWydwYXJhbV91cGxvYWRfZmlsZXRlbXBsYXRlJ10gPSAnVXNlIGEgLnRwbCBmaWxlIGZyb20gdGhlIFVwbG9hZHMvdGVtcGxhdGVzLyBmb2xkZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGF0YWJhc2UgdGVtcGxhdGUgd2hlbiBkaXNwbGF5aW5nIGFuIHVwbG9hZCBmb3JtJzsKJGxhbmdbJ3BhcmFtX3N1bW1hcnlfZmlsZXRlbXBsYXRlJ10gPSAnVXNlIGEgLnRwbCBmaWxlIGZyb20gdGhlIFVwbG9hZHMvdGVtcGxhdGVzLyBmb2xkZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGF0YWJhc2UgdGVtcGxhdGUgd2hlbiBkaXNwbGF5aW5nIGEgc3VtbWFyeSByZXBvcnQnOwokbGFuZ1sncGFyYW1fZmlsdGVyJ10gPSAnRGlzcGxheSB0aGUgZmlsdGVyaW5nIGZvcm0nOwokbGFuZ1sncGFyYW1fbm9faW50aXRpYWwnXSA9ICdPbmx5IHVzZWZ1bCB3aGVuIHRoZSBmaWx0ZXIgcGFyYW1ldGVyIGlzIHN1cHBsaWVkLCBvciBvbiBieSBkZWZhdWx0LCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2V0aGVyIGluaXRpYWwgcmVzdWx0cyBzaG91bGQgYmUgcmV0dXJuZWQnOwokbGFuZ1sncGFyYW1fc29ydG9yZGVyJ10gPSAnICA8cD5Tb3J0IE9yZGVycw0KICA8dWw+DQogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRhdGU8L2xpPg0KICA8bGk+PGVtPmRhdGVfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGRhdGU8L2xpPg0KICA8bGk+PGVtPm5hbWVfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBuYW1lPC9saT4NCiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBuYW1lPC9saT4NCiAgPGxpPjxlbT5zaXplX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgc2l6ZTwvbGk+DQogIDxsaT48ZW0+c2l6ZV9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgc2l6ZTwvbGk+DQogIDxsaT48ZW0+ZGVzY19hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4NCiAgPGxpPjxlbT5kZXNjX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBkZXNjcmlwdGlvbjwvbGk+DQogIDxsaT48ZW0+YXV0aG9yX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgYXV0aG9yPC9saT4NCiAgPGxpPjxlbT5hdXRob3JfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGF1dGhvcjwvbGk+DQogIDxsaT48ZW0+aXBfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBpcCBhZGRyZXNzPC9saT4NCiAgPGxpPjxlbT5pcF9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgaXAgYWRkcmVzczwvbGk+DQogIDxsaT48ZW0+cmFuZG9tPC9lbT4gLSBSYW5kb20gc29ydCBvcmRlcjwvbGk+DQogIDwvdWw+DQogIDwvcD4nOwokbGFuZ1sncGFyYW1fZmlsZWV4dGVuc2lvbnMnXSA9ICcgDQpmaWxlX2V4dGVuc2lvbnM9JnF1b3Q7ZXh0MSxleHQyLGV4dDMmcXVvdDsNCjxwPnZhbGlkIG9ubHkgd2hlbiBtb2RlPXVwbG9hZCwgdGhpcyBwYXJhbWV0ZXIgbGltaXRzIHRoZSB0eXBlcyBvZiBmaWxlcyB0aGF0IGNhbiBiZSB1cGxvYWRlZC4gIEl0IG92ZXJyaWRlcyBhbnkgc2V0dGluZ3MgaW4gdGhlIG1vZHVsZSBwcmVmZXJlbmNlcy48L3A+JzsKJGxhbmdbJ3BhcmFtX2NvdW50J10gPSAnY291bnQ9JnF1b3Q7TiZxdW90Ow0KPHA+QSBwYXJhbWV0ZXIgdG8gbGlzdCBvbmx5IHRoZSBmaXJzdCBOIHJlc3VsdHMgb2YgdGhlIHF1ZXJ5LiAgUGFnaW5hdGlvbiB3b3VsZCBiZSBiZXR0ZXIsIGJ1dCB0aGlzIHdpbGwgZG8gdGhlIHRyaWNrIGZvciBub3c8L3A+JzsKJGxhbmdbJ3BhcmFtX2NhdGVnb3J5J10gPSAnY2F0ZWdvcnk9JnF1b3Q7bmFtZSZxdW90Ow0KPHA+PGI+Tm90ZTo8L2I+IENhdGVnb3J5IGNhbiBiZSAmcXVvdDthbGwmcXVvdDssIHdoaWNoIHdpbGwgbGlzdCBhbGwgb2YgdGhlIHVwbG9hZHMgZnJvbSBhbGwgPGVtPmxpc3RhYmxlPC9lbT4gY2F0ZWdvcmllczwvcD4nOwokbGFuZ1sncGFyYW1fbW9kZSddID0gJyAgPHVsPg0KICA8bGk+PGVtPmRldGFpbGVkPC9lbT4gLSBEaXNwbGF5IGEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgZmlsZXMgaW4gdGhlIGNhdGVnb3J5PC9saT4NCiAgPGxpPjxlbT51cGxvYWQ8L2VtPiAtIERpc3BsYXkgYSBmb3JtIHRvIGFsbG93IGEgZnJvbnRlbmQgdXNlciB0byB1cGxvYWQgYSBmaWxlPC9saT4NCiAgPGxpPjxlbT51cmwgPGk+b3I8L2k+IGxpbms8L2VtPiAtIERpc3BsYXkgYSBsaW5rIHRvIGEgZmlsZTwvbGk+DQogIDxsaT48ZW0+c3VtbWFyeTwvZW0+IC0gRGlzcGxheSBhIHN1bW1hcml6ZWQgbGlzdCBvZiBhbGwgZmlsZXMgaW4gdGhlIGNhdGVnb3J5PC9saT4NCiAgPGxpPjxlbT5zaW5nbGU8L2VtPiAtIERpc3BsYXkgYSBkZXRhaWxlZCByZXBvcnQgYWJvdXQgYSBzaW5nbGUgdXBsb2FkPC9saT4NCiAgPGxpPjxlbT5zaW5nbGVzdW1tYXJ5PC9lbT4gLSBEaXNwbGF5IGEgc3VtbWFyaXplZCByZXBvcnQgYWJvdXQgYSBzaW5nbGUgdXBsb2FkL2xpPg0KICA8L3VsPic7CiRsYW5nWydyZXR1cm50b21vZHVsZSddID0gJ1JldHVybiB0byBtb2R1bGUgcGFuZWwnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yaWVzJ10gPSAnVGhlcmUgYXJlIG5vIGRlZmluZWQgY2F0ZWdvcmllcyc7CiRsYW5nWyd0aXRsZV9lbmZvcmNlZXh0ZW5zaW9ucyddID0gJ1JlcXVpcmUgZXh0ZW5zaW9ucyBvbiBhbGwgdXBsb2FkZWQgZmlsZXMnOwokbGFuZ1sncmVzdG9yZWRlZmF1bHRzY29uZmlybSddID0gJ1RoaXMgb3BlcmF0aW9uIHdpbGwgcmVzdG9yZSB0aGUgdGVtcGxhdGUgdG8gc3lzdGVtIGRlZmF1bHRzLiAgQW55IGNoYW5nZXMgeW91IGhhdmUgbWFkZSB3aWxsIGJlIGxvc3QuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcHJvY2VlZD8nOwokbGFuZ1snaW5mb190aHVtYm5haWwnXSA9ICdBbiBvcHRpb25hbCB0aHVtYm5haWwgZmlsZSc7CiRsYW5nWyd0aHVtYm5haWwnXSA9ICdUaHVtYm5haWwnOwokbGFuZ1snaW5mb19zdW1tYXJ5J10gPSAnQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZSAoaWYgZW1wdHksIHRoZSBmaWxlIG5hbWUgaXMgdXNlZCB3aXRob3V0IHRoZSBleHRlbnNpb24pJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnluYW1lJ10gPSAnQSBicmllZiBuYW1lIGZvciB5b3VyIGNhdGVnb3J5IChodW1hbiByZWFkYWJsZSknOwokbGFuZ1snaW5mb19jYXRlZ29yeWRlc2MnXSA9ICdBIGRlc2NyaXB0aW9uIGZvciB5b3VyIGNhdGVnb3J5JzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlwYXRoJ10gPSAnVGhlIGRpcmVjdG9yeSBuYW1lIGluc2lkZSB0aGUgdXBsb2FkcyBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgZmlsZXMgaW4gdGhpcyBjYXRlZ29yeS4gIElmIHRoZSBkaXJlY3Rvcnkgb2YgdGhpcyBuYW1lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QsIGl0IG1heSBiZSBjcmVhdGVkJzsKJGxhbmdbJ2luZm9fZGVzdG5hbWUnXSA9ICdVc2UgdGhlICYjMDM5O1VwbG9hZCBBcyYjMDM5OyBmaWVsZCB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGZpbGUgb24gdXBsb2FkLiAgTGVhdmUgYmxhbmsgdG8gcHJlc2VydmUgdGhlIGZpbGVuYW1lIGFzLWlzLic7CiRsYW5nWydlcnJvcl9jYW50Y3JlYXRlZGlyZWN0b3J5J10gPSAnQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnknOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdUaGUgQ01TTWFpbGVyIG1vZHVsZSBjb3VsZCBub3QgYmUgaW5zdGFudGlhdGVkJzsKJGxhbmdbJ3VwbG9hZF9ub3RpZmljYXRpb24nXSA9ICdBIG5ldyBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkJzsKJGxhbmdbJ3RpdGxlX2VtYWlsX29uX3VwbG9hZCddID0gJ1NlbmQgdXBsb2FkIG5vdGlmaWNhdGlvbiB0bzonOwokbGFuZ1snZW1haWxfdGVtcGxhdGUnXSA9ICdFbWFpbCBUZW1wbGF0ZSc7CiRsYW5nWyd0aXRsZV9kdW1teV9pbmRleF9odG1sJ10gPSAnQ3JlYXRlIGR1bW15IGluZGV4Lmh0bWwgZmlsZXMgaW4gZWFjaCBkaXJlY3Rvcnk/PGJyLz48ZW0+QW55IGV4aXN0aW5nIGluZGV4Lmh0bWwgZmlsZXMgd2lsbCByZW1haW48L2VtPic7CiRsYW5nWydhYm91dCddID0gJ0Fib3V0JzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb25kZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3JfY291bGRub3R3cml0ZSddID0gJ0NvdWxkIG5vdCB3cml0ZSc7CiRsYW5nWydhZGRjYXRlZ29yeSddID0gJ0FkZCBDYXRlZ29yeSc7CiRsYW5nWydhbGwnXSA9ICdBbGwnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0FyZSBZb3UgU3VyZT8nOwokbGFuZ1snYXV0aG9yJ10gPSAnQXV0aG9yJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjYW5ub3Rtb2RpZnlwYXRoJ10gPSAnKFRoZSBwYXRoIGNhbm5vdCBiZSBtb2RpZmllZCknOwokbGFuZ1snY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydtZXNzYWdlX2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBzdWNjZXNzZnVsbHkgYWRkZWQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAuIC0gU2VwdGVtYmVyIDIwMDUuPC9wPg0KPHA+IEluaXRpYWwgUmVsZWFzZS48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAxLiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+TWlub3IgZml4ZXMuPC9wPjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDIuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgc29ydCBvcmRlcjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDMuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5GaXggcmVnYXJkaW5nIGNvbmZsaWN0IGluIHRlbXBsYXRlIG5hbWVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNC4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkFkZGVkIGFiaWxpdHkgdG8gcmUtc2NhbiBhIGRpcmVjdG9yeSwgYW5kIHRvIHVwbG9hZCBmaWxlcyBmcm9tIHRoZSBhZG1pbiBwYWdlPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNS4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkZpeGVkIHNvbWUgUEhQIHZhcmlhYmxlIGlzc3VlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDYuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCBhdXRob3IgZmllbGQgdG8gdGhlIGFkbWluIHBhbmVsIHVwbG9hZCBmb3JtLCBhZGRlZCBhIHN1bW1hcnkgZmllbGQsIGFuZCBtYWRlIGRlc2NyaXB0aW9uIGEgdGV4dCBhcmVhLCBhbmQgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGZpbGUgbmFtZTwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDcuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byByZW5hbWUgZmlsZXMgYW5kIGZpeGVkIGEgc2NhbiBlcnJvcjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDguIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5CZXR0ZXIgaGFuZGxpbmcgb2YgbmFtZXMgd2l0aCBzcGFjZXMsIGFuZCBhIGZldyBtaW5vciBlcnJvcnMgZml4ZWQuICBBZGRlZCBzd2VkaXNoIHRyYW5zbGF0aW9uICh0aGFua3Mgd2VzdGlzKTwvcD48L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMC4gLSBPY3RvYmVyIDIwMDU8L3A+DQogPHVsPg0KICAgPGxpPk1vZGlmaWVkIEF0dGVtcHRVcGxvYWQgZnVuY3Rpb24gc28gaXQgY291bGQgYmUgY2FsbGVkIGV4dGVybmFsbHk8L2xpPg0KICAgPGxpPkFkZGVkIEdldFVwbG9hZERldGFpbHMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZGV0YWlscyBhYm91dCBhIG1vZHVsZSwgaW5jbHVkaW5nIGEgbGluazwvbGk+DQogICA8bGk+QWRkZWQgUmVkaXJlY3RzIHNvIHRoYXQgd29ya2luZyB3aXRoIHRoZSBtb2R1bGUgaXMgYWxvdCBuaWNlciwgaXQgcmV0dXJucyB0byB0aGUgcmlnaHQgdGFiPC9saT4NCiAgIDxsaT5DaGFuZ2VkIHRoZSBmcm9udCB0ZW1wbGF0ZSB0byBsb29rIGEgbGl0dGxlIGJldHRlciBhbmQgbWFrZSBtb3JlIHNlbnNlPC9saT4NCiAgIDxsaT5GaXhlcyB0byB0aGUgdXBsb2FkcyBzdHVmZiBzbyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBzZXQsIGFuZCBuYW1lIGFuZCBzdW1tYXJ5IGFyZSBwdXQgaW4gdGhlIHJpZ2h0IHBsYWNlPC9saT4NCiAgIDxsaT5GaXhlcyB0byBldmVuIGJldHRlciBoYW5kbGUgc3BhY2VzIGluIG5hbWVzPC9saT4NCiAgIDxsaT5PcHRpb25hbHkgcGxhY2UgZHVtbXkgaW5kZXguaHRtbCBmaWxlcyBpbiBlYWNoIHVwbG9hZCBkaXJlY3Rvcnk8L2xpPg0KICAgPGxpPklmIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBuYW1lLCBhbmQgbm8gZXh0ZW5zaW9uIGlzIGdpdmVuLCB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBvcmlnaW5hdGluZyBmaWxlIChpZiBhbnkgZXhpc3RzIGlzIHVzZWQ8L2xpPg0KIDwvdWw+DQogPHA+PGVtPjxiPkltcG9ydGFudCE8L2I+PC9lbT48YnIvPkl0IGlzIG5vdCBwb3NzaWJsZSB0byB1cGdyYWRlIGZyb20gYW55IG90aGVyIHZlcnNpb24gb2YgdGhlIFVwbG9hZHMgbW9kdWxlIHRvIDEuMS4wLiAgVGhpcyBpcyBkdWUgdG8gc29tZSBlcnJvcnMgdGhhdCB3ZXJlIG1hZGUgaW4gdGhlIGRhdGFiYXNlIHJvdXRpbmVzLCBhbmQgZXZlbiBpbiB0aGUgdXBncmFkZSByb3V0aW5lIGluIDEuMC42LiAgWW91IG11c3QgZGUtaW5zdGFsbCB0aGUgb2xkIHZlcnNpb24sIGFuZCB0aGVuIHJlLWluc3RhbGwgdGhlIG5ldyB2ZXJlc2lvbi4gVGhpcyB3aWxsIGNhdXNlIHNpZ25pZmljYW50IGRpZmZpY3VsdHkgaWYgeW91IGhhdmUgZHNjcmlwdGlvbnMsIGV0YywgaW4geW91ciB0YWJsZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMS4gLSBPY3RvYmVyLCAyMDA1PC9wPg0KPHA+Rml4ZWQgYSBjb3VwbGUgb2YgbWlub3IgYnVncyBpbiB0aGUgR2V0VXBsb2FkRGV0YWlscyBhbmQgYWRkZWQgYW5vdGhlciBsaW5rIChvciBhIHVybCkgdG8gdGhlIHVwbG9hZGVkIGZpbGUuPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjIuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkZpeGVkIHRoZSBVUkwgZmllbGQgaW4gR2V0VXBsb2FkRGV0YWlscyB0byByZXR1cm4gYSBkb3dubG9hZCBsaW5rIGFuZCBhZGRlZCBhbiBhYnN1cmwgZmllbGQgd2hpY2ggcmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSBvbiB0aGUgd2Vic2VydmVyLiAgQ2xpY2tzIG9uIHRoaXMgbGluayB3aWxsIG5vdCBiZSBjb3VudGVkPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjMuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkZpeGVkIHRoZSB1cGdyYWRlIHByb2JsZW0gZnJvbSB0aGUgMS4wLnggc2VyaWVzLiAgVXNlcnMgb2YgdGhlIDEuMC54IHNlcmllcyBzaG91bGQgYmUgYWJsZSB0byB1cGdyYWRlIHRvIDEuMS4zIG5vdyB3aXRoIG5vIGRpZmZpY3VsdHkuIDxiPlRob3NlIGFyZSBmYW1vdXMgbGFzdCB3b3JkcywgcGxlYXNlIGJhY2t1cCBmaXJzdDwvYj4uIEZpeGVkIHRoZSBjb250ZW50IHJlZGlyZWN0IHRoaW5ncyB0aGF0IHdlcmUgaXJyaXRhdGluZyBtZS4gIEFsc28gYWRkZWQgY2F0ZWdvcnk9YWxsIHRvIGxpc3QgYWxsIG9mIHRoZSB1cGxvYWRzIGluIGFsbCBsaXN0YWJsZSBjYXRlZ29yaWVzIDxlbT4obGV0cyBhbGwgaG9wZSBJIGdvdCB0aGUgc3FsIGZpZ3VyZWQgb3V0IHByb3Blcmx5KTwvZW0+LjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS40LiAtIE9jdG9iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCB0aGUgY291bnQgcGFyYW1ldGVyIHRvIGxpc3Qgb25seSB0aGUgZmlyc3QgTiByZWNvcmRzLCBhbmQgYWRkZWQgJnF1b3Q7c3VtbWFyeWxpbmsmcXVvdDssIGFuZCAmcXVvdDtjYXRlZ29yeSZxdW90OyB0byB0aGUgdGVtcGxhdGVzIGZvciB3ZXN0aXMuICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGVtIHJlc2V0IHlvdXIgdGVtcGxhdGVzIGJhY2sgdG8gZGVmYXVsdC48L3A+PC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjUuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCBlbWFpbCBub3RpZmljYXRpb24gYW5kIHNvbWUgYnVnIGZpeGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjYuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCBhbiBhcGkgZnVuY3Rpb24gYW5kIGZpeGVkIHNvbWUgcmVkaXJlY3Rpb24gc3R1ZmY8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNy4gLSBOb3ZlbWJlciwgMjAwNTwvcD4NCjxwPk1vcmUgQVBJIGZ1bmN0aW9ucywgYW5kIG5vdyBpZ25vcmUgZG90IGZpbGVzIHdoZW4gc2Nhbm5pbmcuICBFbWFpbCBub3RpZmljYXRpb24gaXMgbm93IGluLjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS44LiAtIEphbnVhcnksIDIwMDY8L3A+DQo8cD4qIEltcHJvdmVkIGRvY3Mgd3J0IGFwYWNoZSBhbmQgcGhwIGNvbmZpZ3MuPC9wPg0KPHA+KiBGaXhlZCBwcm9ibGVtIHdoZXJlIGZpbGVzaXplIHdhcyBzaG93aW5nIHVwIGFzIDAuPC9wPg0KPHA+KiBNb2RpZmllZCBwZXJtaXNzaW9ucyB0byBiZSBtb3JlIGdyYW51bGFyPC9wPg0KPHA+KiBBZGRlZCBzb21lIGNvbW1lbnRzIGFuZCB2ZXJib3NpdHkgdG8gdGhlIGNhdGVnb3J5IGFuZCB1cGxvYWRzIGZvcm1zIGluIHRoZSBhZG1pbiBzZWN0aW9uPC9wPg0KPHA+KiBBZGRlZCAmcXVvdDtyYW5kb20mcXVvdDsgc29ydCBvcmRlcjwvcD4NCjxwPiogU29tZSBQSFA1IGZpeGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjkuIC0gSmFudWFyeSwgMjAwNjwvcD4NCjxwPiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXBsb2FkIGEgdGh1bWJuYWlsIGltYWdlPC9wPg0KPHA+KiBTb21lIGltcHJvdmVkIGF1ZGl0aW5nPC9wPg0KPHA+KiB4bWwgbm93IGFkZGVkIHRvIHRoZSBkZWZhdWx0IGZpbGUgdHlwZXMgKG5ldyBpbnN0YWxscyBvbmx5KTwvcD4NCjxwPiogQWRkZWQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcmVzZXQgdG8gZGVmYXVsdHMgYnV0dG9ucyBvZiB0aGUgdGVtcGxhdGUgcGFnZXMuPC9wPg0KPHA+KiBBZGRlZCB0aGUgZmlsZV9leHRlbnNpb25zIHBhcmFtZXRlciBmb3IgdGhlIHVwbG9hZCBmb3JtPC9wPg0KPHA+KiBUaGUgY3VycmVudCBjYXRlZ29yeSBzZWxlY3RlZCBpbiB0aGUgZmlsZXMgZmlsdGVyIGlzIHN0aWNreS4NCjxwPiogQWRkZWQgYSBwcmVmZXJlbmNlIHRvIGVuZm9yaWNlIGZpbGVuYW1lIGV4dGVuc2lvbnMgKGRlZmF1bHRzIHRvIG9uKTwvcD4NCjxwPiogQWRkZWQgYSBsaW5rIHRvIHRoZSBlZGl0IHBhZ2UsIGluIHRoZSBuYW1lIGNvbHVtbiBvZiB0aGUgZmlsZXMgbGlzdC48L3A+DQo8cD4qIE1pbm9yIGNoYW5nZXMgdG8gdGhlIGxheW91dCBhbmQgdGV4dCB0byBhZGQgY2xhcml0eS48L3A+DQo8cD4qIEFkZGVkIGRvd25sb2FkX3VybCBhcyBhbiBhdmFpbGFibGUgc21hcnR5IHRhZyBpbiB0aGUgdGVtcGxhdGVzPC9wPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTAuIC0gRmVicnVhcnksIDIwMDY8L3A+DQo8cD4qIFN1bW1hcnkgbm93IGRlZmF1bHRzIHRvIHRoZSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSBpZiBub25lIGlzIHNwZWNpZmllZDwvcD4NCjxwPiogTm93IGNvcnJlY3RseSBoYW5kbGUgaWYgdGhlIHRodW1ibmFpbCBleHRlbnNpb24gaXMgbm90IGluIHRoZSBhY2NlcHRlZCBleHRlbnNpb24gbGlzdDwvcD4NCjxwPiogTm8gbG9uZ2VyIGRpc3BsYXkgYW55IGNvbnRlbnQgaW4gdGhlIGZpbGVzIHRhYiBpZiB0aGVyZSBhcmUgbm8gY2F0ZWdvcmllcyBkZWZpbmVkPC9wPg0KPHA+KiBEaXNwbGF5IGEgbGluayBpbiB0aGUgZXJyb3IgcGFnZSB0aGF0IHRha2VzIHlvdSBiYWNrIHRvIHRoZSBtYWluIGFkbWluIHBhbmVsPC9wPg0KPHA+KiBBbGxvdyBmb3IgcmVwbGFjaW5nIG9mIHVwbG9hZGVkIGZpbGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjExLiAtIE1hcmNoLCAyMDA2PC9wPg0KPHA+QWRkZWQgdGhlIGFiaWxpdHkgZm9yIGEgbGluayB0byBhIGRldGFpbGVkIHBhZ2Ugd2hlbiBpbiBzdW1tYXJ5IG1vZGUuPC9wPg0KPHA+U3BsaXQgdGhlIGRlZmF1bHQgYWN0aW9uIGFuZCBkZWZhdWx0YWRtaW4gYWN0aW9ucyBpbnRvIHNlcGFyYXRlIGZpbGVzLCBmb3IgYSBiaXQgb2YgbWVtb3J5IGltcHJvdmVtZW50LCBob3BlZnVsbHk8L3A+DQo8cD5BZGQgdGhlIGFiaWxpdHkgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBwYWdlIGFmdGVyIGEgZnJvbnRlbmQgdXNlciB1cGxvYWRlZCBhIGZpbGU8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTIuIC0gTWFyY2gsIDIwMDY8L3A+DQo8cD5BZGRlZCB0aGUgc2luZ2xlc3VtbWFyeSBtb2RlIHRvIGRpc3BsYXkgYSBzaW5nbGUgdXBsb2FkIGluIHN1bW1hcnkgbW9kZTwvUD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMy4gLSBBcHJpbCwgMjAwNjwvcD4NCjxwPkFkZGVkIG9wdGlvbmFsIGZpbHRlcmluZyBvbiB0aGUgZnJvbnRlbmQsIGFuZCBhIGNvdXBsZSBvZiBleHRyYSBwYXJhbWV0ZXJzIHRvIGdvIHdpdGggaXQ8L3A+DQo8cD5GaXhlZCBhIHByb2JsZW0gd2hlcmUgaXQgd291bGQgYWxsb3cgeW91IHRvIGVudGVyIGEgYmxhbmsgcGF0aCB3aGVuIGNyZWF0aW5nIGEgY2F0ZWdvcnk8L3A+DQo8cD5TcGxpdCBzdHVmZiBpbnRvIChzb21lKSBzZXBhcmF0ZSBhY3Rpb24gZmlsZXMgZm9yIHNvbWUgaG9wZWZ1bCBwZXJmb3JtYW5jZSBpbmNyZWFzZXM8L3A+DQo8cD5BZGRlZCBjb3B5cmlnaHQgbm90aWNlczwvcD4NCjxwPkNoYW5nZWQgKG9wdGlvbmFsKSBkZXBlbmRlbmN5IGZyb20gVXNlcklEIHRvIEZyb250RW5kVXNlcnMgTW9kdWxlLjwvcD4NCjxwPlZlcnNpb24gMS4yLjAuIC0gQXByaWwsIDIwMDY8L3A+DQo8cD5DaGFuZ2VkIF9zY2FuRGlyZWN0b3J5IHRvIGFuIEFQSSBmdW5jdGlvbiBTY2FuRGlyZWN0b3J5IGFuZCB0aGVuIGFkZGVkIFNtYXJ0U2NhbkRpcmVjdG9yeSB0byBzY2FuIHRoZSBkaXJlY3RvcnkgYmVmb3JlIGRpc3BsYXlpbmcgdGhlIHN1bW1hcnkgb3IgZGV0YWlsIGxpc3RpbmcgdG8gaGFuZGxlIHRoZQ0KY2FzZSB3aGVyZSBzb21lYm9keSB1cGxvYWRlZCBmaWxlcyB2aWEgRlRQIG9yIHNvbWV0aGluZyBhbmQgZGlkIG5vdCBnbyBpbnRvIHRoZSBhZG1pbiBzZWN0aW9uIHRvIHVwZGF0ZSB0aGUgY2F0ZWdvcmllcy48L3A+DQo8cD5Db3JyZWN0aW9uIHRvIGFsbCBkYiBhY2Nlc3Mgc3R1ZmYuIEhvcGVmdWxseSBwcm92aWRlcyBhIHBlcmZvcm1hbmNlIGluY3JlYXNlLjwvcD4NCjxwPkZpeGVzIHRvIHRoZSBhYm91dCBzdHVmZiwgbm93IHVzZSBDcmVhdGVQYXJhbWV0ZXI8L3A+DQo8cD5BZGRlZCB0aGUgdXBsb2FkX3RlbXBsYXRlLCBzdW1tYXJ5X3RlbXBsYXRlLCBhbmQgZGV0YWlsX3RlbXBsYXRlIChvcHRpb25hbCkgcGFyYW1ldGVyPC9wPg0KPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ2RhdGV1cGxvYWRlZCddID0gJ0RhdGUgVXBsb2FkZWQnOwokbGFuZ1snZGVmYXVsdCddID0gJ0RlZmF1bHRzJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ2Rlc3RuYW1lJ10gPSAnVXBsb2FkIEFzJzsKJGxhbmdbJ2RldGFpbF90ZW1wbGF0ZSddID0gJ0RldGFpbCBUZW1wbGF0ZSc7CiRsYW5nWydkb3dubG9hZGVkJ10gPSAnRmlsZSAlcyB3YXMgZG93bmxvYWRlZC4nOwokbGFuZ1snZG93bmxvYWRzJ10gPSAnRG93bmxvYWRzJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2VkaXRjYXRlZ29yeSddID0gJ0VkaXQgQ2F0ZWdvcnknOwokbGFuZ1snZWRpdHVwbG9hZCddID0gJ0VkaXQgVXBsb2FkJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmdbJ2Vycm9yX3BhdGhpbnVzZSddID0gJ0EgY2F0ZWdvcnkgdXNpbmcgdGhhdCBwYXRoIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRXJyb3I6IENhdGVnb3J5IGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5bm90ZW1wdHknXSA9ICdFcnJvciEgQ2Fubm90IGRlbGV0ZSBhIGNhdGVnb3J5IHRoYXQgaXMgbm90IGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5bm90Zm91bmQnXSA9ICdFcnJvcjogQ2F0ZWdvcnkgbm90IGZvdW5kISc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRXJyb3I6IERhdGFiYXNlIGVycm9yISc7CiRsYW5nWydlcnJvcl9lbXB0eWNhdGVnb3J5J10gPSAnRXJyb3I6IEVtcHR5IENhdGVnb3J5ISc7CiRsYW5nWydlcnJvcl9lbXB0eXBhdGgnXSA9ICdFcnJvcjogRW1wdHkgUGF0aCEnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0Vycm9yISBGaWxlICVzIGFscmVhZHkgZXhpc3RzLic7CiRsYW5nWydlcnJvcl9maWxlbm90Zm91bmQnXSA9ICdFcnJvciEgRmlsZSAlcyB3YXMgbm90IGZvdW5kLic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdFcnJvcjogSW5zdWZmaWNpZW50IHBhcmFtZXRlcnMgc3VwcGxpZWQgdG8gbW9kdWxlISc7CiRsYW5nWydlcnJvcl9pbnZhbGlkYXV0aG9yJ10gPSAnRXJyb3I6IEludmFsaWQgKG9yIGVtcHR5KSBhdXRob3IuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRjYXRlZ29yeSddID0gJ0Vycm9yOiBJbnZhbGlkIChvciBlbXB0eSkgY2F0ZWdvcnkuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRkZXNjcmlwdGlvbiddID0gJ0Vycm9yOiBJbnZhbGlkIChvciBlbXB0eSkgZGVzY3JpcHRpb24uJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlJ10gPSAnRXJyb3I6IEludmFsaWQgKG9yIGVtcHR5KSBmaWxlbmFtZS4nOwokbGFuZ1snZXJyb3JfaW52YWxpZHVwbG9hZGZpbGVuYW1lJ10gPSAnRXJyb3I6IEZpbGVzIHdpdGggdGhhdCBuYW1lIChwcm9iYWJseSBleHRlbnNpb24pIGFyZSBub3QgYWxsb3dlZCAoJXMpLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXBsb2FkaWQnXSA9ICdFcnJvcjogSW52YWxpZCB1cGxvYWQgaWQnOwokbGFuZ1snZXJyb3Jfbm9maWxlcyddID0gJ0Vycm9yOiBObyBNYXRjaGluZyBGaWxlcyEnOwokbGFuZ1snZmlsZXMnXSA9ICdGaWxlcyc7CiRsYW5nWydmaXhtZSddID0gJ0ZpeCBTcGFjZXMnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXBsb2FkIE1vZHVsZSc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5JdCBpcyBhIG1vZHVsZSBmb3IgYWxsb3dpbmcgcGVvcGxlIHRvIHVwbG9hZCBhbmQgZG93bmxvYWQgZmlsZXMgdG8gYW5kIGZyb20geW91ciBzaXRlLiAgSXQga2VlcHMgdHJhY2sgb2Ygd2hvIHVwbG9hZGVkIGEgZmlsZSwgYW5kIHdobyBoYXMgZG93bmxvYWRlZCBpdC4gIEFzIHdlbGwsIHlvdSBjYW4gc29ydCBmaWxlcyBpbnRvIGNhdGVnb3JpZXMsIGFuZCBtYW5hZ2UgdGhlIGZpbGVzIHRoYXQgd2VyZSB1cGxvYWRlZCBsaWtlIGV2ZXJ5IGFkbWluaXN0cmF0b3Igd291bGQgZG88L3A+IA0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5UbyB1c2UgdGhpcyBtb2R1bGUsIHRvIGFsbG93IHVzZXJzIHRvIHVwbG9hZCBmaWxlcyB0byB5b3VyIHNpdGUsIHlvdSBzaG91bGQgaW5zdGFsbCB0aGUgbW9kdWxlLCBhbmQgdGhlbiBjcmVhdGUgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyAoYS5rLmEpIGRpcmVjdG9yaWVzIGZvciB0aGUgdXBsb2FkZWQgZmlsZXMgdG8gZ28gaW50by4gVGhlbiBhZGQgYSB0YWcgaW50byBhIHBhZ2Ugb3IgdGVtcGxhdGUgc29tZXdoZXJlIGxpa2Uge2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90O1VwbG9hZHMmcXVvdDsgY2F0ZWdvcnk9JnF1b3Q7c29tZWNhdGVnb3J5JnF1b3Q7IG1vZGU9JnF1b3Q7c29tZW1vZGUmcXVvdDt9LiAgV2hlcmUgbW9kZSBtYXRjaGVzIG9uZSBvZiB0aGUgbW9kZXMgbGlzdGVkIGJlbG93LiAgVGhlIG91dHB1dCB3aWxsIGRpZmZlciBkZXBlbmRpbmcgdXBvbiB3aGljaCBtb2RlIHlvdSBzZWxlY3QuPC9wPg0KPHA+VGhpcyBtb2R1bGUgY2FuIHVzZSB0aGUgRnJvbnRlbmRVc2VycyBtb2R1bGUgKG9wdGlvbmFsKSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcnMgdG8gcGFydGx5IGZpbGwgaW4gdGhlIGZvcm0gd2hlbiB1cGxvYWRpbmcgZmlsZXM7PC9wPg0KPGgzPlBlcm1pc3Npb25zPC9oMz4NCjx1bD4NCjxsaT48ZW0+TWFuYWdlIFVwbG9hZHM8L2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCB0byBtYW5hZ2UgY2F0ZWdvcmllcywgYW5kIHRoZSBmaWxlcyB3aXRoaW4gdGhlbS48L2xpPg0KPGxpPjxlbT5Nb2RpZnkgVGVtcGxhdGVzPC9lbT4gcGVybWlzc2lvbiBpcyBuZWVkZWQgZWRpdCBhbnkgb2YgdGhlIHRlbXBsYXRlcy48L2xpPg0KPGxpPjxlbT5Nb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcy9lbT4gcGVybWlzc2lvbiBpcyBuZWVkZWQgYW55IG9mIHRoZSBmaWxlIHNldHRpbmdzLjwvbGk+DQo8L3VsPg0KPGgzPkVtYWlsaW5nPC9oMz4NCjxwPlRoaXMgbW9kdWxlIGlzIGNhcGFibGUgb2Ygc2VuZGluZyBhbiBlbWFpbCB3aGVuZXZlciBhIGZpbGUgaXMgdXBsb2FkZWQsIHNlZSB0aGUgcHJlZmVyZW5jZXMgdGFiLiAgSG93ZXZlciwgdG8gZG8gdGhpcyB0aGUgPGI+Q01TTWFpbGVyPC9iPiBwYWNrYWdlIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLiAgVGhpcyBpcyBhbiA8ZW0+b3B0aW9uYWw8L2VtPiBzdGVwLCBhbmQgaWYgdGhlIENNU01haWxlciBtb2R1bGUgaXMgbm90IGluc3RhbGxlZCwgbm90aGluZyB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciwgb25seSBhIGxvZyBtZXNzYWdlIHdpbGwgYmUgcGxhY2VkIGludG8gdGhlIGFkbWluIGxvZzwvcD4NCjxoMz5TeXN0ZW0gU2V0dGluZ3M8L2gzPg0KPHA+PGI+Tm90ZTo8L2I+IFRoaXMgbW9kdWxlIGRvZXMgbm90IGJ5cGFzcyBvciBnZXQgcGFzdCBhbnkgZmlsZSBzaXplIGxpbWl0YXRpb25zIGluIHBocC4gIEl0IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlbS4gIFRoZXJlZm9yZSB5b3UgbWF5IG5lZWQgdG8gbW9kaWZ5IHlvdXIgcGhwLmluaSBmaWxlIGFuZC9vciB5b3VyIGh0dHBkLmNvbmYgZmlsZShzKSB0byBhbGxvdyB5b3UgdG8gdXBsb2FkIGZpbGVzIGFzIGxhcmdlIGFzIHdoYXQgeW91IGhhdmUgc2V0IGluIHRoZSB1cGxvYWRzIG1vZHVsZSBwcmVmZXJlbmNlcy48L3A+DQo8aDM+QXBhY2hlIE5vdGVzPC9oMz4NCjxwPkluIG9yZGVyIHRvIGFsbG93IGxhcmdlIGZpbGUgdXBsb2FkcywgeW91IG1heSBuZWVkIHRvIG1vZGlmeSB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBwYXJhbWV0ZXIgaW4geW91ciBwaHAuaW5pICBJbiBhZGRpdGlvbiwgdGhlIExpbWl0UmVxdWVzdEJvZHkgcGFyYW1ldGVyIGluIHlvdXIgYXBhY2hlIGNvbmZpZ3VyYXRpb24sIG1heSBuZWVkIHRvIGJlIGFkanVzdGVkIHRvIG1hdGNoIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlcjwvcD4NCjxwPk5vdGU6ICB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBwYXJhbWV0ZXIgY2FuIGJlIHNwZWNpZmllZCBpbiBieXRlcywga2lsb2J5dGVzLCBvciBtZWdhYnl0ZXMsIGhvd2V2ZXIgdGhlIExpbWl0UmVxdWV0Qm9keSBwYXJhbWV0ZXIgaXMgb25seSBzcGVjaWZpZWQgaW4gYnl0ZXM8L3A+DQonOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ2lwX2FkZHJlc3MnXSA9ICdJUCBBZGRyZXNzJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBtb2R1bGUgdGhhdCBhbGxvd3MgdXNlcnMgdG8gdXBsb2FkIGZpbGVzLCBhbmQgYWxsb3dzIHlvdSB0byBtYW5hZ2UgdGhlbS4nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncmVuYW1lbWVzc2FnZSddID0gJ0NoYW5nZSB0aGUgbmFtZSBoZXJlIHRvIGV4ZWN1dGUgYSByZW5hbWUnOwokbGFuZ1sncGF0aCddID0gJ1BhdGgnOwokbGFuZ1sncGF0aG1lc3NhZ2UnXSA9ICdDaGFuZ2UgdGhlIGNhdGVnb3J5IGhlcmUgdG8gbW92ZSB0aGUgZmlsZSB0byBhbm90aGVyIGRpcmVjdG9yeSc7CiRsYW5nWydwYXRoaW51cGxvYWRzJ10gPSAnKFJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcmVjdG9yeSknOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGUgdXBsb2FkcyBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZC4gQmUgc3VyZSB0byBzZXQgJnF1b3Q7TWFuYWdlIFVwbG9hZHMmcXVvdDsgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnVGhlIFVwbG9hZHMgbW9kdWxlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZW1vdmVkLiAgTm8gZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB5b3VyIHVwbG9hZHMgZGlyZWN0b3J5LCBhbmQgZmlsZSBpbnRlZ3JpdHkgaXMgaW50YWN0JzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIHByZWZlcmVuY2VzIHVwZGF0ZWQuJzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yeWRlc2MnXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlsaXN0YWJsZSddID0gJ0ZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGNhbiBiZSBsaXN0ZWQnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5bmFtZSddID0gJ0NhdGVnb3J5IE5hbWUnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5cGF0aCddID0gJ1NlcnZlciBQYXRoJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVkaXJlY3RvcnknXSA9ICdEZWxldGUgY2F0ZWdvcnkgZGlyZWN0b3J5Pyc7CiRsYW5nWydwcm9tcHRfbWF4X3VwbG9hZHNpemUnXSA9ICdNYXhpbXVtIGZpbGUgc2l6ZSBhbGxvd2VkIChLYiknOwokbGFuZ1sncHJvbXB0X3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdWYWxpZCB1cGxvYWQgZXh0ZW5zaW9ucyc7CiRsYW5nWydzY2FuJ10gPSAnU2Nhbic7CiRsYW5nWydzZWxlY3RjYXRlZ29yeSddID0gJ1NlbGVjdCBDYXRlZ29yeSc7CiRsYW5nWydzaXplJ10gPSAnU2l6ZSc7CiRsYW5nWydzaXpla2InXSA9ICdTaXplIChLYiknOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ3N1bW1hcnlfdGVtcGxhdGUnXSA9ICdTdW1tYXJ5IFRlbXBsYXRlJzsKJGxhbmdbJ3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsKJGxhbmdbJ3RpdGxlX2FkbWluX3BhbmVsJ10gPSAnVXBsb2FkcyBNb2R1bGUnOwokbGFuZ1sndGl0bGVfbW9kX2FkbWluJ10gPSAnTW9kdWxlIEFkbWluIFBhbmVsJzsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsZSBQcmVmZXJlbmNlcyc7CiRsYW5nWyd0aXRsZV9zaW5nX2xvdWRseSddID0gJ1NpbmcgTG91ZGx5Pyc7CiRsYW5nWyd0aXRsZV9zdWJuZXRfZXhjbHVzaW9ucyddID0gJ0V4Y2x1ZGUgc3VibmV0cyBmcm9tIHN0YXRpc3RpY3MnOwokbGFuZ1sndGl0bGVfdmFsaWRfdXBsb2FkZXh0ZW5zaW9ucyddID0gJ1ZhbGlkIEV4dGVuc2lvbnMnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3VwbG9hZCddID0gJ1VwbG9hZCc7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0ZpbGUgJXMgd2FzIHVwbG9hZGVkIGJ5ICVzLic7CiRsYW5nWydyZXBsYWNlZCddID0gJ0ZpbGUgJXMgd2FzIHJlcGxhY2VkIGJ5ICVzLic7CiRsYW5nWydkZWxldGVkJ10gPSAnRmlsZSAlcyB3YXMgZGVsZXRlZC4nOwokbGFuZ1sndXBsb2FkZm9ybV90ZW1wbGF0ZSddID0gJ1VwbG9hZCBUZW1wbGF0ZSc7CiRsYW5nWyd1c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ3dhcm5pbmdfZGVsZXRlY2F0ZWdvcnknXSA9ICdXQVJOSU5HOiBVc2UgY2F1dGlvbiB3aGVuIGRlbGV0aW5nIGNhdGVnb3JpZXMuICBGaWxlcyBtYXkgYmUgbG9zdCc7CiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5XZWxjb21lIHRvIHRoZSBVcGxvYWRzIE1vZHVsZSBhZG1pbiBzZWN0aW9uLiBTb21ldGhpbmcgZWxzZSB3b3VsZCBwcm9iYWJseSBnbyBoZXJlIGlmIHRoZSBtb2R1bGUgYWN0dWFsbHkgZGlkIHNvbWV0aGluZy48L3A+JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTE0ODQ4NTE0MS44LjMudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPXdpa2kuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9pbmRleC5waHAvVXNlcl9IYW5kYm9va3x1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMTE3OTYxMTE3LjExNDczNDY2NjguMTE0ODkwNjYyMC4xMTQ4OTk2ODMxLjEzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hlbHBfT25VcGxvYWQnXSA9ICc8aDM+T25VcGxvYWQ8L2gzPg0KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBuZXcgZmlsZSBpcyB1cGxvYWRlZCB2aWEgdGhlIGFkbWluIG9yIGZyb250ZW5kIGludGVyZmFjZXM8L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPmNhdGVnb3J5PC9lbT4gLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSB1cGxvYWRlZCBmaWxlPC9saT4NCjxsaT48ZW0+c2l6ZTwvZW0+IC0gVGhlIHNpemUgb2YgdGhlIHVwbG9hZGVkIGZpbGU8L2xpPg0KPGxpPjxlbT5zdW1tYXJ5PC9lbT4gLSBUaGUgc2hvcnQgZGVzY3JpcHRpb24gZm9yIHRoZSB1cGxvYWRlZCBmaWxlIChtYXkgYmUgZW1wdHkpPC9lbT48L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gVGhlIGxvbmcgZGVzY3JpcHRpb24gZm9yIHRoZSB1cGxvYWRlZCBmaWxlIChtYXkgYmUgZW1wdHkpPC9lbT48L2xpPg0KPGxpPjxlbT5hdXRob3I8L2VtPiAtIFRoZSBhdXRob3Igb2YgdGhlIHVwbG9hZGVkIGZpbGUgKGlmIGF2YWlsYWJsZSk8L2VtPjwvbGk+DQo8bGk+PGVtPmlwX2FkZHJlc3M8L2VtPiAtIFRoZSBpbnRlcm5ldCBhZGRyZXNzIG9mIHRoZSBjbGllbnQgdGhhdCB1cGxvYWRlZCB0aGUgZmlsZTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2luZm9fZXZlbnRfb251cGxvYWQnXSA9ICdFdmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyBmaWxlIGlzIHVwbG9hZGVkJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25yZW1vdmUnXSA9ICdFdmVudCBnZW5lcmF0ZWQgd2hlbiBhIGZpbGUgaXMgcmVtb3ZlZCc7CiRsYW5nWyd0aXRsZV91c2VydGFnX29udXBsb2FkJ10gPSAnQmVudXR6ZXJkZWZpbmllcnRlciBUYWcsIGRlciBhdWZnZXJ1ZmVuIHdlcmRlbiBzb2xsLCB3ZW5uIGRpZSBEYXRlaSB2b2xsc3QmYXVtbDtuZGlnIGhvY2hnZWxhZGVuIGlzdCc7CiRsYW5nWydub25lJ10gPSAnTmljaHRzJzsKJGxhbmdbJ21hdGNoZXNmb3VuZCddID0gJyZVdW1sO2JlcmVpbnN0aW1tdW5nZW4gZ2VmdW5kZW4nOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3RpdGxlX3JlZGlyZWN0b251cGxvYWQnXSA9ICdEZXMgVXNlciBuYWNoIGRlbSBIb2NobGFkZW4gZWluZXIgRGF0ZWkgd2VpdGVybGVpdGVuIGF1ZiBTZWl0ZSAoaWQvYWxpYXMpJzsKJGxhbmdbJ2RldGFpbHMnXSA9ICdEZXRhaWxzJzsKJGxhbmdbJ2NvbmZpcm1fcHJlZmVyZW5jZXMnXSA9ICdTaW5kIHNpZSBzaWNoZXIsIGRhc3Mgc2llIGRpZSBFaW5zdGVsbHVuZ2VuIGFucGFzc2VuIG0mb3VtbDtjaHRlbj8nOwokbGFuZ1snZXJyb3Jfbm9maWxlc3VwbG9hZGVkJ10gPSAnRXMgd3VyZGVuIGtlaW5lIERhdGVpZW4gaG9jaGdlbGFkZW4uJzsKJGxhbmdbJ3Byb21wdF9yZXBsYWNlJ10gPSAnJlV1bWw7YmVyc2NocmVpYmVuIGVybGF1YmVuJzsKJGxhbmdbJ2luZm9fcmVwbGFjZSddID0gJ0Vyc2V0enQgZWluZSBEYXRlaSBtaXQgZGVtIGdsZWljaGVuIE5hbWVuIChvaG5lICZBdW1sO25kZXJ1bmcgZGVyIElEKSc7CiRsYW5nWydub19pbml0aWFsJ10gPSAnV2VubiBkaWVzZXIgRmlsdGVyIGFrdGl2aWVydCBpc3QsIHdlcmRlbiBrZWluZSBlaW5sZWl0ZW5kZW4gRXJnZWJuaXNzZSBhbmdlemVpZ3QuJzsKJGxhbmdbJ3BhcmFtX3VwbG9hZF9pZCddID0gJw0KdXBsb2FkX2lkPSZxdW90O2lkJnF1b3Q7IC0gZGVmaW5pZXJ0IGVpbmUgZWluemVsbmUgRGF0ZWkgZiZ1dW1sO3IgZWluZW4gTGluayBvZGVyIGYmdXVtbDtyIGRlbiBTaW5nbGUtTW9kdXM8L2xpPic7CiRsYW5nWydwYXJhbV91c2Vfc3RyaWN0X3JlZ2V4cCddID0gJ0RpZSBFaW5nYWJlbiBpbSBGaWx0ZXItRmVsZCB3ZXJkZW4gYWxzIHN0cmlrdCByZWd1bCZhdW1sO3JlIEF1c2RyJnV1bWw7Y2tlIG9obmUgVmVyYXJiZWl0dW5nIGRlciBMZWVyemVpY2hlbiB2ZXJ3ZW5kZXQsIHVtIFRoZSBmaWx0ZXIgZmllbGQgaXMgdXNlZCBhcyBhIHN0cmljdCByZWdleHAgd2l0aG91dCBwcmVwcm9jZXNzaW5nIG9mIHNwYWNlcyc7CiRsYW5nWydwYXJhbV9kZXRhaWxfZmlsZXRlbXBsYXRlJ10gPSAnRWluIC50cGwtRGF0ZWkgYXVzIGRlbSBWZXJ6ZWljaG5pcyBVcGxvYWRzL3RlbXBsYXRlcy8gYW5zdGF0dCBkZXMgRGF0ZW5iYW5rLVRlbXBsYXRlcyB2ZXJ3ZW5kZW4sIHdlbm4gZWluIGRldGFpbGllcnRlciBCZXJpY2h0IGFuZ2V6ZWlndCB3aXJkJzsKJGxhbmdbJ3BhcmFtX3VwbG9hZF9maWxldGVtcGxhdGUnXSA9ICdFaW4gLnRwbC1EYXRlaSBhdXMgZGVtIFZlcnplaWNobmlzIFVwbG9hZHMvdGVtcGxhdGVzLyBhbnN0YXR0IGRlcyBEYXRlbmJhbmstVGVtcGxhdGVzIHZlcndlbmRlbiwgd2VubiBkYXMgRm9ybXVsYXIgenVtIEhvY2hsYWRlbiB2b24gRGF0ZWllbiBhbmdlemVpZ3Qgd2lyZCc7CiRsYW5nWydwYXJhbV9zdW1tYXJ5X2ZpbGV0ZW1wbGF0ZSddID0gJ0VpbiAudHBsLURhdGVpIGF1cyBkZW0gVmVyemVpY2huaXMgVXBsb2Fkcy90ZW1wbGF0ZXMvIGFuc3RhdHQgZGVzIERhdGVuYmFuay1UZW1wbGF0ZXMgdmVyd2VuZGVuLCB3ZW5uIGVpbmUgenVzYW1tZW5mYXNzZW5kZXIgQmVyaWNodCBhbmdlemVpZ3Qgd2lyZCc7CiRsYW5nWydwYXJhbV9maWx0ZXInXSA9ICdEYXMgRmlsdGVyLUZvcm11bGFyIGFuemVpZ2VuJzsKJGxhbmdbJ3BhcmFtX25vX2ludGl0aWFsJ10gPSAnTnVyIG4mdXVtbDt0emxpY2gsIHdlbm4gZGVyIEZpbHRlci1QYXJhbWV0ZXIgZ2VzZXR6dCB3dXJkZS4gU3RhbmRhcmRtJmF1bWw7JnN6bGlnO2lnIHplaWd0IGRpZXNlciBQYXJhbWV0ZXIgYW4sIHdlbGNoZSBlaW5sZWl0ZW5kZW4gRXJnZWJuaXNzZSB6dXImdXVtbDtja2dlZ2ViZW4gd2VyZGVuIHNvbGxlbi4nOwokbGFuZ1sncGFyYW1fc29ydG9yZGVyJ10gPSAnICANCjxwPlNvcnRpZXJyZWloZW5mb2xnZQ0KICA8dWw+DQogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIHNvcnRpZXJ0IGF1ZnN0ZWlnZW5kIG5hY2ggRGF0dW08L2xpPg0KICA8bGk+PGVtPmRhdGVfZGVzYzwvZW0+IC0gc29ydGllcnQgYWJzdGVpZ2VuZCBuYWNoIERhdHVtPC9saT4NCiAgPGxpPjxlbT5uYW1lX2FzYzwvZW0+IC0gc29ydGllcnQgYXVmc3RlaWdlbmQgbmFjaCBOYW1lPC9saT4NCiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIHNvcnRpZXJ0IGFic3RlaWdlbmQgbmFjaCBOYW1lPC9saT4NCiAgPGxpPjxlbT5zaXplX2FzYzwvZW0+IC0gc29ydGllcnQgYXVmc3RlaWdlbmQgbmFjaCBHciZvdW1sOyZzemxpZztlPC9saT4NCiAgPGxpPjxlbT5zaXplX2Rlc2M8L2VtPiAtIHNvcnRpZXJ0IGFic3RlaWdlbmQgbmFjaCBHciZvdW1sOyZzemxpZztlPC9saT4NCiAgPGxpPjxlbT5kZXNjX2FzYzwvZW0+IC0gc29ydGllcnQgYXVmc3RlaWdlbmQgbmFjaCBCZXNjaHJlaWJ1bmc8L2xpPg0KICA8bGk+PGVtPmRlc2NfZGVzYzwvZW0+IC0gc29ydGllcnQgYWJzdGVpZ2VuZCBuYWNoIEJlc2NocmVpYnVuZzwvbGk+DQogIDxsaT48ZW0+YXV0aG9yX2FzYzwvZW0+IC0gc29ydGllcnQgYXVmc3RlaWdlbmQgbmFjaCBBdXRvcjwvbGk+DQogIDxsaT48ZW0+YXV0aG9yX2Rlc2M8L2VtPiAtIHNvcnRpZXJ0IGFic3RlaWdlbmQgbmFjaCBBdXRvcjwvbGk+DQogIDxsaT48ZW0+aXBfYXNjPC9lbT4gLSBzb3J0aWVydCBhdWZzdGVpZ2VuZCBuYWNoIElQLUFkcmVzc2U8L2xpPg0KICA8bGk+PGVtPmlwX2Rlc2M8L2VtPiAtIHNvcnRpZXJ0IGFic3RlaWdlbmQgbmFjaCBJUC1BZHJlc3NlPC9saT4NCiAgPGxpPjxlbT5yYW5kb208L2VtPiAtIHp1ZiZhdW1sO2xsaWdlIFJlaWhlbmZvbGdlPC9saT4NCiAgPC91bD4NCiAgPC9wPic7CiRsYW5nWydwYXJhbV9maWxlZXh0ZW5zaW9ucyddID0gJw0KZmlsZV9leHRlbnNpb25zPSZxdW90O2V4dDEsZXh0MixleHQzJnF1b3Q7DQo8cD5pc3QgbnVyIGcmdXVtbDtsdGlnLCB3ZW5uIG1vZGU9dXBsb2FkIGlzdCwgZGllc2VyIFBhcmFtZXRlciBiZXNjaHImYXVtbDtua3QgZGllIERhdGVpdHlwZW4sIGRpZSBob2NoZ2VsYWRlbiB3ZXJkZW4gayZvdW1sO25uZW4uICBEaWUgVm9yZWluc3RlbGx1bmdlbiBkZXMgTW9kdWxzIHdlcmRlbiBkYWJlaSAmdXVtbDtiZXJzY2hyaWViZW4uPC9wPic7CiRsYW5nWydwYXJhbV9jb3VudCddID0gJw0KY291bnQ9JnF1b3Q7TiZxdW90Ow0KPHA+RWluIFBhcmFtZXRlciB6dXIgRGFyc3RlbGx1bmcgZWluZXIgTGlzdGUgZGVuIGVyc3RlbiAmcXVvdDtOJnF1b3Q7IEVyZ2Vibmlzc2VuIGVpbmVyIEFiZnJhZ2UuIEVpbiBTZWl0ZW51bWJydWNoIHcmYXVtbDtyZSBzaWNoZXJsaWNoIGJlc3NlciwgYWJlciBiaXMgZGFoaW4gZ2lidHMgZGllc2VuIFRyaWNrLjwvcD4nOwokbGFuZ1sncGFyYW1fY2F0ZWdvcnknXSA9ICcNCmNhdGVnb3J5PSZxdW90O25hbWUmcXVvdDsNCjxwPjxiPkhpbndlaXM6PC9iPiBjYXRlZ29yeSBrYW5uIGF1Y2ggZGVuIFdlcnQgJnF1b3Q7YWxsJnF1b3Q7IGhhYmVuLiBEYW5uIHdlcmRlbiBhbGxlIGhvY2hnZWxhZGVuZW4gRGF0ZWllbiBpbiBhbGxlbiA8ZW0+Z2VsaXN0ZXRlbjwvZW0+IEthdGVnb3JpZW4gYW5nZXplaWd0LjwvcD4nOwokbGFuZ1sncGFyYW1fbW9kZSddID0gJyANCiA8dWw+DQogIDxsaT48ZW0+ZGV0YWlsZWQ8L2VtPiAtIHplaWd0IGVpbmUgZGV0YWlsbGllcnRlIExpc3RlIGFsbGVyIERhdGVpZW4gZGllc2VyIEthdGVnb3JpZTwvbGk+DQogIDxsaT48ZW0+dXBsb2FkPC9lbT4gLSB6ZWlndCBlaW4gRm9ybXVsYXIsIHVtIEJlc3VjaGVybiBkZXIgU2l0ZSBkYXMgSG9jaGxhZGVuIGVpbmVyIERhdGVpIHp1IGVybSZvdW1sO2dsaWNoZW48L2xpPg0KICA8bGk+PGVtPnVybCA8aT5vcjwvaT4gbGluazwvZW0+IC0gemVpZ3QgZWluZW4gTGluayB6dSBlaW5lciBEYXRlaTwvbGk+DQogIDxsaT48ZW0+c3VtbWFyeTwvZW0+IC0gemVpZ3QgZWluZSB6dXNhbW1lbmdlZmFzc3RlIExpc3RlIGFsbGVyIERhdGVpZW4gZGllc2VyIEthdGVnb3JpZTwvbGk+DQogIDxsaT48ZW0+c2luZ2xlPC9lbT4gLSB6ZWlndCBlaW5lbiBkZXRhaWxsaWVydGVuIEJlcmljaHQgJnV1bWw7YmVyIGVpbmUgYmVzdGltbXRlLCBob2NoZ2VsYWRlbmUgRGF0ZWk8L2xpPg0KICA8L3VsPic7CiRsYW5nWydyZXR1cm50b21vZHVsZSddID0gJ1p1ciZ1dW1sO2NrIHp1ciBNb2R1bG9iZXJmbCZhdW1sO2NoZSc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3JpZXMnXSA9ICdFcyB3dXJkZW4ga2VpbmUgS2F0ZWdvcmllbiBkZWZpbmllcnQuJzsKJGxhbmdbJ3RpdGxlX2VuZm9yY2VleHRlbnNpb25zJ10gPSAnRXJmb3JkZXJsaWNoZSBOYW1lbnNlcndlaXRlcnVuZ2VuIGYmdXVtbDtyIGFsbGUgaG9jaGdlbGFkZW5lbiBEYXRlaWVuJzsKJGxhbmdbJ3Jlc3RvcmVkZWZhdWx0c2NvbmZpcm0nXSA9ICdEaWVzIHNldHp0IGRhcyBUZW1wbGF0ZSBhdWYgZGVuIFN5c3RlbXN0YW5kYXJkIHp1ciZ1dW1sO2NrLiBBbGxlICZBdW1sO25kZXJ1bmdlbiBnZWhlbiBkYWJlaSB2ZXJsb3Jlbi4gV29sbGVuIHNpZSB3aXJrbGljaCBmb3J0ZmFocmVuPyc7CiRsYW5nWydpbmZvX3RodW1ibmFpbCddID0gJ0VpbmUgb3B0aW9uYWxlIFRodW1ibmFpbC1EYXRlaSc7CiRsYW5nWyd0aHVtYm5haWwnXSA9ICdUaHVtYm5haWwnOwokbGFuZ1snaW5mb19zdW1tYXJ5J10gPSAnRWluZSBrdXJ6ZSBCZXNjaHJlaWJ1bmcgZGVyIERhdGVpICh3aXJkIGRpZXMgbGVlciBnZWxhc3Nlbiwgd2lyZCBkZXIgRGF0ZWluYW1lIG9obmUgRXJ3ZWl0ZXJ1bmcgdmVyd2VuZGV0KSc7CiRsYW5nWydpbmZvX2NhdGVnb3J5bmFtZSddID0gJ0VpbiBrdXJ6ZXIgTmFtZSBmJnV1bWw7ciBpaHJlIEthdGVnb3JpZSc7CiRsYW5nWydpbmZvX2NhdGVnb3J5ZGVzYyddID0gJ0VpbmUgQmVzY2hyZWlidW5nIGYmdXVtbDtyIGlocmUgS2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlwYXRoJ10gPSAnRGFzIFVudGVydmVyemVpY2huaXMgaW0gVmVyemVpY2huaXMgVXBsb2Fkcywgd2VsY2hlcyBmJnV1bWw7ciBkaWUgU3BlaWNoZXJ1bmcgZGVyIERhdGVpZW4gZGllc2VyIEthdGVnb3JpZSBnZW51dHp0IHdlcmRlbiBzb2xsLiBGYWxscyBlaW4gVmVyemVpY2huaXMgbWl0IGRpZXNlbSBOYW1lbiBub2NoIG5pY2h0IGV4aXN0aWVydCwgd2lyZCBlcyBlcnpldWd0Lic7CiRsYW5nWydpbmZvX2Rlc3RuYW1lJ10gPSAnVmVyd2VuZGVuIHNpZSBkYXMgRmVsZCAmIzAzOTtIb2NobGFkZW4gYWxzJiMwMzk7LCB1bSBkZW4gTmFtZW4gZGVyIGhvY2hnZWxhZGVuZW4gRGF0ZWkgenUgdmVyJmF1bWw7bmRlcm4uIFdlbm4gZGFzIEZlbGQgbGVlciBibGVpYnQsIHdpcmQgZGVyIERhdGVpbmFtZSBuaWNodCB2ZXImYXVtbDtuZGVydC4nOwokbGFuZ1snZXJyb3JfY2FudGNyZWF0ZWRpcmVjdG9yeSddID0gJ0RhcyBWZXJ6ZWljaG5pcyBrb25udGUgbmljaHQgZXJzdGVsbHQgd2VyZGVuLic7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0RpZSBWZXJiaW5kdW5nIHp1bSBDTVNNYWlsZXItTW9kdWxlIGtvbm50ZSBuaWNodCBoZXJnZXN0ZWxsdCB3ZXJkZW4uJzsKJGxhbmdbJ3VwbG9hZF9ub3RpZmljYXRpb24nXSA9ICdFaW5lIG5ldWUgRGF0ZWkgd3VyZGUgaG9jaGdlbGFkZW4uJzsKJGxhbmdbJ3RpdGxlX2VtYWlsX29uX3VwbG9hZCddID0gJ0RpZSBCZW5hY2hyaWNodGlndW5nICZ1dW1sO2JlciBlaW5lIGhvY2hnZWxhZGVuZSBEYXRlaSBzb2xsIGdlc2FuZHQgd2VyZGVuIGFuJzsKJGxhbmdbJ2VtYWlsX3RlbXBsYXRlJ10gPSAnRW1haWwtVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfZHVtbXlfaW5kZXhfaHRtbCddID0gJ1NvbGwgaW4gamVkZW0gVmVyemVpY2huaXMgZWluZSBpbmRleC5odG1sLURhdGVpIGVyc3RlbGx0IHdlcmRlbj88YnIvPjxlbT5CZXJlaXRzIGV4aXN0aWVyZW5kZSBpbmRleC5odG1sLURhdGVpZW4gYmxlaWJlbiBlcmhhbHRlbjwvZW0+JzsKJGxhbmdbJ2Fib3V0J10gPSAnJnV1bWw7YmVyJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb25kZW5pZWQnXSA9ICdadWdyaWZmIHZlcndlaWdlcnQuIEJpdHRlICZ1dW1sO2JlcnByJnV1bWw7ZmVuIHNpZSBpaHJlIEJlcmVjaHRpZ3VuZ2VuLic7CiRsYW5nWydlcnJvcl9jb3VsZG5vdHdyaXRlJ10gPSAnS29ubnRlIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbi4nOwokbGFuZ1snYWRkY2F0ZWdvcnknXSA9ICdLYXRlZ29yaWUgaGluenVmJnV1bWw7Z2VuJzsKJGxhbmdbJ2FsbCddID0gJ0FsbGUnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpbmQgU2llIHNpY2hlcj8nOwokbGFuZ1snYXV0aG9yJ10gPSAnQXV0b3InOwokbGFuZ1snY2FuY2VsJ10gPSAnQWJicmVjaGVuJzsKJGxhbmdbJ2Nhbm5vdG1vZGlmeXBhdGgnXSA9ICcoRGllc2VyIFBmYWQga2FubiBuaWNodCB2ZXImYXVtbDtuZGVydCB3ZXJkZW4uKSc7CiRsYW5nWydjYXRlZ29yaWVzJ10gPSAnS2F0ZWdvcmllbic7CiRsYW5nWydjYXRlZ29yeSddID0gJ0thdGVnb3JpZSc7CiRsYW5nWydtZXNzYWdlX2NhdGVnb3J5YWRkZWQnXSA9ICdEaWUgS2F0ZWdvcmllIHd1cmRlIGVyZm9sZ3JlaWNoIGhpbnp1Z2VmJnV1bWw7Z3QuJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT4NCjxwPlZlcnNpb24gMS4wLiAtIFNlcHRlbWJlciAyMDA1LjwvcD4NCjxwPiBJbml0aWFsIFJlbGVhc2UuPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wMS4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPk1pbm9yIGZpeGVzLjwvcD48L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAyLiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+QWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IHNvcnQgb3JkZXI8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAzLiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+Rml4IHJlZ2FyZGluZyBjb25mbGljdCBpbiB0ZW1wbGF0ZSBuYW1lczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDQuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCBhYmlsaXR5IHRvIHJlLXNjYW4gYSBkaXJlY3RvcnksIGFuZCB0byB1cGxvYWQgZmlsZXMgZnJvbSB0aGUgYWRtaW4gcGFnZTwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDUuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5GaXhlZCBzb21lIFBIUCB2YXJpYWJsZSBpc3N1ZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjA2LiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+QWRkZWQgYXV0aG9yIGZpZWxkIHRvIHRoZSBhZG1pbiBwYW5lbCB1cGxvYWQgZm9ybSwgYWRkZWQgYSBzdW1tYXJ5IGZpZWxkLCBhbmQgbWFkZSBkZXNjcmlwdGlvbiBhIHRleHQgYXJlYSwgYW5kIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBmaWxlIG5hbWU8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjA3LiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gcmVuYW1lIGZpbGVzIGFuZCBmaXhlZCBhIHNjYW4gZXJyb3I8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjA4LiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+QmV0dGVyIGhhbmRsaW5nIG9mIG5hbWVzIHdpdGggc3BhY2VzLCBhbmQgYSBmZXcgbWlub3IgZXJyb3JzIGZpeGVkLiAgQWRkZWQgc3dlZGlzaCB0cmFuc2xhdGlvbiAodGhhbmtzIHdlc3Rpcyk8L3A+PC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjAuIC0gT2N0b2JlciAyMDA1PC9wPg0KIDx1bD4NCiAgIDxsaT5Nb2RpZmllZCBBdHRlbXB0VXBsb2FkIGZ1bmN0aW9uIHNvIGl0IGNvdWxkIGJlIGNhbGxlZCBleHRlcm5hbGx5PC9saT4NCiAgIDxsaT5BZGRlZCBHZXRVcGxvYWREZXRhaWxzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbGwgb2YgdGhlIGRldGFpbHMgYWJvdXQgYSBtb2R1bGUsIGluY2x1ZGluZyBhIGxpbms8L2xpPg0KICAgPGxpPkFkZGVkIFJlZGlyZWN0cyBzbyB0aGF0IHdvcmtpbmcgd2l0aCB0aGUgbW9kdWxlIGlzIGFsb3QgbmljZXIsIGl0IHJldHVybnMgdG8gdGhlIHJpZ2h0IHRhYjwvbGk+DQogICA8bGk+Q2hhbmdlZCB0aGUgZnJvbnQgdGVtcGxhdGUgdG8gbG9vayBhIGxpdHRsZSBiZXR0ZXIgYW5kIG1ha2UgbW9yZSBzZW5zZTwvbGk+DQogICA8bGk+Rml4ZXMgdG8gdGhlIHVwbG9hZHMgc3R1ZmYgc28gdGhhdCB0aGUgZGVzY3JpcHRpb24gaXMgc2V0LCBhbmQgbmFtZSBhbmQgc3VtbWFyeSBhcmUgcHV0IGluIHRoZSByaWdodCBwbGFjZTwvbGk+DQogICA8bGk+Rml4ZXMgdG8gZXZlbiBiZXR0ZXIgaGFuZGxlIHNwYWNlcyBpbiBuYW1lczwvbGk+DQogICA8bGk+T3B0aW9uYWx5IHBsYWNlIGR1bW15IGluZGV4Lmh0bWwgZmlsZXMgaW4gZWFjaCB1cGxvYWQgZGlyZWN0b3J5PC9saT4NCiAgIDxsaT5JZiBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gbmFtZSwgYW5kIG5vIGV4dGVuc2lvbiBpcyBnaXZlbiwgdGhlIGV4dGVuc2lvbiBvZiB0aGUgb3JpZ2luYXRpbmcgZmlsZSAoaWYgYW55IGV4aXN0cyBpcyB1c2VkPC9saT4NCiA8L3VsPg0KIDxwPjxlbT48Yj5JbXBvcnRhbnQhPC9iPjwvZW0+PGJyLz5JdCBpcyBub3QgcG9zc2libGUgdG8gdXBncmFkZSBmcm9tIGFueSBvdGhlciB2ZXJzaW9uIG9mIHRoZSBVcGxvYWRzIG1vZHVsZSB0byAxLjEuMC4gIFRoaXMgaXMgZHVlIHRvIHNvbWUgZXJyb3JzIHRoYXQgd2VyZSBtYWRlIGluIHRoZSBkYXRhYmFzZSByb3V0aW5lcywgYW5kIGV2ZW4gaW4gdGhlIHVwZ3JhZGUgcm91dGluZSBpbiAxLjAuNi4gIFlvdSBtdXN0IGRlLWluc3RhbGwgdGhlIG9sZCB2ZXJzaW9uLCBhbmQgdGhlbiByZS1pbnN0YWxsIHRoZSBuZXcgdmVyZXNpb24uIFRoaXMgd2lsbCBjYXVzZSBzaWduaWZpY2FudCBkaWZmaWN1bHR5IGlmIHlvdSBoYXZlIGRzY3JpcHRpb25zLCBldGMsIGluIHlvdXIgdGFibGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjEuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkZpeGVkIGEgY291cGxlIG9mIG1pbm9yIGJ1Z3MgaW4gdGhlIEdldFVwbG9hZERldGFpbHMgYW5kIGFkZGVkIGFub3RoZXIgbGluayAob3IgYSB1cmwpIHRvIHRoZSB1cGxvYWRlZCBmaWxlLjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4yLiAtIE9jdG9iZXIsIDIwMDU8L3A+DQo8cD5GaXhlZCB0aGUgVVJMIGZpZWxkIGluIEdldFVwbG9hZERldGFpbHMgdG8gcmV0dXJuIGEgZG93bmxvYWQgbGluayBhbmQgYWRkZWQgYW4gYWJzdXJsIGZpZWxkIHdoaWNoIHJldHVybnMgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGZpbGUgb24gdGhlIHdlYnNlcnZlci4gIENsaWNrcyBvbiB0aGlzIGxpbmsgd2lsbCBub3QgYmUgY291bnRlZDwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4zLiAtIE9jdG9iZXIsIDIwMDU8L3A+DQo8cD5GaXhlZCB0aGUgdXBncmFkZSBwcm9ibGVtIGZyb20gdGhlIDEuMC54IHNlcmllcy4gIFVzZXJzIG9mIHRoZSAxLjAueCBzZXJpZXMgc2hvdWxkIGJlIGFibGUgdG8gdXBncmFkZSB0byAxLjEuMyBub3cgd2l0aCBubyBkaWZmaWN1bHR5LiA8Yj5UaG9zZSBhcmUgZmFtb3VzIGxhc3Qgd29yZHMsIHBsZWFzZSBiYWNrdXAgZmlyc3Q8L2I+LiBGaXhlZCB0aGUgY29udGVudCByZWRpcmVjdCB0aGluZ3MgdGhhdCB3ZXJlIGlycml0YXRpbmcgbWUuICBBbHNvIGFkZGVkIGNhdGVnb3J5PWFsbCB0byBsaXN0IGFsbCBvZiB0aGUgdXBsb2FkcyBpbiBhbGwgbGlzdGFibGUgY2F0ZWdvcmllcyA8ZW0+KGxldHMgYWxsIGhvcGUgSSBnb3QgdGhlIHNxbCBmaWd1cmVkIG91dCBwcm9wZXJseSk8L2VtPi48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNC4gLSBPY3RvYmVyLCAyMDA1PC9wPg0KPHA+QWRkZWQgdGhlIGNvdW50IHBhcmFtZXRlciB0byBsaXN0IG9ubHkgdGhlIGZpcnN0IE4gcmVjb3JkcywgYW5kIGFkZGVkICZxdW90O3N1bW1hcnlsaW5rJnF1b3Q7LCBhbmQgJnF1b3Q7Y2F0ZWdvcnkmcXVvdDsgdG8gdGhlIHRlbXBsYXRlcyBmb3Igd2VzdGlzLiAgRm9yIGV4YW1wbGVzIG9uIGhvdyB0byB1c2UgdGhlbSByZXNldCB5b3VyIHRlbXBsYXRlcyBiYWNrIHRvIGRlZmF1bHQuPC9wPjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS41LiAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KPHA+QWRkZWQgZW1haWwgbm90aWZpY2F0aW9uIGFuZCBzb21lIGJ1ZyBmaXhlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS42LiAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KPHA+QWRkZWQgYW4gYXBpIGZ1bmN0aW9uIGFuZCBmaXhlZCBzb21lIHJlZGlyZWN0aW9uIHN0dWZmPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjcuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5Nb3JlIEFQSSBmdW5jdGlvbnMsIGFuZCBub3cgaWdub3JlIGRvdCBmaWxlcyB3aGVuIHNjYW5uaW5nLiAgRW1haWwgbm90aWZpY2F0aW9uIGlzIG5vdyBpbi48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuOC4gLSBKYW51YXJ5LCAyMDA2PC9wPg0KPHA+KiBJbXByb3ZlZCBkb2NzIHdydCBhcGFjaGUgYW5kIHBocCBjb25maWdzLjwvcD4NCjxwPiogRml4ZWQgcHJvYmxlbSB3aGVyZSBmaWxlc2l6ZSB3YXMgc2hvd2luZyB1cCBhcyAwLjwvcD4NCjxwPiogTW9kaWZpZWQgcGVybWlzc2lvbnMgdG8gYmUgbW9yZSBncmFudWxhcjwvcD4NCjxwPiogQWRkZWQgc29tZSBjb21tZW50cyBhbmQgdmVyYm9zaXR5IHRvIHRoZSBjYXRlZ29yeSBhbmQgdXBsb2FkcyBmb3JtcyBpbiB0aGUgYWRtaW4gc2VjdGlvbjwvcD4NCjxwPiogQWRkZWQgJnF1b3Q7cmFuZG9tJnF1b3Q7IHNvcnQgb3JkZXI8L3A+DQo8cD4qIFNvbWUgUEhQNSBmaXhlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS45LiAtIEphbnVhcnksIDIwMDY8L3A+DQo8cD4qIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHVwbG9hZCBhIHRodW1ibmFpbCBpbWFnZTwvcD4NCjxwPiogU29tZSBpbXByb3ZlZCBhdWRpdGluZzwvcD4NCjxwPiogeG1sIG5vdyBhZGRlZCB0byB0aGUgZGVmYXVsdCBmaWxlIHR5cGVzIChuZXcgaW5zdGFsbHMgb25seSk8L3A+DQo8cD4qIEFkZGVkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHJlc2V0IHRvIGRlZmF1bHRzIGJ1dHRvbnMgb2YgdGhlIHRlbXBsYXRlIHBhZ2VzLjwvcD4NCjxwPiogQWRkZWQgdGhlIGZpbGVfZXh0ZW5zaW9ucyBwYXJhbWV0ZXIgZm9yIHRoZSB1cGxvYWQgZm9ybTwvcD4NCjxwPiogVGhlIGN1cnJlbnQgY2F0ZWdvcnkgc2VsZWN0ZWQgaW4gdGhlIGZpbGVzIGZpbHRlciBpcyBzdGlja3kuDQo8cD4qIEFkZGVkIGEgcHJlZmVyZW5jZSB0byBlbmZvcmljZSBmaWxlbmFtZSBleHRlbnNpb25zIChkZWZhdWx0cyB0byBvbik8L3A+DQo8cD4qIEFkZGVkIGEgbGluayB0byB0aGUgZWRpdCBwYWdlLCBpbiB0aGUgbmFtZSBjb2x1bW4gb2YgdGhlIGZpbGVzIGxpc3QuPC9wPg0KPHA+KiBNaW5vciBjaGFuZ2VzIHRvIHRoZSBsYXlvdXQgYW5kIHRleHQgdG8gYWRkIGNsYXJpdHkuPC9wPg0KPHA+KiBBZGRlZCBkb3dubG9hZF91cmwgYXMgYW4gYXZhaWxhYmxlIHNtYXJ0eSB0YWcgaW4gdGhlIHRlbXBsYXRlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMC4gLSBGZWJydWFyeSwgMjAwNjwvcD4NCjxwPiogU3VtbWFyeSBub3cgZGVmYXVsdHMgdG8gdGhlIGZpbGVuYW1lICh3aXRob3V0IHRoZSBleHRlbnNpb24pIGlmIG5vbmUgaXMgc3BlY2lmaWVkPC9wPg0KPHA+KiBOb3cgY29ycmVjdGx5IGhhbmRsZSBpZiB0aGUgdGh1bWJuYWlsIGV4dGVuc2lvbiBpcyBub3QgaW4gdGhlIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0PC9wPg0KPHA+KiBObyBsb25nZXIgZGlzcGxheSBhbnkgY29udGVudCBpbiB0aGUgZmlsZXMgdGFiIGlmIHRoZXJlIGFyZSBubyBjYXRlZ29yaWVzIGRlZmluZWQ8L3A+DQo8cD4qIERpc3BsYXkgYSBsaW5rIGluIHRoZSBlcnJvciBwYWdlIHRoYXQgdGFrZXMgeW91IGJhY2sgdG8gdGhlIG1haW4gYWRtaW4gcGFuZWw8L3A+DQo8cD4qIEFsbG93IGZvciByZXBsYWNpbmcgb2YgdXBsb2FkZWQgZmlsZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTEuIC0gTWFyY2gsIDIwMDY8L3A+DQo8cD5BZGRlZCB0aGUgYWJpbGl0eSBmb3IgYSBsaW5rIHRvIGEgZGV0YWlsZWQgcGFnZSB3aGVuIGluIHN1bW1hcnkgbW9kZS48L3A+DQo8cD5TcGxpdCB0aGUgZGVmYXVsdCBhY3Rpb24gYW5kIGRlZmF1bHRhZG1pbiBhY3Rpb25zIGludG8gc2VwYXJhdGUgZmlsZXMsIGZvciBhIGJpdCBvZiBtZW1vcnkgaW1wcm92ZW1lbnQsIGhvcGVmdWxseTwvcD4NCjxwPkFkZCB0aGUgYWJpbGl0eSB0byByZWRpcmVjdCB0byBhbm90aGVyIHBhZ2UgYWZ0ZXIgYSBmcm9udGVuZCB1c2VyIHVwbG9hZGVkIGEgZmlsZTwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMi4gLSBNYXJjaCwgMjAwNjwvcD4NCjxwPkFkZGVkIHRoZSBzaW5nbGVzdW1tYXJ5IG1vZGUgdG8gZGlzcGxheSBhIHNpbmdsZSB1cGxvYWQgaW4gc3VtbWFyeSBtb2RlPC9QPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjEzLiAtIEFwcmlsLCAyMDA2PC9wPg0KPHA+QWRkZWQgb3B0aW9uYWwgZmlsdGVyaW5nIGFuZCBhIGNvdXBsZSBvZiBleHRyYSBwYXJhbWV0ZXJzIHRvIGdvIHdpdGggaXQ8L3A+DQo8cD5GaXhlZCBhIHByb2JsZW0gd2hlcmUgaXQgd291bGQgYWxsb3cgeW91IHRvIG5vdCBlbnRlciBhIHBhdGggd2hlbiBjcmVhdGluZyBhIGNhdGVnb3J5PC9wPg0KPHA+U3BsaXQgc3R1ZmYgaW50byAoc29tZSkgc2VwYXJhdGUgYWN0aW9uIGZpbGVzIGZvciBzb21lIGhvcGVmdWwgcGVyZm9ybWFuY2UgaW5jcmVhc2VzPC9wPg0KPHA+QWRkZWQgY29weXJpZ2h0IG5vdGljZXM8L3A+DQo8cD5DaGFuZ2VkIChvcHRpb25hbCkgZGVwZW5kZW5jeSBmcm9tIFVzZXJJRCB0byBGcm9udEVuZFVzZXJzIE1vZHVsZS48L3A+DQo8cD5WZXJzaW9uIDEuMi4wLiAtIEFwcmlsLCAyMDA2PC9wPg0KPHA+Q2hhbmdlZCBfc2NhbkRpcmVjdG9yeSB0byBhbiBBUEkgZnVuY3Rpb24gU2NhbkRpcmVjdG9yeSBhbmQgdGhlbiBhZGRlZCBTbWFydFNjYW5EaXJlY3RvcnkgdG8gc2NhbiB0aGUgZGlyZWN0b3J5IGJlZm9yZSBkaXNwbGF5aW5nIHRoZSBzdW1tYXJ5IG9yIGRldGFpbCBsaXN0aW5nIHRvIGhhbmRsZSB0aGUNCmNhc2Ugd2hlcmUgc29tZWJvZHkgdXBsb2FkZWQgZmlsZXMgdmlhIEZUUCBvciBzb21ldGhpbmcgYW5kIGRpZCBub3QgZ28gaW50byB0aGUgYWRtaW4gc2VjdGlvbiB0byB1cGRhdGUgdGhlIGNhdGVnb3JpZXMuPC9wPg0KPHA+Q29ycmVjdGlvbiB0byBhbGwgZGIgYWNjZXNzIHN0dWZmLiBIb3BlZnVsbHkgcHJvdmlkZXMgYSBwZXJmb3JtYW5jZSBpbmNyZWFzZS48L3A+DQo8cD5GaXhlcyB0byB0aGUgYWJvdXQgc3R1ZmYsIG5vdyB1c2UgQ3JlYXRlUGFyYW1ldGVyPC9wPg0KPHA+QWRkZWQgdGhlIHVwbG9hZF90ZW1wbGF0ZSwgc3VtbWFyeV90ZW1wbGF0ZSwgYW5kIGRldGFpbF90ZW1wbGF0ZSAob3B0aW9uYWwpIHBhcmFtZXRlcjwvcD4NCjwvbGk+DQo8L3VsPic7CiRsYW5nWydkYXRlJ10gPSAnRGF0dW0nOwokbGFuZ1snZGF0ZXVwbG9hZGVkJ10gPSAnSG9jaGdlbGFkZW4gYW0nOwokbGFuZ1snZGVmYXVsdCddID0gJ1ZvcmVpbnN0ZWxsdW5nZW4nOwokbGFuZ1snZGVsZXRlJ10gPSAnTCZvdW1sO3NjaGVuJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnQmVzY2hyZWlidW5nJzsKJGxhbmdbJ2Rlc3RuYW1lJ10gPSAnSG9jaGxhZGVuIGFscyc7CiRsYW5nWydkZXRhaWxfdGVtcGxhdGUnXSA9ICdEZXRhaWwtVGVtcGxhdGUnOwokbGFuZ1snZG93bmxvYWRlZCddID0gJ0RpZSBEYXRlaSAlcyB3dXJkZSBoZXJ1bnRlcmdlbGFkZW4uJzsKJGxhbmdbJ2Rvd25sb2FkcyddID0gJ0hlcnVudGVyZ2VsYWRlbmUgRGF0ZWllbic7CiRsYW5nWydlZGl0J10gPSAnQmVhcmJlaXRlbic7CiRsYW5nWydlZGl0Y2F0ZWdvcnknXSA9ICdLYXRlZ29yaWUgYmVhcmJlaXRlbic7CiRsYW5nWydlZGl0dXBsb2FkJ10gPSAnSG9jaGdlbGFkZW5lIERhdGVpIGJlYXJiZWl0ZW4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXIhJzsKJGxhbmdbJ2Vycm9yX3BhdGhpbnVzZSddID0gJ0VzIGV4aXN0aWVydCBiZXJlaXRzIGVpbmUgS2F0ZWdvcmllIG1pdCBkaWVzZW0gUGZhZC4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdGZWhsZXI6IERpZSBLYXRlZ29yaWUgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5bm90ZW1wdHknXSA9ICdGZWhsZXI6IERpZSBLYXRlZ29yaWUga2FubiBuaWNodCBnZWwmb3VtbDtzY2h0IHdlcmRlbiwgZGEgc2llIG5pY2h0IGxlZXIgaXN0ISc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeW5vdGZvdW5kJ10gPSAnRmVobGVyOiBLYXRlZ29yaWUgd3VyZGUgbmljaHQgZ2VmdW5kZW4hJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdGZWhsZXI6IERhdGVuYmFua2ZlaGxlciEnOwokbGFuZ1snZXJyb3JfZW1wdHljYXRlZ29yeSddID0gJ0ZlaGxlcjogTGVlcmUgS2F0ZWdvcmllISc7CiRsYW5nWydlcnJvcl9lbXB0eXBhdGgnXSA9ICdGZWhsZXI6IExlZXJlciBQZmFkISc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRmVobGVyOiBEaWUgRGF0ZWkgJXMgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKJGxhbmdbJ2Vycm9yX2ZpbGVub3Rmb3VuZCddID0gJ0ZlaGxlcjogRGllIERhdGVpICVzIGtvbm50ZSBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4hJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ0ZlaGxlcjogRGFzIE1vZHVsIHd1cmRlIG1pdCBuaWNodCBhdXNyZWljaGVuZGVuIFBhcmFtZXRlcm4gYXVmZ2VydWZlbiEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGF1dGhvciddID0gJ0ZlaGxlcjogQXV0b3IgdW5nJnV1bWw7bHRpZyAob2RlciBsZWVyKSEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGNhdGVnb3J5J10gPSAnRmVobGVyOiBLYXRlZ29yaWUgdW5nJnV1bWw7bHRpZyAob2RlciBsZWVyKSEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGRlc2NyaXB0aW9uJ10gPSAnRmVobGVyOiBCZXNjaHJlaWJ1bmcgdW5nJnV1bWw7bHRpZyAob2RlciBsZWVyKSEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGUnXSA9ICdGZWhsZXI6IERhdGVpbmFtZSB1bmcmdXVtbDtsdGlnIChvZGVyIGxlZXIpISc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXBsb2FkZmlsZW5hbWUnXSA9ICdGZWhsZXI6IERhdGVpZW4gbWl0IGRpZXNlciBOYW1lbnNlcndlaXRlcnVuZyBzaW5kIG5pY2h0IGVybGF1YnQhJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1cGxvYWRpZCddID0gJ0ZlaGxlcjogSUQgdW5nJnV1bWw7bHRpZyEnOwokbGFuZ1snZXJyb3Jfbm9maWxlcyddID0gJ0ZlaGxlcjogS2VpbmUgRGF0ZWllbiBnZWZ1bmRlbiEnOwokbGFuZ1snZmlsZXMnXSA9ICdEYXRlaWVuJzsKJGxhbmdbJ2ZpeG1lJ10gPSAnTGVlcnplaWNoZW4gZW50ZmVybmVuJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1VwbG9hZC1Nb2R1bCc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4NCjxwPkRhcyBNb2R1bCBlcmxhdWJ0IGRlbiBCZXN1Y2hlcm4gSWhyZXIgSG9tZXBhZ2UsIGF1ZiBJaHJlciBTZWl0ZSBEYXRlaWVuIGhvY2gtIHVuZCBydW50ZXJ6dWxhZGVuLiBEYWJlaSB3aXJkIHByb3Rva29sbGllcnQsIHdlciBlaW5lIERhdGVpIGhvY2hnZWxhZGVuIHVuZCB3ZXIgZWluZSBEYXRlaSBoZXJ1bnRlcmdlbGFkZW4gaGF0LiBEZXN3ZWl0ZXJlbiBrJm91bWw7bm5lbiBkaWUgRGF0ZWllbiBrYXRlZ29yaXNpZXJ0IHdlcmRlbi4gRGllIGhvY2hnZWxhZGVuZW4gRGF0ZWllbiBrJm91bWw7bm5lbiBzbyB2ZXJ3YWx0ZXQgd2VyZGVuLCB3aWUgZGllcyBlaW4gQWRtaW5pc3RyYXRvciBrJm91bWw7bm50ZS48L3A+IA0KPGgzPldpZSB3aXJkIGVzIGVpbmdlc2V0enQgPzwvaDM+DQo8cD5VbSBkZW4gVXNlcm4gaWhyZXIgU2VpdGUgZGFzIEhvY2hsYWRlbiB2b24gRGF0ZWllbiB6dSBlcmxhdWJlbiwgc29sbHRlbiBTaWUgZGFzIE1vZHVsIHp1biZhdW1sO2Noc3QgaW5zdGFsbGllcmVuIHVuZCBkYW5uIGVpbmUgb2RlciBtZWhyZXJlIEthdGVnb3JpZW4gKD1WZXJ6ZWljaG5pc3NlKSBmJnV1bWw7ciBkaWUgaG9jaHp1bGFkZW5kZW4gRGF0ZWllbiBlcnN0ZWxsZW4uIERhbm4gZiZ1dW1sO2dlbiBTaWUgZGVuIFRhZyB7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7VXBsb2FkcyZxdW90OyBjYXRlZ29yeT0mcXVvdDtzb21lY2F0ZWdvcnkmcXVvdDsgbW9kZT0mcXVvdDtzb21lbW9kZSZxdW90O30gaW4gZWluZSBTZWl0ZSBvZGVyIGVpbiBUZW1wbGF0ZSBlaW4uIERpZSB2ZXJmJnV1bWw7Z2JhcmVuIE1vZGkgc2luZCBuYWNoZm9sZ2VuZCBhdWZnZWxpc3RldC4gSmUgbmFjaCBkZW0gYXVzZ2V3JmF1bWw7aGx0ZW4gTW9kdXMgd2VyZGVuIHNpY2ggZGllIGF1c2dlZ2ViZW5lbiBEYXRlbiB2b25laW5hbmRlciB1bnRlcnNjaGVpZGVuLjwvcD4NCjxwPkRpZXNlcyBNb2R1bCBrYW5uIGRhcyBVc2VySUQtTW1vZHVsIHZlcndlbmRlbiAob3B0aW9uYWwpLCB1bSBJbmZvcm1hdGlvbmVuICZ1dW1sO2JlciBkaWUgYWt0dWVsbCBlaW5nZWxvZ2d0ZW4gVXNlciB6dSBlcmhhbHRlbi4gRGllc2UgSW5mb3JtYXRpb25lbiB3ZXJkZW4gZGFubiB0ZWlsd2Vpc2UgenVtIEF1c2YmdXVtbDtsbGVuIGRlcyBGb3JtdWxhcnMgYmVpbSBIb2NobGFkZW4gdm9uIERhdGVpZW4gdmVyd2VuZGV0LjwvcD4NCjxoMz5CZXJlY2h0aWd1bmdlbjwvaDM+DQo8dWw+DQo8bGk+PGVtPk1hbmFnZSBVcGxvYWRzPC9lbT4gZGllc2UgQmVyZWNodGlndW5nIHdpcmQgYmVuJm91bWw7dGlndCwgdW0gS2F0ZWdvcmllbiB1bmQgZGllIGRhcmluIGJlZmluZGxpY2hlbiBEYXRlaWVuIHp1IHZlcndhbHRlbi48L2xpPg0KPGxpPjxlbT5Nb2RpZnkgVGVtcGxhdGVzPC9lbT4gZGllc2UgQmVyZWNodGlndW5nIHdpcmQgYmVuJm91bWw7dGlndCwgdW0gVGVtcGxhdGVzIHp1IGJlYXJiZWl0ZW4uPC9saT4NCjxsaT48ZW0+TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXM8L2VtPiBkaWVzZSBCZXJlY2h0aWd1bmcgd2lyZCBiZW4mb3VtbDt0aWd0LCB1bSBkYXRlaWJlem9nZW5lIEVpbnN0ZWxsdW5nZW4genUgdmVyJmF1bWw7bmRlcm4uPC9saT4NCjwvdUw+DQo8aDM+RW1haWx2ZXJzYW5kPC9oMz4NCjxwPk1pdCBkaWVzZW0gTW9kdWwgaXN0IGVzIG0mb3VtbDtnbGljaCwgaW1tZXIgZGFubiBlaW5lIEVtYWlsIHp1IHZlcnNlbmRlbiwgd2VubiBlaW5lIERhdGVpIGhvY2hnZWxhZGVuIHd1cmRlLiBTY2hhdWVuIHNpZSBoaWVyenUgaW4gZGllIEVpbnN0ZWxsdW5nZW4uIERhZiZ1dW1sO3IgbXVzcyBkYXMgPGI+Q01TTWFpbGVyPC9iPi1Nb2R1bCBpbnN0YWxsaWVydCB1bmQga29uZmlndXJpZXJ0IHNlaW4uIERpZXNlIE0mb3VtbDtnbGljaGtlaXQgaXN0IG51ciA8ZW0+b3B0aW9uYWw8L2VtPi4gV2VubiBkYXMgQ01TTWFpbGVyLU1vZHVsIG5pY2h0IGluc3RhbGxpZXJ0IGlzdCwgd2lyZCBkZW0gVXNlciBuaWNodHMgYW5nZXplaWd0LiBOdXIgaW0gTG9nYnVjaCBkZXMgQWRtaW5pc3RyYXRvcnMgd2lyZCBlaW4gRWludHJhZyB2b3JnZW5vbW1lbi48L3A+DQo8aDM+U3lzdGVtZWluc3RlbGx1bmdlbjwvaDM+DQo8cD48Yj5IaW53ZWlzOjwvYj4gRGFzIE1vZHVsIHVtZ2VodCBuaWNodCBkaWUgQmVzY2hyJmF1bWw7bmt1bmdlbiBoaW5zaWNodGxpY2ggZGVyIERhdGVpZ3Imb3VtbDsmc3psaWc7ZSBpbiBQSFAuIEVzIGZ1bmt0aW9uaWVydCBudXIgaW4gVmVyYmluZHVuZyBtaXQgZGllc2VtLiBXZW5uIFNpZSBnciZvdW1sOyZzemxpZztlcmUgRGF0ZWllbiB6dW0gSG9jaGxhZGVuIHp1bGFzc2VuIG0mb3VtbDtjaHRlbiwgbSZ1dW1sO3NzZW4gU2llIElocmUgcGhwLmluaS1EYXRlaSB1bmQvb2RlciBodHRwZC5jb25mIERhdGVpKGVuKSBzb3dpZSBkaWUgVm9yZWluc3RlbGx1bmdlbiBkZXMgTW9kdWxzIGVudHNwcmVjaGVuZCBiZWFyYmVpdGVuLg0KPGg0PkhpbndlaXNlIGYmdXVtbDtyIEFwYWNoZTwvaDQ+DQo8cD5VbSBkYXMgSG9jaGxhZGVuIHZvbiBnciZvdW1sOyZzemxpZztlcmVuIERhdGVpZW4genUgZXJsYXViZW4sIG0mdXVtbDtzc2VuIHNpZSBkZW4gUGFyYW1ldGVyIHVwbG9hZF9tYXhfZmlsZXNpemUgaW4gaWhyZXJlIHBocC5pbmkgYmVhcmJlaXRlbi4gWnVzJmF1bWw7dHpsaWNoIG11c3MgZGVyIFBhcmFtZXRlciBMaW1pdFJlcXVlc3RCb2R5IGluIGlocmVyIEFwYWNoZS1Lb25maWd1cmF0aW9uIGFuIGRlbiBQYXJhbWV0ZXIgdXBsb2FkX21heF9maWxlc2l6ZSBhbmdlcGFzc3Qgd2VyZGVuLjwvcD4NCjxwPkhpbndlaXM6ICBkZXIgUGFyYW1ldGVyIHVwbG9hZF9tYXhfZmlsZXNpemUga2FubiBpbiBCeXRlcywgS2lsb2J5dGVzIG9kZXIgTWVnYWJ5dGVzIGFuZ2VnZWJlbiB3ZXJkZW4sIHcmYXVtbDtocmVuZGRlc3NlbiBkZXIgUGFyYW1ldGVyIExpbWl0UmVxdWVzdEJvZHkgbnVyIGluIEJ5dGVzIGZlc3RnZWxlZ3Qgd2VyZGVuIGthbm4uPC9wPic7CiRsYW5nWydpZCddID0gJ0lEJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsdmVyc2lvbiAlcyBpbnN0YWxsaWVydC4nOwokbGFuZ1snaXBfYWRkcmVzcyddID0gJ0lQLUFkcmVzc2UnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdFaW4gTW9kdWwsIHdlbGNoZXMgZGVuIFVzZXJuIGRhcyBIb2NobGFkZW4gdW5kIGRpZSBWZXJ3YWx0dW5nIHZvbiBEYXRlaWVuIGVybSZvdW1sO2dsaWNodC4nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1sncmVuYW1lbWVzc2FnZSddID0gJyZBdW1sO25kZXJuIFNpZSBkZW4gTmFtZW4gaGllciwgdW0gZWluZSBVbWJlbmVubnVuZyBkdXJjaHp1ZiZ1dW1sO2hyZW4uJzsKJGxhbmdbJ3BhdGgnXSA9ICdQZmFkJzsKJGxhbmdbJ3BhdGhtZXNzYWdlJ10gPSAnJkF1bWw7bmRlcm4gU2llIGRpZSBLYXRlZ29yaWUgaGllciwgdW0gZGllIERhdGVpIGluIGVpbiBhbmRlcmVzIFZlcnplaWNobmlzIHp1IHZlcnNjaGllYmVuLic7CiRsYW5nWydwYXRoaW51cGxvYWRzJ10gPSAnKHJlbGF0aXYgenVtIFVwbG9hZHMtVmVyemVpY2huaXMpJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnU3RlbGxlbiBTaWUgc2ljaGVyLCBkYXNzIFVzZXIsIHdlbGNoZSBkaWUgaG9jaGdlbGFkZW5lbiBEYXRlaWVuIHZlcndhbHRlbiBkJnV1bWw7cmZlbiwgZGllIEJlcmVjaHRpZ3VuZyAmcXVvdDtNYW5hZ2UgVXBsb2FkcyZxdW90OyBoYWJlbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJyZxdW90O1NvIGVpbiBNaXN0ISBXaWVkZXIgbmljaHRzISZxdW90Oyc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5ZGVzYyddID0gJ0Jlc2NocmVpYnVuZyc7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlsaXN0YWJsZSddID0gJ0RpZSBEYXRlaWVuIGluIGRpZXNlbSBWZXJ6ZWljaG5pcyBrJm91bWw7bm5lbiBhbmdlemVpZ3Qgd2VyZGVuLic7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnluYW1lJ10gPSAnTmFtZSBkZXIgS2F0ZWdvcmllJzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yeXBhdGgnXSA9ICdTZXJ2ZXJwZmFkJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVkaXJlY3RvcnknXSA9ICdLYXRlZ29yaWV2ZXJ6ZWljaG5pcyBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ3Byb21wdF9tYXhfdXBsb2Fkc2l6ZSddID0gJ01heGltYWwgZXJsYXVidGUgRGF0ZWlnciZvdW1sOyZzemxpZztlIChLYiknOwokbGFuZ1sncHJvbXB0X3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdHJnV1bWw7bHRpZ2UgRGF0ZWllcndlaXRlcnVuZ2VuJzsKJGxhbmdbJ3NjYW4nXSA9ICdTY2FubmVuJzsKJGxhbmdbJ3NlbGVjdGNhdGVnb3J5J10gPSAnS2F0ZWdvcmllIGF1c3cmYXVtbDtobGVuJzsKJGxhbmdbJ3NpemUnXSA9ICdHciZvdW1sOyZzemxpZztlJzsKJGxhbmdbJ3NpemVrYiddID0gJ0dyJm91bWw7JnN6bGlnO2UgKEtiKSc7CiRsYW5nWydzdWJtaXQnXSA9ICdBYnNjaGlja2VuJzsKJGxhbmdbJ3N1bW1hcnlfdGVtcGxhdGUnXSA9ICdadXNhbW1lbmZhc3N1bmdzLVRlbXBsYXRlJzsKJGxhbmdbJ3N1bW1hcnknXSA9ICdadXNhbW1lbmZhc3N1bmcnOwokbGFuZ1sndGl0bGVfYWRtaW5fcGFuZWwnXSA9ICdVcGxvYWRzLU1vZHVsJzsKJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ01vZHVsLUFkbWluaXN0cmF0aW9uJzsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsZWluc3RlbGx1bmdlbic7CiRsYW5nWyd0aXRsZV9zaW5nX2xvdWRseSddID0gJ0xhdXQgc2luZ2VuPyc7CiRsYW5nWyd0aXRsZV9zdWJuZXRfZXhjbHVzaW9ucyddID0gJ1N1Ym5ldHMgdm9uIGRlciBTdGF0aXN0aWsgYXVzc2NobGllJnN6bGlnO2VuJzsKJGxhbmdbJ3RpdGxlX3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdHJnV1bWw7bHRpZ2UgTmFtZW5zZXJ3ZWl0ZXJ1bmdlbic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWyd1cGxvYWQnXSA9ICdIb2NobGFkZW4nOwokbGFuZ1sndXBsb2FkZWQnXSA9ICdEaWUgRGF0ZWkgJXMgd3VyZGUgaG9jaGdlbGFkZW4uJzsKJGxhbmdbJ3JlcGxhY2VkJ10gPSAnRGllIERhdGVpICVzIHd1cmRlIGR1cmNoICVzIGVyc2V0enQuJzsKJGxhbmdbJ2RlbGV0ZWQnXSA9ICdEaWUgRGF0ZWkgJXMgd3VyZGUgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1sndXBsb2FkZm9ybV90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGhvY2hsYWRlbic7CiRsYW5nWyd1c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ3dhcm5pbmdfZGVsZXRlY2F0ZWdvcnknXSA9ICdXQVJOVU5HOiBTZWllbiBTaWUgdm9yc2ljaHRpZywgd2VubiBTaWUgS2F0ZWdvcmllbiBsJm91bWw7c2NoZW4uIERpZSBEYXRlaWVuIGsmb3VtbDtubmVuIGRhYmVpIHZlcmxvcmVuIGdlaGVuLic7CiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5XaWxsa29tbWVuIGluIGRlciBBbWluaXN0cmF0aW9uIGRlcyBVcGxvYWRzLU1vZHVscy4gV2VubiBkYXMgTW9kdWwgZ2VyYWRlIGluIEJlbnV0enVuZyB3JmF1bWw7cmUsIHcmdXVtbDtyZGUgaGllciB3YWhyc2NoZWlubGljaCBldHdhIGFuZGVyZXMgc3RlaGVuLjwvcD4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My43MTc0NjI3MzYuMTE0NzUxMTg1Ni4xMTQ3NTExODU2LjExNDc1MTE4NTYuMSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNDc1MTE4NTYuMS4xLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj13aWtpZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vZGU6aW5zdGFsbGF0aW9uOnVwZ3JhZGluZ3x1dG1jbWQ9cmVmZXJyYWwnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hlbHBfT25Eb3dubG9hZCddID0gJzxoMz5PbkRvd25sb2FkPC9oMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBmaW5pc2hlcyBkb3dubG9hZGluZyBhIGZpbGU8L3A+DQo8dWw+DQo8bGk+PGVtPmlkPC9lbT4gLSBVcGxvYWQgSUQ8L2xpPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBGaWxlIG5hbWU8L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIElQIEFkZHJlc3Mgb2YgdGhlIGRvd25sb2FkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uRGVsZXRlQ2F0ZWdvcnknXSA9ICc8aDM+T25EZWxldGVDYXRlZ29yeTwvaDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGNhdGVnb3J5IGlzIERlbGV0ZWQ8L3A+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIENhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPjxlbT5wYXRoPC9lbT4gLSBDYXRlZ29yeSBwYXRoPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PbkNyZWF0ZUNhdGVnb3J5J10gPSAnPGgzPk9uQ3JlYXRlQ2F0ZWdvcnk8L2gzPg0KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBjYXRlZ29yeSBpcyBDcmVhdGVkPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgY2F0ZWdvcnk8L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gVGhlIGNhdGVnb3J5IGRlc2NyaXB0aW9uPC9saT4NCjxsaT48ZW0+cGF0aDwvZW0+IC0gVGhlIGNhdGVnb3J5IHBhdGg8L2xpPg0KPGxpPjxlbT5wYXRoPC9lbT4gLSBBIGZsYWcgaW5kaWNhdGluZyBpZiB0aGUgY2F0ZWdvcnkgaXMgbGlzdGFibGU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uUmVtb3ZlJ10gPSAnPGgzPk9uUmVtb3ZlPC9oMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgZmlsZSBpcyByZW1vdmVkIHZpYSB0aGUgYWRtaW4gb3IgZnJvbnRlbmQgaW50ZXJmYWNlczwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIHJlbW92ZWQgZmlsZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIHJlbW92ZWQgZmlsZTwvbGk+DQo8bGk+PGVtPmNhdGVnb3J5X2lkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIGNhdGVnb3J5PC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PblVwbG9hZCddID0gJzxoMz5PblVwbG9hZDwvaDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyBmaWxlIGlzIHVwbG9hZGVkIHZpYSB0aGUgYWRtaW4gb3IgZnJvbnRlbmQgaW50ZXJmYWNlczwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+Y2F0ZWdvcnk8L2VtPiAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIHVwbG9hZGVkIGZpbGU8L2xpPg0KPGxpPjxlbT5zaXplPC9lbT4gLSBUaGUgc2l6ZSBvZiB0aGUgdXBsb2FkZWQgZmlsZTwvbGk+DQo8bGk+PGVtPnN1bW1hcnk8L2VtPiAtIFRoZSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhlIHVwbG9hZGVkIGZpbGUgKG1heSBiZSBlbXB0eSk8L2VtPjwvbGk+DQo8bGk+PGVtPmRlc2NyaXB0aW9uPC9lbT4gLSBUaGUgbG9uZyBkZXNjcmlwdGlvbiBmb3IgdGhlIHVwbG9hZGVkIGZpbGUgKG1heSBiZSBlbXB0eSk8L2VtPjwvbGk+DQo8bGk+PGVtPmF1dGhvcjwvZW0+IC0gVGhlIGF1dGhvciBvZiB0aGUgdXBsb2FkZWQgZmlsZSAoaWYgYXZhaWxhYmxlKTwvZW0+PC9saT4NCjxsaT48ZW0+aXBfYWRkcmVzczwvZW0+IC0gVGhlIGludGVybmV0IGFkZHJlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVwbG9hZGVkIHRoZSBmaWxlPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaW5mb19ldmVudF9vbmRlbGV0ZWNhdGVnb3J5J10gPSAnRXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBjYXRlZ29yeSBpcyBkZWxldGVkJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25jcmVhdGVjYXRlZ29yeSddID0gJ0V2ZW50IGdlbmVyYXRlZCB3aGVuIGEgY2F0ZWdvcnkgaXMgY3JlYXRlZCc7CiRsYW5nWydpbmZvX2V2ZW50X29uZG93bmxvYWQnXSA9ICdFdmVudCBnZW5lcmF0ZWQgd2hlbiBhIGZpbGUgaXMgZG93bmxvYWRlZCc7CiRsYW5nWydpbmZvX2V2ZW50X29udXBsb2FkJ10gPSAnRXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBuZXcgZmlsZSBpcyB1cGxvYWRlZCc7CiRsYW5nWydpbmZvX2V2ZW50X29ucmVtb3ZlJ10gPSAnRXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBmaWxlIGlzIHJlbW92ZWQnOwokbGFuZ1sndGl0bGVfdXNlcnRhZ19vbnVwbG9hZCddID0gJ1VzZXIgZGVmaW5lZCB0YWcgdG8gY2FsbCBhZnRlciB1cGxvYWQgaXMgY29tcGxldGUnOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwokbGFuZ1snbWF0Y2hlc2ZvdW5kJ10gPSAnT3N1bWFhIGwmb3VtbDt5ZGV0dHknOwokbGFuZ1snZmlsdGVyJ10gPSAnU3VvZGF0YSc7CiRsYW5nWyd0aXRsZV9yZWRpcmVjdG9udXBsb2FkJ10gPSAnT2hqYWEgc2l2dWxsZSAoaWQgLyBhbGlhcykgbGF0YXVrc2VuIGomYXVtbDtsa2Vlbic7CiRsYW5nWydkZXRhaWxzJ10gPSAnTGlzJmF1bWw7dGllZG90JzsKJGxhbmdbJ2NvbmZpcm1fcHJlZmVyZW5jZXMnXSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBtdXV0dGFhIGFzZXR1a3NpYSc7CiRsYW5nWydlcnJvcl9ub2ZpbGVzdXBsb2FkZWQnXSA9ICdUaWVkb3N0b2EgZWkgbGFkYXR0dSc7CiRsYW5nWydwcm9tcHRfcmVwbGFjZSddID0gJ1NhYWxpIHlsaWtpcmpvaXR1cyc7CiRsYW5nWydpbmZvX3JlcGxhY2UnXSA9ICdLb3J2YWEgdGllZG9zdG8gc2FtYW5uaW1pc2VsbGEgKGVpIHZhaWhkYSBJRDp0YSknOwokbGFuZ1snbm9faW5pdGlhbCddID0gJyZBdW1sO2wmYXVtbDsgbiZhdW1sO3l0JmF1bWw7IG9sZXR1a3NlbmEgbWl0JmF1bWw7JmF1bWw7biBqb3MgZmlsdHRlciZvdW1sO2ludGkgb24gcCZhdW1sOyZhdW1sO2xsJmF1bWw7JzsKJGxhbmdbJ3BhcmFtX2tleSddID0gJ1Byb3ZpZGUgYW4gYWRkaXRpb25hbCBrZXkgdG8gdGhlIG1vZHVsZSBmb3IgZnVydGhlciBvcmdhbml6aW5nIHVwbG9hZHMuICBUaGlzIGtleSBjb3VsZCBiZSBhbiBlbmNvZGVkIHN0cmluZyBsaWtlOiAmIzAzOTtmZXVzZXJzOnVpZCYjMDM5OywgZXRjLiAgVGhpcyBwYXJhbWV0ZXIgaXMgdXN1YWxseSBvbmx5IG5lZWRlZCB3aGVuIGVtYmVkZGluZyB0aGUgdXBsb2FkcyBtb2R1bGUgaW50byBhbm90aGVyIG1vZHVsZSc7CiRsYW5nWydwYXJhbV9ub2F1dGhvciddID0gJ0hpZGUgdGhlIGF1dGhvciBmaWVsZCBmcm9tIHRoZSB1cGxvYWQgZm9ybS4gIFRoaXMgcGFyYW1ldGVyIGlzIG9ubHkgdmFsaWQgd2hlbiBtb2RlPSYjMDM5O3VwbG9hZCYjMDM5Oy4gIElmIFRoZSBGcm9udGVuZFVzZXJzIG1vZHVsZSBpcyBwcmVzZW50LCBhbmQgYSB1c2VyIGlzIGN1cnJlbnRseSBsb2dnZWQgaW4sIGEgaGlkZGVuIGZpZWxkIHdpbGwgaG9sZCB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VybmFtZSc7CiRsYW5nWydwYXJhbV91cGxvYWRfaWQnXSA9ICd1cGxvYWRfaWQ9JnF1b3Q7aWQmcXVvdDsgLSBzcGVjaWZ5IGEgc2luZ2xlIGZpbGUgZm9yIHRoZSB1cmwvbGluayBvciBzaW5nbGUgbW9kZXMgKGFib3ZlKSc7CiRsYW5nWydwYXJhbV91c2Vfc3RyaWN0X3JlZ2V4cCddID0gJ1N1b2RhdHVzIGsmYXVtbDt5dHQmYXVtbDsmYXVtbDsgdGl1a2thYSBzJmF1bWw7JmF1bWw7bm4mb3VtbDtubXVrYWlzdGFsYXVzZXR0YSc7CiRsYW5nWydwYXJhbV9kZXRhaWxfZmlsZXRlbXBsYXRlJ10gPSAnVXNlIGEgLnRwbCBmaWxlIGZyb20gdGhlIFVwbG9hZHMvdGVtcGxhdGVzLyBmb2xkZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGF0YWJhc2UgdGVtcGxhdGUgd2hlbiBkaXNwbGF5aW5nIGEgZGV0YWlsIHJlcG9ydCc7CiRsYW5nWydwYXJhbV91cGxvYWRfZmlsZXRlbXBsYXRlJ10gPSAnVXNlIGEgLnRwbCBmaWxlIGZyb20gdGhlIFVwbG9hZHMvdGVtcGxhdGVzLyBmb2xkZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGF0YWJhc2UgdGVtcGxhdGUgd2hlbiBkaXNwbGF5aW5nIGFuIHVwbG9hZCBmb3JtJzsKJGxhbmdbJ3BhcmFtX3N1bW1hcnlfZmlsZXRlbXBsYXRlJ10gPSAnVXNlIGEgLnRwbCBmaWxlIGZyb20gdGhlIFVwbG9hZHMvdGVtcGxhdGVzLyBmb2xkZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGF0YWJhc2UgdGVtcGxhdGUgd2hlbiBkaXNwbGF5aW5nIGEgc3VtbWFyeSByZXBvcnQnOwokbGFuZ1sncGFyYW1fZmlsdGVyJ10gPSAnTiZhdW1sO3l0JmF1bWw7IHN1b2RhdHVzIGthYXZha2UnOwokbGFuZ1sncGFyYW1fbm9faW50aXRpYWwnXSA9ICdLJmF1bWw7eXQmYXVtbDtubiZvdW1sO2xsaW5lbiB2YWluIGpvcyBzdW9kYXR1cyBwYXJhbWV0cmkgb24gYW5uZXR0dSwgVmFpa3V0dGFhIHR1bG9rc2lpbiBpbG1hbiBzdW9kYXR1c3RhDQonOwokbGFuZ1sncGFyYW1fc29ydG9yZGVyJ10gPSAnICA8cD5Tb3J0IE9yZGVycw0KICA8dWw+DQogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRhdGU8L2xpPg0KICA8bGk+PGVtPmRhdGVfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGRhdGU8L2xpPg0KICA8bGk+PGVtPm5hbWVfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBuYW1lPC9saT4NCiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBuYW1lPC9saT4NCiAgPGxpPjxlbT5zaXplX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgc2l6ZTwvbGk+DQogIDxsaT48ZW0+c2l6ZV9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgc2l6ZTwvbGk+DQogIDxsaT48ZW0+ZGVzY19hc2M8L2VtPiAtIFNvcnQgYnkgYXNjZW5kaW5nIGRlc2NyaXB0aW9uPC9saT4NCiAgPGxpPjxlbT5kZXNjX2Rlc2M8L2VtPiAtIFNvcnQgYnkgZGVzY2VuZGluZyBkZXNjcmlwdGlvbjwvbGk+DQogIDxsaT48ZW0+YXV0aG9yX2FzYzwvZW0+IC0gU29ydCBieSBhc2NlbmRpbmcgYXV0aG9yPC9saT4NCiAgPGxpPjxlbT5hdXRob3JfZGVzYzwvZW0+IC0gU29ydCBieSBkZXNjZW5kaW5nIGF1dGhvcjwvbGk+DQogIDxsaT48ZW0+aXBfYXNjPC9lbT4gLSBTb3J0IGJ5IGFzY2VuZGluZyBpcCBhZGRyZXNzPC9saT4NCiAgPGxpPjxlbT5pcF9kZXNjPC9lbT4gLSBTb3J0IGJ5IGRlc2NlbmRpbmcgaXAgYWRkcmVzczwvbGk+DQogIDxsaT48ZW0+cmFuZG9tPC9lbT4gLSBSYW5kb20gc29ydCBvcmRlcjwvbGk+DQogIDwvdWw+DQogIDwvcD4nOwokbGFuZ1sncGFyYW1fZmlsZWV4dGVuc2lvbnMnXSA9ICcgDQpmaWxlX2V4dGVuc2lvbnM9JnF1b3Q7ZXh0MSxleHQyLGV4dDMmcXVvdDsNCjxwPk1pdCZhdW1sOyB0aWVkb3N0byBwJmF1bWw7JmF1bWw7dHRlaXQmYXVtbDsgdm9pZGFhbiBsYWRhdGEsIHZhYXRpaSBtb2RlPSZxdW90O3VwbG9hZCZxdW90OyBwYXJhbWV0cmluLiBZbGlraXJqb2l0dGFhIG1vZHVsaW4gcGVydXNhc2V0dWtzZXQ8L3A+JzsKJGxhbmdbJ3BhcmFtX2NvdW50J10gPSAnY291bnQ9JnF1b3Q7TiZxdW90Ow0KPHA+TiZhdW1sO3l0dCZhdW1sOyZhdW1sOyBOIGthcHBhbGV0dGEgdHVsb2tzaWE8L3A+JzsKJGxhbmdbJ3BhcmFtX2NhdGVnb3J5J10gPSAnY2F0ZWdvcnk9JnF1b3Q7bmFtZSZxdW90Ow0KPHA+PGI+SHVvbWFhOjwvYj4gVm9pIG9sbGEgbXkmb3VtbDtzICZxdW90O2FsbCZxdW90Oywgam9rYSBuJmF1bWw7eXR0JmF1bWw7JmF1bWw7IGthaWtraSA8ZW0+bGlzdGF0dGF2aXNzYSBvbGV2YXQ8L2VtPiBrYXRlZ29yaWF0PC9wPic7CiRsYW5nWydwYXJhbV9tb2RlJ10gPSAnICA8dWw+DQogIDxsaT48ZW0+ZGV0YWlsZWQ8L2VtPiAtIERpc3BsYXkgYSBkZXRhaWxlZCBsaXN0IG9mIGFsbCBmaWxlcyBpbiB0aGUgY2F0ZWdvcnk8L2xpPg0KICA8bGk+PGVtPnVwbG9hZDwvZW0+IC0gRGlzcGxheSBhIGZvcm0gdG8gYWxsb3cgYSBmcm9udGVuZCB1c2VyIHRvIHVwbG9hZCBhIGZpbGU8L2xpPg0KICA8bGk+PGVtPnVybCA8aT5vcjwvaT4gbGluazwvZW0+IC0gRGlzcGxheSBhIGxpbmsgdG8gYSBmaWxlPC9saT4NCiAgPGxpPjxlbT5zdW1tYXJ5PC9lbT4gLSBEaXNwbGF5IGEgc3VtbWFyaXplZCBsaXN0IG9mIGFsbCBmaWxlcyBpbiB0aGUgY2F0ZWdvcnk8L2xpPg0KICA8bGk+PGVtPnNpbmdsZTwvZW0+IC0gRGlzcGxheSBhIGRldGFpbGVkIHJlcG9ydCBhYm91dCBhIHNpbmdsZSB1cGxvYWQ8L2xpPg0KICA8bGk+PGVtPnNpbmdsZXN1bW1hcnk8L2VtPiAtIERpc3BsYXkgYSBzdW1tYXJpemVkIHJlcG9ydCBhYm91dCBhIHNpbmdsZSB1cGxvYWQvbGk+DQogIDwvdWw+JzsKJGxhbmdbJ3JldHVybnRvbW9kdWxlJ10gPSAnUGFsYWEgbW9kdXVsaWluJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcmllcyddID0gJ0VpIHlodCZhdW1sOyZhdW1sO24gbSZhdW1sOyZhdW1sO3JpdGVsdHkmYXVtbDsga2F0ZWdvcmlhYSc7CiRsYW5nWyd0aXRsZV9lbmZvcmNlZXh0ZW5zaW9ucyddID0gJ1ZhYWRpIHAmYXVtbDsmYXVtbDt0ZSBrYWlraWxsZSBsYWRhdHVpbGxlIHRpZWRvc3RvaWxsZSc7CiRsYW5nWydyZXN0b3JlZGVmYXVsdHNjb25maXJtJ10gPSAnT2xldGtvIHZhcm1hIGV0dCZhdW1sOyBoYWx1YXQgcGFsYXV0dGFhIGthaWtraSBwb2hqYXQgb2xldHVzIHBvaGppa3NpLiBLYWlra2kgbXV1dG9rc2V0IGpvaXRhIG9sZXQgdGVobnl0IGgmYXVtbDt2aSZhdW1sO3YmYXVtbDt0ISc7CiRsYW5nWydpbmZvX3RodW1ibmFpbCddID0gJ1ZhcGFhZWh0b2luZW4gcGV1a2Fsb2t1dmEgdGllZG9zdG8nOwokbGFuZ1sndGh1bWJuYWlsJ10gPSAnUGV1a2Fsb2t1dmEnOwokbGFuZ1snaW5mb19zdW1tYXJ5J10gPSAnQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZSAoaWYgZW1wdHksIHRoZSBmaWxlIG5hbWUgaXMgdXNlZCB3aXRob3V0IHRoZSBleHRlbnNpb24pJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnluYW1lJ10gPSAnQSBicmllZiBuYW1lIGZvciB5b3VyIGNhdGVnb3J5IChodW1hbiByZWFkYWJsZSknOwokbGFuZ1snaW5mb19jYXRlZ29yeWRlc2MnXSA9ICdBIGRlc2NyaXB0aW9uIGZvciB5b3VyIGNhdGVnb3J5JzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlwYXRoJ10gPSAnVGhlIGRpcmVjdG9yeSBuYW1lIGluc2lkZSB0aGUgdXBsb2FkcyBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgZmlsZXMgaW4gdGhpcyBjYXRlZ29yeS4gIElmIHRoZSBkaXJlY3Rvcnkgb2YgdGhpcyBuYW1lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QsIGl0IG1heSBiZSBjcmVhdGVkJzsKJGxhbmdbJ2luZm9fZGVzdG5hbWUnXSA9ICdVc2UgdGhlICYjMDM5O1VwbG9hZCBBcyYjMDM5OyBmaWVsZCB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGZpbGUgb24gdXBsb2FkLiAgTGVhdmUgYmxhbmsgdG8gcHJlc2VydmUgdGhlIGZpbGVuYW1lIGFzLWlzLic7CiRsYW5nWydlcnJvcl9jYW50Y3JlYXRlZGlyZWN0b3J5J10gPSAnRWkgdm9pZGEgbHVvZGEgaGFrZW1pc3RvYSc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0NNU01haWxlciBtb2R1bGlhIGVpIHZvaXR1IGFsdXN0YWEnOwokbGFuZ1sndXBsb2FkX25vdGlmaWNhdGlvbiddID0gJ0EgbmV3IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQnOwokbGFuZ1sndGl0bGVfZW1haWxfb25fdXBsb2FkJ10gPSAnU2VuZCB1cGxvYWQgbm90aWZpY2F0aW9uIHRvOic7CiRsYW5nWydlbWFpbF90ZW1wbGF0ZSddID0gJ0VtYWlsIFRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX2R1bW15X2luZGV4X2h0bWwnXSA9ICdDcmVhdGUgZHVtbXkgaW5kZXguaHRtbCBmaWxlcyBpbiBlYWNoIGRpcmVjdG9yeT88YnIvPjxlbT5BbnkgZXhpc3RpbmcgaW5kZXguaHRtbCBmaWxlcyB3aWxsIHJlbWFpbjwvZW0+JzsKJGxhbmdbJ2Fib3V0J10gPSAnQWJvdXQnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbmRlbmllZCddID0gJ1AmYXVtbDsmYXVtbDtzeSBldiZhdW1sO3R0eSwgdGFya2lzdGEgb2lrZXV0ZXNpLic7CiRsYW5nWydlcnJvcl9jb3VsZG5vdHdyaXRlJ10gPSAnRWkgdm9pdHUga2lyam9pdHRhYSc7CiRsYW5nWydhZGRjYXRlZ29yeSddID0gJ0xpcyZhdW1sOyZhdW1sOyBrYXRlZ29yaWEnOwokbGFuZ1snYWxsJ10gPSAnS2Fpa2tpJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdPbGV0a28gdmFybWE/JzsKJGxhbmdbJ2F1dGhvciddID0gJ1Rla2lqJmF1bWw7JzsKJGxhbmdbJ2NhbmNlbCddID0gJ1BlcnV1dGEnOwokbGFuZ1snY2Fubm90bW9kaWZ5cGF0aCddID0gJyhQb2xrdWEgZWkgdm9pZGEgbXV1dHRhYSknOwokbGFuZ1snY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpYXQnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdLYXRlZ29yaWEnOwokbGFuZ1snbWVzc2FnZV9jYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmlhIGxpcyZhdW1sO3R0eSc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMC4gLSBTZXB0ZW1iZXIgMjAwNS48L3A+DQo8cD4gSW5pdGlhbCBSZWxlYXNlLjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDEuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5NaW5vciBmaXhlcy48L3A+PC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wMi4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBzb3J0IG9yZGVyPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wMy4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkZpeCByZWdhcmRpbmcgY29uZmxpY3QgaW4gdGVtcGxhdGUgbmFtZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjA0LiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+QWRkZWQgYWJpbGl0eSB0byByZS1zY2FuIGEgZGlyZWN0b3J5LCBhbmQgdG8gdXBsb2FkIGZpbGVzIGZyb20gdGhlIGFkbWluIHBhZ2U8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjA1LiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+Rml4ZWQgc29tZSBQSFAgdmFyaWFibGUgaXNzdWVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNi4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkFkZGVkIGF1dGhvciBmaWVsZCB0byB0aGUgYWRtaW4gcGFuZWwgdXBsb2FkIGZvcm0sIGFkZGVkIGEgc3VtbWFyeSBmaWVsZCwgYW5kIG1hZGUgZGVzY3JpcHRpb24gYSB0ZXh0IGFyZWEsIGFuZCBhbGxvdyB0aGUgdXNlciB0byBzcGVjaWZ5IGEgZGVzdGluYXRpb24gZmlsZSBuYW1lPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNy4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHJlbmFtZSBmaWxlcyBhbmQgZml4ZWQgYSBzY2FuIGVycm9yPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wOC4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkJldHRlciBoYW5kbGluZyBvZiBuYW1lcyB3aXRoIHNwYWNlcywgYW5kIGEgZmV3IG1pbm9yIGVycm9ycyBmaXhlZC4gIEFkZGVkIHN3ZWRpc2ggdHJhbnNsYXRpb24gKHRoYW5rcyB3ZXN0aXMpPC9wPjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4wLiAtIE9jdG9iZXIgMjAwNTwvcD4NCiA8dWw+DQogICA8bGk+TW9kaWZpZWQgQXR0ZW1wdFVwbG9hZCBmdW5jdGlvbiBzbyBpdCBjb3VsZCBiZSBjYWxsZWQgZXh0ZXJuYWxseTwvbGk+DQogICA8bGk+QWRkZWQgR2V0VXBsb2FkRGV0YWlscyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYWxsIG9mIHRoZSBkZXRhaWxzIGFib3V0IGEgbW9kdWxlLCBpbmNsdWRpbmcgYSBsaW5rPC9saT4NCiAgIDxsaT5BZGRlZCBSZWRpcmVjdHMgc28gdGhhdCB3b3JraW5nIHdpdGggdGhlIG1vZHVsZSBpcyBhbG90IG5pY2VyLCBpdCByZXR1cm5zIHRvIHRoZSByaWdodCB0YWI8L2xpPg0KICAgPGxpPkNoYW5nZWQgdGhlIGZyb250IHRlbXBsYXRlIHRvIGxvb2sgYSBsaXR0bGUgYmV0dGVyIGFuZCBtYWtlIG1vcmUgc2Vuc2U8L2xpPg0KICAgPGxpPkZpeGVzIHRvIHRoZSB1cGxvYWRzIHN0dWZmIHNvIHRoYXQgdGhlIGRlc2NyaXB0aW9uIGlzIHNldCwgYW5kIG5hbWUgYW5kIHN1bW1hcnkgYXJlIHB1dCBpbiB0aGUgcmlnaHQgcGxhY2U8L2xpPg0KICAgPGxpPkZpeGVzIHRvIGV2ZW4gYmV0dGVyIGhhbmRsZSBzcGFjZXMgaW4gbmFtZXM8L2xpPg0KICAgPGxpPk9wdGlvbmFseSBwbGFjZSBkdW1teSBpbmRleC5odG1sIGZpbGVzIGluIGVhY2ggdXBsb2FkIGRpcmVjdG9yeTwvbGk+DQogICA8bGk+SWYgc3BlY2lmeWluZyBhIGRlc3RpbmF0aW9uIG5hbWUsIGFuZCBubyBleHRlbnNpb24gaXMgZ2l2ZW4sIHRoZSBleHRlbnNpb24gb2YgdGhlIG9yaWdpbmF0aW5nIGZpbGUgKGlmIGFueSBleGlzdHMgaXMgdXNlZDwvbGk+DQogPC91bD4NCiA8cD48ZW0+PGI+SW1wb3J0YW50ITwvYj48L2VtPjxici8+SXQgaXMgbm90IHBvc3NpYmxlIHRvIHVwZ3JhZGUgZnJvbSBhbnkgb3RoZXIgdmVyc2lvbiBvZiB0aGUgVXBsb2FkcyBtb2R1bGUgdG8gMS4xLjAuICBUaGlzIGlzIGR1ZSB0byBzb21lIGVycm9ycyB0aGF0IHdlcmUgbWFkZSBpbiB0aGUgZGF0YWJhc2Ugcm91dGluZXMsIGFuZCBldmVuIGluIHRoZSB1cGdyYWRlIHJvdXRpbmUgaW4gMS4wLjYuICBZb3UgbXVzdCBkZS1pbnN0YWxsIHRoZSBvbGQgdmVyc2lvbiwgYW5kIHRoZW4gcmUtaW5zdGFsbCB0aGUgbmV3IHZlcmVzaW9uLiBUaGlzIHdpbGwgY2F1c2Ugc2lnbmlmaWNhbnQgZGlmZmljdWx0eSBpZiB5b3UgaGF2ZSBkc2NyaXB0aW9ucywgZXRjLCBpbiB5b3VyIHRhYmxlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xLiAtIE9jdG9iZXIsIDIwMDU8L3A+DQo8cD5GaXhlZCBhIGNvdXBsZSBvZiBtaW5vciBidWdzIGluIHRoZSBHZXRVcGxvYWREZXRhaWxzIGFuZCBhZGRlZCBhbm90aGVyIGxpbmsgKG9yIGEgdXJsKSB0byB0aGUgdXBsb2FkZWQgZmlsZS48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMi4gLSBPY3RvYmVyLCAyMDA1PC9wPg0KPHA+Rml4ZWQgdGhlIFVSTCBmaWVsZCBpbiBHZXRVcGxvYWREZXRhaWxzIHRvIHJldHVybiBhIGRvd25sb2FkIGxpbmsgYW5kIGFkZGVkIGFuIGFic3VybCBmaWVsZCB3aGljaCByZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBmaWxlIG9uIHRoZSB3ZWJzZXJ2ZXIuICBDbGlja3Mgb24gdGhpcyBsaW5rIHdpbGwgbm90IGJlIGNvdW50ZWQ8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMy4gLSBPY3RvYmVyLCAyMDA1PC9wPg0KPHA+Rml4ZWQgdGhlIHVwZ3JhZGUgcHJvYmxlbSBmcm9tIHRoZSAxLjAueCBzZXJpZXMuICBVc2VycyBvZiB0aGUgMS4wLnggc2VyaWVzIHNob3VsZCBiZSBhYmxlIHRvIHVwZ3JhZGUgdG8gMS4xLjMgbm93IHdpdGggbm8gZGlmZmljdWx0eS4gPGI+VGhvc2UgYXJlIGZhbW91cyBsYXN0IHdvcmRzLCBwbGVhc2UgYmFja3VwIGZpcnN0PC9iPi4gRml4ZWQgdGhlIGNvbnRlbnQgcmVkaXJlY3QgdGhpbmdzIHRoYXQgd2VyZSBpcnJpdGF0aW5nIG1lLiAgQWxzbyBhZGRlZCBjYXRlZ29yeT1hbGwgdG8gbGlzdCBhbGwgb2YgdGhlIHVwbG9hZHMgaW4gYWxsIGxpc3RhYmxlIGNhdGVnb3JpZXMgPGVtPihsZXRzIGFsbCBob3BlIEkgZ290IHRoZSBzcWwgZmlndXJlZCBvdXQgcHJvcGVybHkpPC9lbT4uPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjQuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkFkZGVkIHRoZSBjb3VudCBwYXJhbWV0ZXIgdG8gbGlzdCBvbmx5IHRoZSBmaXJzdCBOIHJlY29yZHMsIGFuZCBhZGRlZCAmcXVvdDtzdW1tYXJ5bGluayZxdW90OywgYW5kICZxdW90O2NhdGVnb3J5JnF1b3Q7IHRvIHRoZSB0ZW1wbGF0ZXMgZm9yIHdlc3Rpcy4gIEZvciBleGFtcGxlcyBvbiBob3cgdG8gdXNlIHRoZW0gcmVzZXQgeW91ciB0ZW1wbGF0ZXMgYmFjayB0byBkZWZhdWx0LjwvcD48L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNS4gLSBOb3ZlbWJlciwgMjAwNTwvcD4NCjxwPkFkZGVkIGVtYWlsIG5vdGlmaWNhdGlvbiBhbmQgc29tZSBidWcgZml4ZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNi4gLSBOb3ZlbWJlciwgMjAwNTwvcD4NCjxwPkFkZGVkIGFuIGFwaSBmdW5jdGlvbiBhbmQgZml4ZWQgc29tZSByZWRpcmVjdGlvbiBzdHVmZjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS43LiAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KPHA+TW9yZSBBUEkgZnVuY3Rpb25zLCBhbmQgbm93IGlnbm9yZSBkb3QgZmlsZXMgd2hlbiBzY2FubmluZy4gIEVtYWlsIG5vdGlmaWNhdGlvbiBpcyBub3cgaW4uPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjguIC0gSmFudWFyeSwgMjAwNjwvcD4NCjxwPiogSW1wcm92ZWQgZG9jcyB3cnQgYXBhY2hlIGFuZCBwaHAgY29uZmlncy48L3A+DQo8cD4qIEZpeGVkIHByb2JsZW0gd2hlcmUgZmlsZXNpemUgd2FzIHNob3dpbmcgdXAgYXMgMC48L3A+DQo8cD4qIE1vZGlmaWVkIHBlcm1pc3Npb25zIHRvIGJlIG1vcmUgZ3JhbnVsYXI8L3A+DQo8cD4qIEFkZGVkIHNvbWUgY29tbWVudHMgYW5kIHZlcmJvc2l0eSB0byB0aGUgY2F0ZWdvcnkgYW5kIHVwbG9hZHMgZm9ybXMgaW4gdGhlIGFkbWluIHNlY3Rpb248L3A+DQo8cD4qIEFkZGVkICZxdW90O3JhbmRvbSZxdW90OyBzb3J0IG9yZGVyPC9wPg0KPHA+KiBTb21lIFBIUDUgZml4ZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuOS4gLSBKYW51YXJ5LCAyMDA2PC9wPg0KPHA+KiBBZGRlZCB0aGUgYWJpbGl0eSB0byB1cGxvYWQgYSB0aHVtYm5haWwgaW1hZ2U8L3A+DQo8cD4qIFNvbWUgaW1wcm92ZWQgYXVkaXRpbmc8L3A+DQo8cD4qIHhtbCBub3cgYWRkZWQgdG8gdGhlIGRlZmF1bHQgZmlsZSB0eXBlcyAobmV3IGluc3RhbGxzIG9ubHkpPC9wPg0KPHA+KiBBZGRlZCBhIGNvbmZpcm1hdGlvbiBtZXNzYWdlIHRvIHRoZSByZXNldCB0byBkZWZhdWx0cyBidXR0b25zIG9mIHRoZSB0ZW1wbGF0ZSBwYWdlcy48L3A+DQo8cD4qIEFkZGVkIHRoZSBmaWxlX2V4dGVuc2lvbnMgcGFyYW1ldGVyIGZvciB0aGUgdXBsb2FkIGZvcm08L3A+DQo8cD4qIFRoZSBjdXJyZW50IGNhdGVnb3J5IHNlbGVjdGVkIGluIHRoZSBmaWxlcyBmaWx0ZXIgaXMgc3RpY2t5Lg0KPHA+KiBBZGRlZCBhIHByZWZlcmVuY2UgdG8gZW5mb3JpY2UgZmlsZW5hbWUgZXh0ZW5zaW9ucyAoZGVmYXVsdHMgdG8gb24pPC9wPg0KPHA+KiBBZGRlZCBhIGxpbmsgdG8gdGhlIGVkaXQgcGFnZSwgaW4gdGhlIG5hbWUgY29sdW1uIG9mIHRoZSBmaWxlcyBsaXN0LjwvcD4NCjxwPiogTWlub3IgY2hhbmdlcyB0byB0aGUgbGF5b3V0IGFuZCB0ZXh0IHRvIGFkZCBjbGFyaXR5LjwvcD4NCjxwPiogQWRkZWQgZG93bmxvYWRfdXJsIGFzIGFuIGF2YWlsYWJsZSBzbWFydHkgdGFnIGluIHRoZSB0ZW1wbGF0ZXM8L3A+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMC4gLSBGZWJydWFyeSwgMjAwNjwvcD4NCjxwPiogU3VtbWFyeSBub3cgZGVmYXVsdHMgdG8gdGhlIGZpbGVuYW1lICh3aXRob3V0IHRoZSBleHRlbnNpb24pIGlmIG5vbmUgaXMgc3BlY2lmaWVkPC9wPg0KPHA+KiBOb3cgY29ycmVjdGx5IGhhbmRsZSBpZiB0aGUgdGh1bWJuYWlsIGV4dGVuc2lvbiBpcyBub3QgaW4gdGhlIGFjY2VwdGVkIGV4dGVuc2lvbiBsaXN0PC9wPg0KPHA+KiBObyBsb25nZXIgZGlzcGxheSBhbnkgY29udGVudCBpbiB0aGUgZmlsZXMgdGFiIGlmIHRoZXJlIGFyZSBubyBjYXRlZ29yaWVzIGRlZmluZWQ8L3A+DQo8cD4qIERpc3BsYXkgYSBsaW5rIGluIHRoZSBlcnJvciBwYWdlIHRoYXQgdGFrZXMgeW91IGJhY2sgdG8gdGhlIG1haW4gYWRtaW4gcGFuZWw8L3A+DQo8cD4qIEFsbG93IGZvciByZXBsYWNpbmcgb2YgdXBsb2FkZWQgZmlsZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTEuIC0gTWFyY2gsIDIwMDY8L3A+DQo8cD5BZGRlZCB0aGUgYWJpbGl0eSBmb3IgYSBsaW5rIHRvIGEgZGV0YWlsZWQgcGFnZSB3aGVuIGluIHN1bW1hcnkgbW9kZS48L3A+DQo8cD5TcGxpdCB0aGUgZGVmYXVsdCBhY3Rpb24gYW5kIGRlZmF1bHRhZG1pbiBhY3Rpb25zIGludG8gc2VwYXJhdGUgZmlsZXMsIGZvciBhIGJpdCBvZiBtZW1vcnkgaW1wcm92ZW1lbnQsIGhvcGVmdWxseTwvcD4NCjxwPkFkZCB0aGUgYWJpbGl0eSB0byByZWRpcmVjdCB0byBhbm90aGVyIHBhZ2UgYWZ0ZXIgYSBmcm9udGVuZCB1c2VyIHVwbG9hZGVkIGEgZmlsZTwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMi4gLSBNYXJjaCwgMjAwNjwvcD4NCjxwPkFkZGVkIHRoZSBzaW5nbGVzdW1tYXJ5IG1vZGUgdG8gZGlzcGxheSBhIHNpbmdsZSB1cGxvYWQgaW4gc3VtbWFyeSBtb2RlPC9QPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjEzLiAtIEFwcmlsLCAyMDA2PC9wPg0KPHA+QWRkZWQgb3B0aW9uYWwgZmlsdGVyaW5nIG9uIHRoZSBmcm9udGVuZCwgYW5kIGEgY291cGxlIG9mIGV4dHJhIHBhcmFtZXRlcnMgdG8gZ28gd2l0aCBpdDwvcD4NCjxwPkZpeGVkIGEgcHJvYmxlbSB3aGVyZSBpdCB3b3VsZCBhbGxvdyB5b3UgdG8gZW50ZXIgYSBibGFuayBwYXRoIHdoZW4gY3JlYXRpbmcgYSBjYXRlZ29yeTwvcD4NCjxwPlNwbGl0IHN0dWZmIGludG8gKHNvbWUpIHNlcGFyYXRlIGFjdGlvbiBmaWxlcyBmb3Igc29tZSBob3BlZnVsIHBlcmZvcm1hbmNlIGluY3JlYXNlczwvcD4NCjxwPkFkZGVkIGNvcHlyaWdodCBub3RpY2VzPC9wPg0KPHA+Q2hhbmdlZCAob3B0aW9uYWwpIGRlcGVuZGVuY3kgZnJvbSBVc2VySUQgdG8gRnJvbnRFbmRVc2VycyBNb2R1bGUuPC9wPg0KPHA+Q2hhbmdlZCBfc2NhbkRpcmVjdG9yeSB0byBhbiBBUEkgZnVuY3Rpb24gU2NhbkRpcmVjdG9yeSBhbmQgdGhlbiBhZGRlZCBTbWFydFNjYW5EaXJlY3RvcnkgdG8gc2NhbiB0aGUgZGlyZWN0b3J5IGJlZm9yZSBkaXNwbGF5aW5nIHRoZSBzdW1tYXJ5IG9yIGRldGFpbCBsaXN0aW5nIHRvIGhhbmRsZSB0aGUNCmNhc2Ugd2hlcmUgc29tZWJvZHkgdXBsb2FkZWQgZmlsZXMgdmlhIEZUUCBvciBzb21ldGhpbmcgYW5kIGRpZCBub3QgZ28gaW50byB0aGUgYWRtaW4gc2VjdGlvbiB0byB1cGRhdGUgdGhlIGNhdGVnb3JpZXMuPC9wPg0KPHA+Q29ycmVjdGlvbiB0byBhbGwgZGIgYWNjZXNzIHN0dWZmLiBIb3BlZnVsbHkgcHJvdmlkZXMgYSBwZXJmb3JtYW5jZSBpbmNyZWFzZS48L3A+DQo8cD5GaXhlcyB0byB0aGUgYWJvdXQgc3R1ZmYsIG5vdyB1c2UgQ3JlYXRlUGFyYW1ldGVyPC9wPg0KPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2RhdGUnXSA9ICdQJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sOyc7CiRsYW5nWydkYXRldXBsb2FkZWQnXSA9ICdEYXRlIFVwbG9hZGVkJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdPbGV0dWtzZXQnOwokbGFuZ1snZGVsZXRlJ10gPSAnUG9pc3RhJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnS3V2YXVzJzsKJGxhbmdbJ2Rlc3RuYW1lJ10gPSAnVXBsb2FkIEFzJzsKJGxhbmdbJ2RldGFpbF90ZW1wbGF0ZSddID0gJ0RldGFpbCBUZW1wbGF0ZSc7CiRsYW5nWydkb3dubG9hZGVkJ10gPSAnRmlsZSAlcyB3YXMgZG93bmxvYWRlZC4nOwokbGFuZ1snZG93bmxvYWRzJ10gPSAnRG93bmxvYWRzJzsKJGxhbmdbJ2VkaXQnXSA9ICdNdW9ra2FhJzsKJGxhbmdbJ2VkaXRjYXRlZ29yeSddID0gJ011a2thYSBrYXRlZ29yaWFhJzsKJGxhbmdbJ2VkaXR1cGxvYWQnXSA9ICdFZGl0IFVwbG9hZCc7CiRsYW5nWydlcnJvciddID0gJ1ZpcmhlISc7CiRsYW5nWydlcnJvcl9wYXRoaW51c2UnXSA9ICdLYXRlZ29yaWEgc2FtYWxsYSBwb2x1bGxhIG9uIGpvIG9sZW1hc3NhLic7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ1ZpcmhlOiBLYXRlZ29yaWEgb24gam8gb2xlbWFzc2EhJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5bm90ZW1wdHknXSA9ICdWaXJoZTogRWkgdm9pZGEgdHVob3RhIGthdGVnb3JpYWEgam9rYSBlaSBvbGUgdHloaiZhdW1sOyEnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlub3Rmb3VuZCddID0gJ1ZpcmhlOiBLYXRlZ29yaWFhIGVpIGwmb3VtbDt5ZHkhJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdWaXJoZTogVGlldG9rYW50YSB2aXJoZSEnOwokbGFuZ1snZXJyb3JfZW1wdHljYXRlZ29yeSddID0gJ1ZpcmhlOiBUeWhqJmF1bWw7IGthdGVnb3JpYSEnOwokbGFuZ1snZXJyb3JfZW1wdHlwYXRoJ10gPSAnVmlyaGU6IFR5aGomYXVtbDsgcG9sa3UhJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdWaXJoZTogVGllZG9zdG8gJXMgb24gam8gb2xlbWFzc2EhJzsKJGxhbmdbJ2Vycm9yX2ZpbGVub3Rmb3VuZCddID0gJ1ZpcmhlOiBUaWVkb3N0b2EgJXMgZWkgbCZvdW1sO3lkeSEnOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnVmlyaGU6IEthaWtraWEgcGFyYW1ldHJlamEgZWkgb2xlIG0mYXVtbDsmYXVtbDtyaXRlbHR5IG1vZHVsaSBrdXRzdXNzYSEnOwokbGFuZ1snZXJyb3JfaW52YWxpZGF1dGhvciddID0gJ1ZpcmhlOiB2aXJoZWVsbGluZW4gKHRhaSB0eWhqJmF1bWw7KSB0ZWtpaiZhdW1sOyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY2F0ZWdvcnknXSA9ICdWaXJoZTogdmlyaGVlbGxpbmVuICh0YWkgdHloaiZhdW1sOykga2F0ZWdvcmlhJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRkZXNjcmlwdGlvbiddID0gJ1ZpcmhlOiB2aXJoZWVsbGluZW4gKHRhaSB0eWhqJmF1bWw7KSBrdXZhdXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGUnXSA9ICdWaXJoZTogdmlyaGVlbGxpbmVuICh0YWkgdHloaiZhdW1sOykgdGllZG9zdG9uaW1pJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1cGxvYWRmaWxlbmFtZSddID0gJ1ZpcmhlOiB2aXJoZWVsbGluZW4gdGllZG9zdG9uaW1pICh0YWkgcCZhdW1sOyZhdW1sO3RlKSAoJXMpJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1cGxvYWRpZCddID0gJ1ZpcmhlOiB2aXJoZWVsbGluZW4gbGF0YXVzIGlkJzsKJGxhbmdbJ2Vycm9yX25vZmlsZXMnXSA9ICdFcnJvcjogTm8gTWF0Y2hpbmcgRmlsZXMhJzsKJGxhbmdbJ2ZpbGVzJ10gPSAnVGllZG9zdG90JzsKJGxhbmdbJ2ZpeG1lJ10gPSAnS29yamFhIHYmYXVtbDtsaWx5Jm91bWw7bm5pdCc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdGaWxlcyAoVXBsb2FkcyBNb2R1bGUpJzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPkl0IGlzIGEgbW9kdWxlIGZvciBhbGxvd2luZyBwZW9wbGUgdG8gdXBsb2FkIGFuZCBkb3dubG9hZCBmaWxlcyB0byBhbmQgZnJvbSB5b3VyIHNpdGUuICBJdCBrZWVwcyB0cmFjayBvZiB3aG8gdXBsb2FkZWQgYSBmaWxlLCBhbmQgd2hvIGhhcyBkb3dubG9hZGVkIGl0LiAgQXMgd2VsbCwgeW91IGNhbiBzb3J0IGZpbGVzIGludG8gY2F0ZWdvcmllcywgYW5kIG1hbmFnZSB0aGUgZmlsZXMgdGhhdCB3ZXJlIHVwbG9hZGVkIGxpa2UgZXZlcnkgYWRtaW5pc3RyYXRvciB3b3VsZCBkbzwvcD4gDQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPlRvIHVzZSB0aGlzIG1vZHVsZSwgdG8gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIGZpbGVzIHRvIHlvdXIgc2l0ZSwgeW91IHNob3VsZCBpbnN0YWxsIHRoZSBtb2R1bGUsIGFuZCB0aGVuIGNyZWF0ZSBvbmUgb3IgbW9yZSBjYXRlZ29yaWVzIChhLmsuYSkgZGlyZWN0b3JpZXMgZm9yIHRoZSB1cGxvYWRlZCBmaWxlcyB0byBnbyBpbnRvLiBUaGVuIGFkZCBhIHRhZyBpbnRvIGEgcGFnZSBvciB0ZW1wbGF0ZSBzb21ld2hlcmUgbGlrZSB7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7VXBsb2FkcyZxdW90OyBjYXRlZ29yeT0mcXVvdDtzb21lY2F0ZWdvcnkmcXVvdDsgbW9kZT0mcXVvdDtzb21lbW9kZSZxdW90O30uICBXaGVyZSBtb2RlIG1hdGNoZXMgb25lIG9mIHRoZSBtb2RlcyBsaXN0ZWQgYmVsb3cuICBUaGUgb3V0cHV0IHdpbGwgZGlmZmVyIGRlcGVuZGluZyB1cG9uIHdoaWNoIG1vZGUgeW91IHNlbGVjdC48L3A+DQo8cD5UaGlzIG1vZHVsZSBjYW4gdXNlIHRoZSBGcm9udGVuZFVzZXJzIG1vZHVsZSAob3B0aW9uYWwpIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBhbnkgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VycyB0byBwYXJ0bHkgZmlsbCBpbiB0aGUgZm9ybSB3aGVuIHVwbG9hZGluZyBmaWxlczs8L3A+DQo8aDM+UGVybWlzc2lvbnM8L2gzPg0KPHVsPg0KPGxpPjxlbT5NYW5hZ2UgVXBsb2FkczwvZW0+IHBlcm1pc3Npb24gaXMgbmVlZGVkIHRvIG1hbmFnZSBjYXRlZ29yaWVzLCBhbmQgdGhlIGZpbGVzIHdpdGhpbiB0aGVtLjwvbGk+DQo8bGk+PGVtPk1vZGlmeSBUZW1wbGF0ZXM8L2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCBlZGl0IGFueSBvZiB0aGUgdGVtcGxhdGVzLjwvbGk+DQo8bGk+PGVtPk1vZGlmeSBTaXRlIFByZWZlcmVuY2VzL2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCBhbnkgb2YgdGhlIGZpbGUgc2V0dGluZ3MuPC9saT4NCjwvdWw+DQo8aDM+RW1haWxpbmc8L2gzPg0KPHA+VGhpcyBtb2R1bGUgaXMgY2FwYWJsZSBvZiBzZW5kaW5nIGFuIGVtYWlsIHdoZW5ldmVyIGEgZmlsZSBpcyB1cGxvYWRlZCwgc2VlIHRoZSBwcmVmZXJlbmNlcyB0YWIuICBIb3dldmVyLCB0byBkbyB0aGlzIHRoZSA8Yj5DTVNNYWlsZXI8L2I+IHBhY2thZ2UgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuICBUaGlzIGlzIGFuIDxlbT5vcHRpb25hbDwvZW0+IHN0ZXAsIGFuZCBpZiB0aGUgQ01TTWFpbGVyIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkLCBub3RoaW5nIHdpbGwgYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLCBvbmx5IGEgbG9nIG1lc3NhZ2Ugd2lsbCBiZSBwbGFjZWQgaW50byB0aGUgYWRtaW4gbG9nPC9wPg0KPGgzPlN5c3RlbSBTZXR0aW5nczwvaDM+DQo8cD48Yj5Ob3RlOjwvYj4gVGhpcyBtb2R1bGUgZG9lcyBub3QgYnlwYXNzIG9yIGdldCBwYXN0IGFueSBmaWxlIHNpemUgbGltaXRhdGlvbnMgaW4gcGhwLiAgSXQgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVtLiAgVGhlcmVmb3JlIHlvdSBtYXkgbmVlZCB0byBtb2RpZnkgeW91ciBwaHAuaW5pIGZpbGUgYW5kL29yIHlvdXIgaHR0cGQuY29uZiBmaWxlKHMpIHRvIGFsbG93IHlvdSB0byB1cGxvYWQgZmlsZXMgYXMgbGFyZ2UgYXMgd2hhdCB5b3UgaGF2ZSBzZXQgaW4gdGhlIHVwbG9hZHMgbW9kdWxlIHByZWZlcmVuY2VzLjwvcD4NCjxoMz5BcGFjaGUgTm90ZXM8L2gzPg0KPHA+SW4gb3JkZXIgdG8gYWxsb3cgbGFyZ2UgZmlsZSB1cGxvYWRzLCB5b3UgbWF5IG5lZWQgdG8gbW9kaWZ5IHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlciBpbiB5b3VyIHBocC5pbmkgIEluIGFkZGl0aW9uLCB0aGUgTGltaXRSZXF1ZXN0Qm9keSBwYXJhbWV0ZXIgaW4geW91ciBhcGFjaGUgY29uZmlndXJhdGlvbiwgbWF5IG5lZWQgdG8gYmUgYWRqdXN0ZWQgdG8gbWF0Y2ggdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgcGFyYW1ldGVyPC9wPg0KPHA+Tm90ZTogIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlciBjYW4gYmUgc3BlY2lmaWVkIGluIGJ5dGVzLCBraWxvYnl0ZXMsIG9yIG1lZ2FieXRlcywgaG93ZXZlciB0aGUgTGltaXRSZXF1ZXRCb2R5IHBhcmFtZXRlciBpcyBvbmx5IHNwZWNpZmllZCBpbiBieXRlczwvcD4nOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGkgdmVyc2lvICVzIGFzZW5uZXR0dS4nOwokbGFuZ1snaXBfYWRkcmVzcyddID0gJ0lQIG9zb2l0ZSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01vZHVsaSBqb2thIHNhbGxpaSBrJmF1bWw7eXR0JmF1bWw7amllbiBsYWRhdGEgdGllZG9zdG9qYSBzaXZ1c3RvbGxlIGphIHlsbCZhdW1sO3BpdCZhdW1sO2omYXVtbDtuIGhhbGxpdGEgbiZhdW1sO2l0JmF1bWw7IHRpZWRvc3RvamEgJzsKJGxhbmdbJ25hbWUnXSA9ICdOaW1pJzsKJGxhbmdbJ3JlbmFtZW1lc3NhZ2UnXSA9ICdWYWloZGEgbmltaSB0YWkgdGVlIHV1ZGVsbGVlbm5pbWUmYXVtbDttaW5lbic7CiRsYW5nWydwYXRoJ10gPSAnUG9sa3UnOwokbGFuZ1sncGF0aG1lc3NhZ2UnXSA9ICdWYWloZGEga2F0ZWdvcmlhbiBuaW1pIHRhaSBzaWlyciZhdW1sOyB0aWVkb3N0byB0b2lzZWVuIGhha2VtaXN0b29uJzsKJGxhbmdbJ3BhdGhpbnVwbG9hZHMnXSA9ICcoUmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyZWN0b3J5KSc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAmcXVvdDtNYW5hZ2UgVXBsb2FkcyZxdW90OyBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdUaGUgVXBsb2FkcyBtb2R1bGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuICBObyBmaWxlcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHlvdXIgdXBsb2FkcyBkaXJlY3RvcnksIGFuZCBmaWxlIGludGVncml0eSBpcyBpbnRhY3QnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdBc2V0dWtzZXQnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxpbiBhc2V0dWtzZXQgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yeWRlc2MnXSA9ICdLdXZhdXMnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5bGlzdGFibGUnXSA9ICdUaWVkb3N0b2EgdCZhdW1sO3NzJmF1bWw7IGhha2VtaXN0b3NzYSB2b2lkYWFuIGxpc3RhdGEnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5bmFtZSddID0gJ0thdGVnb3JpYW4gbmltaSc7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlwYXRoJ10gPSAnUGFsdmVsaW1lbiBwb2xrdSc7CiRsYW5nWydwcm9tcHRfZGVsZXRlZGlyZWN0b3J5J10gPSAnVHVob2Ega2F0ZWdvcmlhbiBoYWtlbWlzdG8/JzsKJGxhbmdbJ3Byb21wdF9tYXhfdXBsb2Fkc2l6ZSddID0gJ01ha3NpbWkgdGllZG9zdG9rb2tvIChLYiknOwokbGFuZ1sncHJvbXB0X3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdIeXYmYXVtbDtrc3l0eXQgdGllZG9zdG9wJmF1bWw7JmF1bWw7dHRlZXQnOwokbGFuZ1snc2NhbiddID0gJ1NrYW5uYWEnOwokbGFuZ1snc2VsZWN0Y2F0ZWdvcnknXSA9ICdWYWxpdHNlIGthdGVnb3JpYSc7CiRsYW5nWydzaXplJ10gPSAnS29rbyc7CiRsYW5nWydzaXpla2InXSA9ICdLb2tvIChLYiknOwokbGFuZ1snc3VibWl0J10gPSAnTCZhdW1sO2hldCZhdW1sOyc7CiRsYW5nWydzdW1tYXJ5X3RlbXBsYXRlJ10gPSAnS29vc3RlIHBvaGphJzsKJGxhbmdbJ3N1bW1hcnknXSA9ICdLb29zdGUnOwokbGFuZ1sndGl0bGVfYWRtaW5fcGFuZWwnXSA9ICdVcGxvYWRzIE1vZHVsZSc7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdNb2R1bGluIGhhbGxpbnRhcGFuZWVsaSc7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdNb2R1bGluIGFzZXR1a3NldCc7CiRsYW5nWyd0aXRsZV9zaW5nX2xvdWRseSddID0gJ1NpbmcgTG91ZGx5Pyc7CiRsYW5nWyd0aXRsZV9zdWJuZXRfZXhjbHVzaW9ucyddID0gJyZBdW1sO2wmYXVtbDsga2VyJmF1bWw7JmF1bWw7IHN0YXRpc3RpaWtrYSBhbGl2ZXJrb2lzdGEnOwokbGFuZ1sndGl0bGVfdmFsaWRfdXBsb2FkZXh0ZW5zaW9ucyddID0gJ0h5diZhdW1sO2tzeXR5dCB0aWVkb3N0b3AmYXVtbDsmYXVtbDt0dGVldCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsaSBwb2lzdGV0dHUnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGkgcCZhdW1sO2l2aXRldHR5IHZlcnNpb29uICVzLic7CiRsYW5nWyd1cGxvYWQnXSA9ICdMYXRhYSc7CiRsYW5nWyd1cGxvYWRlZCddID0gJ0ZpbGUgJXMgd2FzIHVwbG9hZGVkIGJ5ICVzLic7CiRsYW5nWydyZXBsYWNlZCddID0gJ0ZpbGUgJXMgd2FzIHJlcGxhY2VkIGJ5ICVzLic7CiRsYW5nWydkZWxldGVkJ10gPSAnRmlsZSAlcyB3YXMgZGVsZXRlZC4nOwokbGFuZ1sndXBsb2FkZm9ybV90ZW1wbGF0ZSddID0gJ1VwbG9hZCBUZW1wbGF0ZSc7CiRsYW5nWyd1c2VybmFtZSddID0gJ0smYXVtbDt5dHQmYXVtbDtqJmF1bWw7bmltaSc7CiRsYW5nWyd3YXJuaW5nX2RlbGV0ZWNhdGVnb3J5J10gPSAnVkFST0lUVVM6IEthdGVnb3Jpb2lkZW4gdHVob2FtaW5lbiBzYWF0dGFhIGthZG90dGFhIHRpZWRvc3RvamEnOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+V2VsY29tZSB0byB0aGUgVXBsb2FkcyBNb2R1bGUgYWRtaW4gc2VjdGlvbi4gU29tZXRoaW5nIGVsc2Ugd291bGQgcHJvYmFibHkgZ28gaGVyZSBpZiB0aGUgbW9kdWxlIGFjdHVhbGx5IGRpZCBzb21ldGhpbmcuPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE3NzU1NjEwMDUuMTE0Nzc4MTI5Mi4xMTQ5NTk5MzkzLjExNDk2OTk0NzYuOSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNDg2NzUzMTguNS41LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC90b3BpYyw0ODI5LjAvdG9waWNzZWVuLmh0bWx8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hlbHBfT25Eb3dubG9hZCddID0gJzxoMz5WZWROZWRsYXN0aW5nPC9oMz4NCjx1bD4NCjxsaT48ZW0+aWQ8L2VtPiAtIExhc3Qtb3BwIElEPC9saT4NCjxsaT48ZW0+bmF2bjwvZW0+IC0gRmlsbmF2bjwvbGk+DQo8bGk+PGVtPmlwPC9lbT4gLSBJUCBBZHJlc3NlbiB0aWwgbmVkbGFzdGVyZW48L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uRGVsZXRlQ2F0ZWdvcnknXSA9ICc8aDM+VmVkU2xldHRLYXRlZ29yaTwvaDM+DQo8dWw+DQo8bGk+PGVtPm5hdm48L2VtPiAtIEthdGVnb3JpIG5hdm48L2xpPg0KPGxpPjxlbT5zdGk8L2VtPiAtIEthdGVnb3JpIHN0aTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfT25DcmVhdGVDYXRlZ29yeSddID0gJzxoMz5WZWRPcHByZXR0S2F0ZWdvcmk8L2gzPg0KPHA+RW4gaGVuZGVsc2UgZ2VuZXJlcnQgbiZhcmluZztyIGVuIGthdGVnb3JpIGVyIGZqZXJuZXQ8L3A+DQo8aDQ+UGFyYW1ldGVyZTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hdm48L2VtPiAtIE5hdm5ldCBwJmFyaW5nOyBrYXRlZ29yaWVuPC9saT4NCjxsaT48ZW0+YmVza3JpdmVsc2U8L2VtPiAtIEthdGVnb3JpIGJlc2tyaXZlbHNlbjwvbGk+DQo8bGk+PGVtPnN0aTwvZW0+IC0gS2F0ZWdvcmkgc3RpZW48L2xpPg0KPGxpPjxlbT5zdGk8L2VtPiAtIEV0IGZsYWdnIHNvbSBpbmRpa2VyZXIgb20ga2F0ZWdvcmllbiBlciB1dGxpc3RiYXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydoZWxwX09uUmVtb3ZlJ10gPSAnPGgzPlZlZEZqZXJuPC9oMz4NCjxwPkVuIGhlbmRlbHNlIGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBmaWwgZXIgZmplcm5ldCB2aWEgQWRtaW4gZWxsZXIgRnJvbnRlbmQgZ3JlbnNlc25pdHRlbmU8L3A+DQo8aDQ+UGFyYW1ldGVyZTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hdm48L2VtPiAtIE5Bdm5ldCBwJmFyaW5nOyBkZW4gZmplcm5lZGUgZmlsYTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBJRCYjMDM5O2VuIHAmYXJpbmc7IGRlbiBmamVybmVkZSBmaWxhPC9saT4NCjxsaT48ZW0+a2F0ZWdvcmlfaWQ8L2VtPiAtIElEJiMwMzk7ZW4gcCZhcmluZzsga2F0ZWdvcmllbjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2hlbHBfT25VcGxvYWQnXSA9ICc8aDM+T25VcGxvYWQ8L2gzPg0KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBuZXcgZmlsZSBpcyB1cGxvYWRlZCB2aWEgdGhlIGFkbWluIG9yIGZyb250ZW5kIGludGVyZmFjZXM8L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPmthdGVnb3JpPC9lbT4gLSBLYXRlZ29yaSBuYXZuZXQ8L2xpPg0KPGxpPjxlbT5uYXZuPC9lbT4gLSBOYXZuZXQgcCZhcmluZzsgZGVuIG9wcGxhc3RlZGUgZmlsYTwvbGk+DQo8bGk+PGVtPnN0Jm9zbGFzaDtycmVsc2U8L2VtPiAtIFN0Jm9zbGFzaDtycmVsc2VuIHAmYXJpbmc7IGRlbiBvcHBsYXN0ZWRlIGZpbGE8L2xpPg0KPGxpPjxlbT5zYW1tZW5kcmFnPC9lbT4gLSBEZW4ga29ydGUgYmVza3JpdmVsc2VuIGZvciBkZW4gb3BwbGFzdGVkZSBmaWxhIChrYW4gdiZhZWxpZztyZSBibGFuayk8L2VtPjwvbGk+DQo8bGk+PGVtPmJlc2tyaXZlbHNlPC9lbT4gLSBEZW4gZnVsbGUgYmVza3JpdmVsc2VuIGZvciBkZW4gb3BwbGFzdGVkZSBmaWxhIChrYW4gdiZhZWxpZztyZSBibGFuayk8L2VtPjwvbGk+DQo8bGk+PGVtPm9wcGhhdnNtYW5uPC9lbT4gLSBPcHBoYXZzbWFubmVuIGZvciBkZW4gb3BwbGFzdGVkZSBmaWxhIChpZiBhdmFpbGFibGUpPC9lbT48L2xpPg0KPGxpPjxlbT5pcF9hZHJlc3NlPC9lbT4gLSBJbnRlcm5ldHQgYWRyZXNzZW4gZm9yIGtsaWVudGVuIHNvbSBsYXN0ZXQgb3BwIGZpbGE8L2xpPg0KPC91bD4NCic7CiRsYW5nWydpbmZvX2V2ZW50X29uZGVsZXRlY2F0ZWdvcnknXSA9ICdIZW5kZWxzZSBnZW5lcmVydCBuJmFyaW5nO3IgZW4ga2F0ZWdvcmkgZXIgc2xldHRldCc7CiRsYW5nWydpbmZvX2V2ZW50X29uY3JlYXRlY2F0ZWdvcnknXSA9ICdIZW5kZWxzZSBnZW5lcmVydCBuJmFyaW5nO3IgZW4ga2F0ZWdvcmkgZXIgbGFnZXQnOwokbGFuZ1snaW5mb19ldmVudF9vbmRvd25sb2FkJ10gPSAnSGVuZGVsc2UgZ2VuZXJlcnQgbiZhcmluZztyIGVuIGZpbCBlciBsYXN0ZXQgbmVkJzsKJGxhbmdbJ2luZm9fZXZlbnRfb251cGxvYWQnXSA9ICdIZW5kZWxzZSBnZW5lcmVydCBuJmFyaW5nO3IgZW4gZmlsIGVyIGxhc3RldCBvcHAnOwokbGFuZ1snaW5mb19ldmVudF9vbnJlbW92ZSddID0gJ0hlbmRlbHNlIGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBmaWwgZXIgZmplcm5ldCc7CiRsYW5nWyd0aXRsZV91c2VydGFnX29udXBsb2FkJ10gPSAnQnJ1a2VyIGRlZmluZXJ0IHRhZ2cgJmFyaW5nOyBraiZvc2xhc2g7cmUgZXR0ZXIgb3BwbGFzdGluZyBlciBmZXJkaWcnOwokbGFuZ1snbm9uZSddID0gJ0luZ2VuJzsKJGxhbmdbJ21hdGNoZXNmb3VuZCddID0gJ1RyZWZmIGZ1bm5ldCc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXIgJzsKJGxhbmdbJ3RpdGxlX3JlZGlyZWN0b251cGxvYWQnXSA9ICdWaWRlcmVzZW5kIHRpbCBzaWRlIGlkL2FsaWFzIHZlZCBicnVrZXItb3BwbGFzdGluZyc7CiRsYW5nWydkZXRhaWxzJ10gPSAnRGV0YWxqZXInOwokbGFuZ1snY29uZmlybV9wcmVmZXJlbmNlcyddID0gJ0VyIGR1IHNpa2tlciBwJmFyaW5nOyBkdSB2aWwgZW5kcmUgaW5uc3RpbGxpbmdlbmUnOwokbGFuZ1snZXJyb3Jfbm9maWxlc3VwbG9hZGVkJ10gPSAnSW5nZW4gZmlsZXIgYmxlIGxhc3RldCBvcHAuJzsKJGxhbmdbJ3Byb21wdF9yZXBsYWNlJ10gPSAnVGlsbGF0IG92ZXJza3JpdmluZyc7CiRsYW5nWydpbmZvX3JlcGxhY2UnXSA9ICdFcnN0YXR0IGVuaHZlciBmaWwgbWVkIHNhbW1lIG5hdm4gKGVuZHJlciBpa2tlIGlkJiMwMzk7ZW4pJzsKJGxhbmdbJ25vX2luaXRpYWwnXSA9ICdJa2tlIHZpcyBub2VuIGlubmxlZGVuZGUgcmVzdWx0YXRlciBuJmFyaW5nO3IgZmlsdGVyZXQgZXIgcCZhcmluZzsnOwokbGFuZ1sncGFyYW1fa2V5J10gPSAnVGlsZiZvc2xhc2g7eSBlbiBla3N0cmEgbiZvc2xhc2g7a2tlbCB0aWwgbW9kdWxlbiBmb3IgZW5kYSBiZWRyZSBvcmdhbmlzZXJpbmcgYXYgdXBwbGFzdGluZ2VyLiAgRGVubmUgbiZvc2xhc2g7a2tlbCBrYW4gdiZhZWxpZztyZSBlbiBrb2RldCBzdHJlbmcgc29tOiAmIzAzOTtmZXVzZXJzOnVpZCYjMDM5Oywgb3N2LiAgRGVubmUgcGFyYW1ldGVyIGVyIHZhbmxpZ3ZpcyBrdW4gbiZvc2xhc2g7ZHZlbmRpZyBuJmFyaW5nO3IgZHUgaW5uZXNsdXR0ZXIgdXBsb2FkcyBtb2R1bGVuIGkgZW4gYW5uZW4gbW9kdWwnOwokbGFuZ1sncGFyYW1fbm9hdXRob3InXSA9ICdHamVtIG9wcGhhdnNtYW5uL2F1dGhvciBmZWx0ZXQgZnJhIG9wcGxhc3RpbmdzIHNramVtYWV0LiAgRGVubmUgcGFyYW1ldGVyIGVyIGt1biB2aXJrc29tIG4mYXJpbmc7ciBtb2RlPSYjMDM5O3VwbG9hZCYjMDM5Oy4gIE9tIEZyb250ZW5kVXNlcnMgbW9kdWxlbiBlciB0aWxzdGVkZSwgb2cgZW4gYnJ1a2VyIGVyIGlubmxvZ2dldCwgZXQgc2tqdWx0IGZlbHQgdmlsIGlubmVob2xkZSBkZW4gbiZhcmluZzt2JmFlbGlnO3JlbmRlIGlubmxvZ2dlZGVzIGJydWtlcm5hdm4nOwokbGFuZ1sncGFyYW1fdXBsb2FkX2lkJ10gPSAndXBsb2FkX2lkPSZxdW90O2lkJnF1b3Q7IC0gc3Blc2lmaXNlcmVyIGVuIGVua2VsdCBmaWwgZm9yIHVybCYjMDM5O2VuL2xpbmtlbiBlbGxlciBlbmtlbC1tb2RlIChvdmVyKSc7CiRsYW5nWydwYXJhbV91c2Vfc3RyaWN0X3JlZ2V4cCddID0gJ0ZpbHRlciBmZWx0ZXQgZXIgYnJ1a3Qgc29tIChzdHJpY3QgcmVnZXhwKSB1dGVuIGZvciBwcm9zc2Vzc2VyaW5nIGF2IG1lbGxvbXJvbSc7CiRsYW5nWydwYXJhbV9kZXRhaWxfZmlsZXRlbXBsYXRlJ10gPSAnQnJ1ayBlbiAudHBsIGZpbCBmcmEgVXBsb2Fkcy90ZW1wbGF0ZXMvIG1hcHBlbiBpIHN0ZWRldCAgZm9yICZhcmluZzsgYnJ1a2UgZGF0YWJhc2UgbWFsZW4gdmVkIHZpc25pbmcgYXYgZGV0YWxqIHJhcHBvcnQnOwokbGFuZ1sncGFyYW1fdXBsb2FkX2ZpbGV0ZW1wbGF0ZSddID0gJ0JydWsgZW4gLnRwbCBmaWwgZnJhIFVwbG9hZHMvdGVtcGxhdGVzLyBtYXBwZW4gaSBzdGVkZXQgIGZvciAmYXJpbmc7IGJydWtlIGRhdGFiYXNlIG1hbGVuIHZlZCB2aXNuaW5nIGF2IGV0IG9wcGxhc3RpbmdzIHNramVtYSc7CiRsYW5nWydwYXJhbV9zdW1tYXJ5X2ZpbGV0ZW1wbGF0ZSddID0gJ0JydWsgZW4gLnRwbCBmaWwgZnJhIFVwbG9hZHMvdGVtcGxhdGVzLyBtYXBwZW4gaSBzdGVkZXQgIGZvciAmYXJpbmc7IGJydWtlIGRhdGFiYXNlIG1hbGVuIHZlZCB2aXNuaW5nIGF2IGVuIHNhbW1lbmRyYWdzIHJhcHBvcnQnOwokbGFuZ1sncGFyYW1fZmlsdGVyJ10gPSAnVmlzIGZpbHRlciBza2plbWFldCc7CiRsYW5nWydwYXJhbV9ub19pbnRpdGlhbCddID0gJ0t1biBicnVrZWxpZyBuJmFyaW5nO3IgZmlsdGVyIHBhcmFtZXRlciBlciBnaXR0LCBlbGxlciBwJmFyaW5nOyBzb20gc3RhbmRhcmQsIGRlbm5lIHBhcmFtZXRlciBpbmRpa2VyZXIgb20gaW5ubGVkZW5kZSByZXNsdXRhdGVyIHNrYWwgdmlzZXMnOwokbGFuZ1sncGFyYW1fc29ydG9yZGVyJ10gPSAnICA8cD5Tb3J0IE9yZGVycw0KICA8dWw+DQogIDxsaT48ZW0+ZGF0ZV9hc2M8L2VtPiAtIFNvcnRlciBkYXRvIHN0aWdlbmRlPC9saT4NCiAgPGxpPjxlbT5kYXRlX2Rlc2M8L2VtPiAtIFNvcnRlciBkYXRvIHN5bmtlbmRlPC9saT4NCiAgPGxpPjxlbT5uYW1lX2FzYzwvZW0+IC0gU29ydGVyIG5hdm4gc3RpZ2VuZGU8L2xpPg0KICA8bGk+PGVtPm5hbWVfZGVzYzwvZW0+IC0gU29ydGVyIG5hdm4gc3lua2VuZGU8L2xpPg0KICA8bGk+PGVtPnNpemVfYXNjPC9lbT4gLSBTb3J0ZXIgc3Qmb3NsYXNoO3JyZWxzZSBzdGlnZW5kZTwvbGk+DQogIDxsaT48ZW0+c2l6ZV9kZXNjPC9lbT4gLSBTb3J0ZXIgc3Qmb3NsYXNoO3JyZWxzZSBzeW5rZW5kZTwvbGk+DQogIDxsaT48ZW0+ZGVzY19hc2M8L2VtPiAtIFNvcnRlciBiZXNrcml2ZWxzZSBzdGlnZW5kZTwvbGk+DQogIDxsaT48ZW0+ZGVzY19kZXNjPC9lbT4gLSBTb3J0ZXIgYmVza3JpdmVsc2Ugc3lua2VuZGU8L2xpPg0KICA8bGk+PGVtPmF1dGhvcl9hc2M8L2VtPiAtIFNvcnRlciBvcHBoYXZzbWFubi9hdXRob3Igc3RpZ2VuZGU8L2xpPg0KICA8bGk+PGVtPmF1dGhvcl9kZXNjPC9lbT4gLSBTb3J0ZXIgb3BwaGF2c21hbm4vYXV0aG9yIHN5bmtlbmRlPC9saT4NCiAgPGxpPjxlbT5pcF9hc2M8L2VtPiAtIFNvcnRlciBpcC1hZHJlc3NlIHN0aWdlbmRlPC9saT4NCiAgPGxpPjxlbT5pcF9kZXNjPC9lbT4gLSBTb3J0ZXIgaXAtYWRyZXNzZSBzeW5rZW5kZTwvbGk+DQogIDxsaT48ZW0+cmFuZG9tPC9lbT4gLSBUaWxmZWxkaWcgc29ydGVyaW5nPC9saT4NCiAgPC91bD4NCiAgPC9wPic7CiRsYW5nWydwYXJhbV9maWxlZXh0ZW5zaW9ucyddID0gJyANCmZpbGVfZXh0ZW5zaW9ucz0mcXVvdDtleHQxLGV4dDIsZXh0MyZxdW90Ow0KPHA+Z3lsZGlnIGt1biBvbSBtb2RlPXVwbG9hZCwgZGVubiBlcGFyYW1ldGVyZW4gYmVncmVuc2VyIGZpbHR5cGVuZSBzb20ga2FuIGxhc3RlcyBvcHAuICBPdmVyc3R5cmVyIGVuaHZlciB2ZXJkaSBpIG1vZHVsIGlubnN0aWxsaW5nZW5lLjwvcD4nOwokbGFuZ1sncGFyYW1fY291bnQnXSA9ICdjb3VudD0mcXVvdDtOJnF1b3Q7DQo8cD5FbiBwYXJhbWV0ZXIgZm9yICZhcmluZzsgdXRsaXN0ZSBrdW4gZGUgZiZvc2xhc2g7cnN0ZSBOIHN2YXIgZnJhIHNwJm9zbGFzaDtycmluZ2VuLiAgU2lkZWZvcm1hdGVyaW5nIHZpbGxlIHYmYWVsaWc7cmUgYmVkcmUsIG1lbiBkZXR0ZSBmb3IgaG9sZGUgbiZhcmluZzs8L3A+JzsKJGxhbmdbJ3BhcmFtX2NhdGVnb3J5J10gPSAnY2F0ZWdvcnk9JnF1b3Q7bmFtZSZxdW90Ow0KPHA+PGI+Tm90YXQ6PC9iPiBLYXRlZ29yaSBrYW4gdiZhZWxpZztyZSAmcXVvdDthbGwmcXVvdDssIHNvbSB2aWwgdXRsaXN0ZSBhbGxlIG9wcGxhc3RpbmdlciBmcmEgYWxsZSA8ZW0+dXRsaXN0YmFyZTwvZW0+IGthdGVnb3JpZXI8L3A+JzsKJGxhbmdbJ3BhcmFtX21vZGUnXSA9ICcgIDx1bD4NCiAgPGxpPjxlbT5kZXRhaWxlZDwvZW0+IC0gVmlzIGVuIGRldGFsamVydCBsaXN0ZSBvdmVyIGFsbGUgZmlsZXIgaSBrYXRlZ29yaWVuPC9saT4NCiAgPGxpPjxlbT51cGxvYWQ8L2VtPiAtIFZpc2VyIGV0IHNramVtYSBzb20gdGlsbGF0ZXIgZW4gZnJvbnRlbmQgYnJ1a2VyICZhcmluZzsgbGFzdGUgb3BwIGVuIGZpbDwvbGk+DQogIDxsaT48ZW0+dXJsIDxpPmVsbGVyPC9pPiBsaW5rPC9lbT4gLSBWaXNlciBlbiBsaW5rIHRpbCBlbiBmaWw8L2xpPg0KICA8bGk+PGVtPnN1bW1hcnk8L2VtPiAtIFZpc2VyIGVuIHN1bW1lcnQgbGlzdGUgb3ZlciBhbGxlIGZpbGVyIGkga2F0ZWdvcmllbjwvbGk+DQogIDxsaT48ZW0+c2luZ2xlPC9lbT4gLSBWaXNlciBlbiBkZXRhbGplcnQgcmFwcG9ydCBvbSBlbiBlbmtlbHQgb3BwbGFzdGluZzwvbGk+DQogIDxsaT48ZW0+c2luZ2xlc3VtbWFyeTwvZW0+IC0gVmlzZXIgZW4gc3VtbWVydCByYXBwb3J0IG9tIGVuIGVua2VsdCBvcHBsYXN0aW5nPC9saT4NCiAgPC91bD4nOwokbGFuZ1sncmV0dXJudG9tb2R1bGUnXSA9ICdUaWxiYWtlIHRpbCBNb2R1bCBwYW5lbGV0JzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcmllcyddID0gJ0RldCBlciBpbmdlbiBkZWZpbmVydGUga2F0ZWdvcmllcic7CiRsYW5nWyd0aXRsZV9lbmZvcmNlZXh0ZW5zaW9ucyddID0gJ0tyZXZlciBmaWwtZW5kZWxzZSBwJmFyaW5nOyBhbGxlIG9wcGxhc3RlZGUgZmlsZXInOwokbGFuZ1sncmVzdG9yZWRlZmF1bHRzY29uZmlybSddID0gJ0Rlbm5lIGhhbmRsaW5nIHZpbCByZXNldHRlIG1hbGVuIHRpbCBzeXN0ZW0gc3RhbmRhcmQuICBFbmh2ZXIgZW5kcmluZyBkdSBoYXIgZ2pvcnQgdmlsIGJsaSBib3J0ZS4gIEVyIGR1IHNpa2tlciBwJmFyaW5nOyBhdCBkdSB2aWwgZm9ydHNldHRlPyc7CiRsYW5nWydpbmZvX3RodW1ibmFpbCddID0gJ0VuIHZhbGdmcmkgdGh1bWJuYWlsIGZpbCc7CiRsYW5nWyd0aHVtYm5haWwnXSA9ICdUaHVtYm5haWwgJzsKJGxhbmdbJ2luZm9fc3VtbWFyeSddID0gJ0VuIGtvcnQgYmVza3JpdmVsc2UgKG9tIGJsYW5rLCBibGlyIGZpbG5hdm5ldCBicnVrdCB1dGVuIGZpbC1lbmRlbHNlKSc7CiRsYW5nWydpbmZvX2NhdGVnb3J5bmFtZSddID0gJ0V0IGtvcnQgbmF2biBwJmFyaW5nOyBkaW4ga2F0ZWdvcmkgKGZvcnN0JmFyaW5nO2VsaWcgZm9yIGh2ZXJtYW5zZW4pJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlkZXNjJ10gPSAnRW4gYmVza3JpdmVsc2UgYXYgZGluIGthdGVnb3JpJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlwYXRoJ10gPSAnS2F0YWxvZ25hdm5ldCBpbm5lIGkgb3BwbGFzdGluZ3Mga2F0YWxvZ2VuIHNvbSB2aWwgYmxpIGJydWt0IGZvciAmYXJpbmc7IGxhZ3JlIGZpbGVyIGkgZGVubmUga2F0ZWdvcmkuICBPbSBrYXRhbG9nZW4gbWVkIGRldHRlIG5hdm5ldCBpa2tlIGVrc2lzdGVyZXIsIHZpbCBkZW4gYmxpIG9wcHJldHRldCc7CiRsYW5nWydpbmZvX2Rlc3RuYW1lJ10gPSAnQnJ1ayAmIzAzOTtVcGxvYWQgQXMmIzAzOTsgZmVsdGV0IGZvciAmYXJpbmc7IGVuZHJlIG5hdm5ldCBwJmFyaW5nOyBmaWxhIHZlZCBvcHBsYXN0aW5nLiAgTGEgdiZhZWxpZztyZSBibGFua3QgZm9yICZhcmluZzsgYmVob2xkZSBuYXZuZXQgc29tIGRldCBlci4nOwokbGFuZ1snZXJyb3JfY2FudGNyZWF0ZWRpcmVjdG9yeSddID0gJ0t1bm5lIGlra2Ugb3BwcmV0dGUga2F0YWxvZyc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0NNU01haWxlciBtb2R1bGVuIGt1bm5lIGlra2Ugc3RhcnRlcyc7CiRsYW5nWyd1cGxvYWRfbm90aWZpY2F0aW9uJ10gPSAnRW4gbnkgZmlsIGhhciBibGl0dCBsYXN0ZXQgb3BwJzsKJGxhbmdbJ3RpdGxlX2VtYWlsX29uX3VwbG9hZCddID0gJ1NlbmQgb3BwbGFzdGluZ3MtbWVsZGluZyB0aWw6JzsKJGxhbmdbJ2VtYWlsX3RlbXBsYXRlJ10gPSAnRW1haWwgbWFsJzsKJGxhbmdbJ3RpdGxlX2R1bW15X2luZGV4X2h0bWwnXSA9ICdPcHByZXR0IGR1bW15IGluZGV4Lmh0bWwgZmlsZXIgaSBodmVyIGthdGFsb2c/PGJyLz48ZW0+SW5nZW4gZWtzaXN0ZXJlbmRlIGluZGV4Lmh0bWwgZmlsZXIgdmlsIGJsaSBpZ2plbjwvZW0+JzsKJGxhbmdbJ2Fib3V0J10gPSAnT20nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbmRlbmllZCddID0gJ0FkZ2FuZyBuZWt0ZXQuIFZlbm5saWdzdCBzamVrayBkaW5lIHJldHRpZ2hldGVyLic7CiRsYW5nWydlcnJvcl9jb3VsZG5vdHdyaXRlJ10gPSAnS2FuIGlra2Ugc2tyaXZlJzsKJGxhbmdbJ2FkZGNhdGVnb3J5J10gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwokbGFuZ1snYWxsJ10gPSAnQWx0JzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdFciBkdSBzaWtrZXI/JzsKJGxhbmdbJ2F1dGhvciddID0gJ09wcGhhdnNtYW5uJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydjYW5ub3Rtb2RpZnlwYXRoJ10gPSAnKFN0aWVuIGthbiBpa2tlIGVuZHJlcyknOwokbGFuZ1snY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZXInOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdLYXRlZ29yaSc7CiRsYW5nWydtZXNzYWdlX2NhdGVnb3J5YWRkZWQnXSA9ICdLYXRlZ29yaSBvcHByZXR0ZXQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAuIC0gU2VwdGVtYmVyIDIwMDUuPC9wPg0KPHA+IEluaXRpYWwgUmVsZWFzZS48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjAxLiAtIFNlcHRlbWJlciAyMDA1PC9wPg0KPHA+TWlub3IgZml4ZXMuPC9wPjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDIuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgc29ydCBvcmRlcjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDMuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5GaXggcmVnYXJkaW5nIGNvbmZsaWN0IGluIHRlbXBsYXRlIG5hbWVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNC4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkFkZGVkIGFiaWxpdHkgdG8gcmUtc2NhbiBhIGRpcmVjdG9yeSwgYW5kIHRvIHVwbG9hZCBmaWxlcyBmcm9tIHRoZSBhZG1pbiBwYWdlPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4wNS4gLSBTZXB0ZW1iZXIgMjAwNTwvcD4NCjxwPkZpeGVkIHNvbWUgUEhQIHZhcmlhYmxlIGlzc3VlczwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDYuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCBhdXRob3IgZmllbGQgdG8gdGhlIGFkbWluIHBhbmVsIHVwbG9hZCBmb3JtLCBhZGRlZCBhIHN1bW1hcnkgZmllbGQsIGFuZCBtYWRlIGRlc2NyaXB0aW9uIGEgdGV4dCBhcmVhLCBhbmQgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGZpbGUgbmFtZTwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDcuIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byByZW5hbWUgZmlsZXMgYW5kIGZpeGVkIGEgc2NhbiBlcnJvcjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMDguIC0gU2VwdGVtYmVyIDIwMDU8L3A+DQo8cD5CZXR0ZXIgaGFuZGxpbmcgb2YgbmFtZXMgd2l0aCBzcGFjZXMsIGFuZCBhIGZldyBtaW5vciBlcnJvcnMgZml4ZWQuICBBZGRlZCBzd2VkaXNoIHRyYW5zbGF0aW9uICh0aGFua3Mgd2VzdGlzKTwvcD48L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMC4gLSBPY3RvYmVyIDIwMDU8L3A+DQogPHVsPg0KICAgPGxpPk1vZGlmaWVkIEF0dGVtcHRVcGxvYWQgZnVuY3Rpb24gc28gaXQgY291bGQgYmUgY2FsbGVkIGV4dGVybmFsbHk8L2xpPg0KICAgPGxpPkFkZGVkIEdldFVwbG9hZERldGFpbHMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZGV0YWlscyBhYm91dCBhIG1vZHVsZSwgaW5jbHVkaW5nIGEgbGluazwvbGk+DQogICA8bGk+QWRkZWQgUmVkaXJlY3RzIHNvIHRoYXQgd29ya2luZyB3aXRoIHRoZSBtb2R1bGUgaXMgYWxvdCBuaWNlciwgaXQgcmV0dXJucyB0byB0aGUgcmlnaHQgdGFiPC9saT4NCiAgIDxsaT5DaGFuZ2VkIHRoZSBmcm9udCB0ZW1wbGF0ZSB0byBsb29rIGEgbGl0dGxlIGJldHRlciBhbmQgbWFrZSBtb3JlIHNlbnNlPC9saT4NCiAgIDxsaT5GaXhlcyB0byB0aGUgdXBsb2FkcyBzdHVmZiBzbyB0aGF0IHRoZSBkZXNjcmlwdGlvbiBpcyBzZXQsIGFuZCBuYW1lIGFuZCBzdW1tYXJ5IGFyZSBwdXQgaW4gdGhlIHJpZ2h0IHBsYWNlPC9saT4NCiAgIDxsaT5GaXhlcyB0byBldmVuIGJldHRlciBoYW5kbGUgc3BhY2VzIGluIG5hbWVzPC9saT4NCiAgIDxsaT5PcHRpb25hbHkgcGxhY2UgZHVtbXkgaW5kZXguaHRtbCBmaWxlcyBpbiBlYWNoIHVwbG9hZCBkaXJlY3Rvcnk8L2xpPg0KICAgPGxpPklmIHNwZWNpZnlpbmcgYSBkZXN0aW5hdGlvbiBuYW1lLCBhbmQgbm8gZXh0ZW5zaW9uIGlzIGdpdmVuLCB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBvcmlnaW5hdGluZyBmaWxlIChpZiBhbnkgZXhpc3RzIGlzIHVzZWQ8L2xpPg0KIDwvdWw+DQogPHA+PGVtPjxiPkltcG9ydGFudCE8L2I+PC9lbT48YnIvPkl0IGlzIG5vdCBwb3NzaWJsZSB0byB1cGdyYWRlIGZyb20gYW55IG90aGVyIHZlcnNpb24gb2YgdGhlIFVwbG9hZHMgbW9kdWxlIHRvIDEuMS4wLiAgVGhpcyBpcyBkdWUgdG8gc29tZSBlcnJvcnMgdGhhdCB3ZXJlIG1hZGUgaW4gdGhlIGRhdGFiYXNlIHJvdXRpbmVzLCBhbmQgZXZlbiBpbiB0aGUgdXBncmFkZSByb3V0aW5lIGluIDEuMC42LiAgWW91IG11c3QgZGUtaW5zdGFsbCB0aGUgb2xkIHZlcnNpb24sIGFuZCB0aGVuIHJlLWluc3RhbGwgdGhlIG5ldyB2ZXJlc2lvbi4gVGhpcyB3aWxsIGNhdXNlIHNpZ25pZmljYW50IGRpZmZpY3VsdHkgaWYgeW91IGhhdmUgZHNjcmlwdGlvbnMsIGV0YywgaW4geW91ciB0YWJsZXM8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMS4gLSBPY3RvYmVyLCAyMDA1PC9wPg0KPHA+Rml4ZWQgYSBjb3VwbGUgb2YgbWlub3IgYnVncyBpbiB0aGUgR2V0VXBsb2FkRGV0YWlscyBhbmQgYWRkZWQgYW5vdGhlciBsaW5rIChvciBhIHVybCkgdG8gdGhlIHVwbG9hZGVkIGZpbGUuPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjIuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkZpeGVkIHRoZSBVUkwgZmllbGQgaW4gR2V0VXBsb2FkRGV0YWlscyB0byByZXR1cm4gYSBkb3dubG9hZCBsaW5rIGFuZCBhZGRlZCBhbiBhYnN1cmwgZmllbGQgd2hpY2ggcmV0dXJucyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgZmlsZSBvbiB0aGUgd2Vic2VydmVyLiAgQ2xpY2tzIG9uIHRoaXMgbGluayB3aWxsIG5vdCBiZSBjb3VudGVkPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjMuIC0gT2N0b2JlciwgMjAwNTwvcD4NCjxwPkZpeGVkIHRoZSB1cGdyYWRlIHByb2JsZW0gZnJvbSB0aGUgMS4wLnggc2VyaWVzLiAgVXNlcnMgb2YgdGhlIDEuMC54IHNlcmllcyBzaG91bGQgYmUgYWJsZSB0byB1cGdyYWRlIHRvIDEuMS4zIG5vdyB3aXRoIG5vIGRpZmZpY3VsdHkuIDxiPlRob3NlIGFyZSBmYW1vdXMgbGFzdCB3b3JkcywgcGxlYXNlIGJhY2t1cCBmaXJzdDwvYj4uIEZpeGVkIHRoZSBjb250ZW50IHJlZGlyZWN0IHRoaW5ncyB0aGF0IHdlcmUgaXJyaXRhdGluZyBtZS4gIEFsc28gYWRkZWQgY2F0ZWdvcnk9YWxsIHRvIGxpc3QgYWxsIG9mIHRoZSB1cGxvYWRzIGluIGFsbCBsaXN0YWJsZSBjYXRlZ29yaWVzIDxlbT4obGV0cyBhbGwgaG9wZSBJIGdvdCB0aGUgc3FsIGZpZ3VyZWQgb3V0IHByb3Blcmx5KTwvZW0+LjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS40LiAtIE9jdG9iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCB0aGUgY291bnQgcGFyYW1ldGVyIHRvIGxpc3Qgb25seSB0aGUgZmlyc3QgTiByZWNvcmRzLCBhbmQgYWRkZWQgJnF1b3Q7c3VtbWFyeWxpbmsmcXVvdDssIGFuZCAmcXVvdDtjYXRlZ29yeSZxdW90OyB0byB0aGUgdGVtcGxhdGVzIGZvciB3ZXN0aXMuICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGVtIHJlc2V0IHlvdXIgdGVtcGxhdGVzIGJhY2sgdG8gZGVmYXVsdC48L3A+PC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjUuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCBlbWFpbCBub3RpZmljYXRpb24gYW5kIHNvbWUgYnVnIGZpeGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjYuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5BZGRlZCBhbiBhcGkgZnVuY3Rpb24gYW5kIGZpeGVkIHNvbWUgcmVkaXJlY3Rpb24gc3R1ZmY8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNy4gLSBOb3ZlbWJlciwgMjAwNTwvcD4NCjxwPk1vcmUgQVBJIGZ1bmN0aW9ucywgYW5kIG5vdyBpZ25vcmUgZG90IGZpbGVzIHdoZW4gc2Nhbm5pbmcuICBFbWFpbCBub3RpZmljYXRpb24gaXMgbm93IGluLjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS44LiAtIEphbnVhcnksIDIwMDY8L3A+DQo8cD4qIEltcHJvdmVkIGRvY3Mgd3J0IGFwYWNoZSBhbmQgcGhwIGNvbmZpZ3MuPC9wPg0KPHA+KiBGaXhlZCBwcm9ibGVtIHdoZXJlIGZpbGVzaXplIHdhcyBzaG93aW5nIHVwIGFzIDAuPC9wPg0KPHA+KiBNb2RpZmllZCBwZXJtaXNzaW9ucyB0byBiZSBtb3JlIGdyYW51bGFyPC9wPg0KPHA+KiBBZGRlZCBzb21lIGNvbW1lbnRzIGFuZCB2ZXJib3NpdHkgdG8gdGhlIGNhdGVnb3J5IGFuZCB1cGxvYWRzIGZvcm1zIGluIHRoZSBhZG1pbiBzZWN0aW9uPC9wPg0KPHA+KiBBZGRlZCAmcXVvdDtyYW5kb20mcXVvdDsgc29ydCBvcmRlcjwvcD4NCjxwPiogU29tZSBQSFA1IGZpeGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjkuIC0gSmFudWFyeSwgMjAwNjwvcD4NCjxwPiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXBsb2FkIGEgdGh1bWJuYWlsIGltYWdlPC9wPg0KPHA+KiBTb21lIGltcHJvdmVkIGF1ZGl0aW5nPC9wPg0KPHA+KiB4bWwgbm93IGFkZGVkIHRvIHRoZSBkZWZhdWx0IGZpbGUgdHlwZXMgKG5ldyBpbnN0YWxscyBvbmx5KTwvcD4NCjxwPiogQWRkZWQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcmVzZXQgdG8gZGVmYXVsdHMgYnV0dG9ucyBvZiB0aGUgdGVtcGxhdGUgcGFnZXMuPC9wPg0KPHA+KiBBZGRlZCB0aGUgZmlsZV9leHRlbnNpb25zIHBhcmFtZXRlciBmb3IgdGhlIHVwbG9hZCBmb3JtPC9wPg0KPHA+KiBUaGUgY3VycmVudCBjYXRlZ29yeSBzZWxlY3RlZCBpbiB0aGUgZmlsZXMgZmlsdGVyIGlzIHN0aWNreS4NCjxwPiogQWRkZWQgYSBwcmVmZXJlbmNlIHRvIGVuZm9yaWNlIGZpbGVuYW1lIGV4dGVuc2lvbnMgKGRlZmF1bHRzIHRvIG9uKTwvcD4NCjxwPiogQWRkZWQgYSBsaW5rIHRvIHRoZSBlZGl0IHBhZ2UsIGluIHRoZSBuYW1lIGNvbHVtbiBvZiB0aGUgZmlsZXMgbGlzdC48L3A+DQo8cD4qIE1pbm9yIGNoYW5nZXMgdG8gdGhlIGxheW91dCBhbmQgdGV4dCB0byBhZGQgY2xhcml0eS48L3A+DQo8cD4qIEFkZGVkIGRvd25sb2FkX3VybCBhcyBhbiBhdmFpbGFibGUgc21hcnR5IHRhZyBpbiB0aGUgdGVtcGxhdGVzPC9wPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTAuIC0gRmVicnVhcnksIDIwMDY8L3A+DQo8cD4qIFN1bW1hcnkgbm93IGRlZmF1bHRzIHRvIHRoZSBmaWxlbmFtZSAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSBpZiBub25lIGlzIHNwZWNpZmllZDwvcD4NCjxwPiogTm93IGNvcnJlY3RseSBoYW5kbGUgaWYgdGhlIHRodW1ibmFpbCBleHRlbnNpb24gaXMgbm90IGluIHRoZSBhY2NlcHRlZCBleHRlbnNpb24gbGlzdDwvcD4NCjxwPiogTm8gbG9uZ2VyIGRpc3BsYXkgYW55IGNvbnRlbnQgaW4gdGhlIGZpbGVzIHRhYiBpZiB0aGVyZSBhcmUgbm8gY2F0ZWdvcmllcyBkZWZpbmVkPC9wPg0KPHA+KiBEaXNwbGF5IGEgbGluayBpbiB0aGUgZXJyb3IgcGFnZSB0aGF0IHRha2VzIHlvdSBiYWNrIHRvIHRoZSBtYWluIGFkbWluIHBhbmVsPC9wPg0KPHA+KiBBbGxvdyBmb3IgcmVwbGFjaW5nIG9mIHVwbG9hZGVkIGZpbGVzPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjExLiAtIE1hcmNoLCAyMDA2PC9wPg0KPHA+QWRkZWQgdGhlIGFiaWxpdHkgZm9yIGEgbGluayB0byBhIGRldGFpbGVkIHBhZ2Ugd2hlbiBpbiBzdW1tYXJ5IG1vZGUuPC9wPg0KPHA+U3BsaXQgdGhlIGRlZmF1bHQgYWN0aW9uIGFuZCBkZWZhdWx0YWRtaW4gYWN0aW9ucyBpbnRvIHNlcGFyYXRlIGZpbGVzLCBmb3IgYSBiaXQgb2YgbWVtb3J5IGltcHJvdmVtZW50LCBob3BlZnVsbHk8L3A+DQo8cD5BZGQgdGhlIGFiaWxpdHkgdG8gcmVkaXJlY3QgdG8gYW5vdGhlciBwYWdlIGFmdGVyIGEgZnJvbnRlbmQgdXNlciB1cGxvYWRlZCBhIGZpbGU8L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMTIuIC0gTWFyY2gsIDIwMDY8L3A+DQo8cD5BZGRlZCB0aGUgc2luZ2xlc3VtbWFyeSBtb2RlIHRvIGRpc3BsYXkgYSBzaW5nbGUgdXBsb2FkIGluIHN1bW1hcnkgbW9kZTwvUD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS4xMy4gLSBBcHJpbCwgMjAwNjwvcD4NCjxwPkFkZGVkIG9wdGlvbmFsIGZpbHRlcmluZyBvbiB0aGUgZnJvbnRlbmQsIGFuZCBhIGNvdXBsZSBvZiBleHRyYSBwYXJhbWV0ZXJzIHRvIGdvIHdpdGggaXQ8L3A+DQo8cD5GaXhlZCBhIHByb2JsZW0gd2hlcmUgaXQgd291bGQgYWxsb3cgeW91IHRvIGVudGVyIGEgYmxhbmsgcGF0aCB3aGVuIGNyZWF0aW5nIGEgY2F0ZWdvcnk8L3A+DQo8cD5TcGxpdCBzdHVmZiBpbnRvIChzb21lKSBzZXBhcmF0ZSBhY3Rpb24gZmlsZXMgZm9yIHNvbWUgaG9wZWZ1bCBwZXJmb3JtYW5jZSBpbmNyZWFzZXM8L3A+DQo8cD5BZGRlZCBjb3B5cmlnaHQgbm90aWNlczwvcD4NCjxwPkNoYW5nZWQgKG9wdGlvbmFsKSBkZXBlbmRlbmN5IGZyb20gVXNlcklEIHRvIEZyb250RW5kVXNlcnMgTW9kdWxlLjwvcD4NCjxwPlZlcnNpb24gMS4yLjEuIC0gQXByaWwsIDIwMDY8L3A+DQo8cD5DaGFuZ2VkIF9zY2FuRGlyZWN0b3J5IHRvIGFuIEFQSSBmdW5jdGlvbiBTY2FuRGlyZWN0b3J5IGFuZCB0aGVuIGFkZGVkIFNtYXJ0U2NhbkRpcmVjdG9yeSB0byBzY2FuIHRoZSBkaXJlY3RvcnkgYmVmb3JlIGRpc3BsYXlpbmcgdGhlIHN1bW1hcnkgb3IgZGV0YWlsIGxpc3RpbmcgdG8gaGFuZGxlIHRoZQ0KY2FzZSB3aGVyZSBzb21lYm9keSB1cGxvYWRlZCBmaWxlcyB2aWEgRlRQIG9yIHNvbWV0aGluZyBhbmQgZGlkIG5vdCBnbyBpbnRvIHRoZSBhZG1pbiBzZWN0aW9uIHRvIHVwZGF0ZSB0aGUgY2F0ZWdvcmllcy48L3A+DQo8cD5Db3JyZWN0aW9uIHRvIGFsbCBkYiBhY2Nlc3Mgc3R1ZmYuIEhvcGVmdWxseSBwcm92aWRlcyBhIHBlcmZvcm1hbmNlIGluY3JlYXNlLjwvcD4NCjxwPkZpeGVzIHRvIHRoZSBhYm91dCBzdHVmZiwgbm93IHVzZSBDcmVhdGVQYXJhbWV0ZXI8L3A+DQo8cD5BZGRlZCB0aGUgdXBsb2FkX3RlbXBsYXRlLCBzdW1tYXJ5X3RlbXBsYXRlLCBhbmQgZGV0YWlsX3RlbXBsYXRlIChvcHRpb25hbCkgcGFyYW1ldGVyPC9wPg0KPHA+QWRkZWQgdGhlIG5vYXV0aG9yIHBhcmFtZXRlciwgYW5kIHRoZSBrZXkgcGFyYW1ldGVyLiAgVGhlIGtleSBwYXJhbWV0ZXIgYWxsb3dzIHRoZSB1cGxvYWRzIG1vZHVsZSB0byBiZSBlbWJlZGRlZCBpbnRvIG90aGVyIG1vZHVsZXM8L3A+DQo8cD5Nb3ZlZCB0byB1bmRlciB0aGUgY29udGVudCBtZW51LCBhbmQgZW50aXRsZWQgJiMwMzk7RmlsZXMgKFVwbG9hZCBNb2R1bGUpJiMwMzk7PC9wPjsNCjwvbGk+DQo8L3VsPic7CiRsYW5nWydkYXRlJ10gPSAnRGF0byc7CiRsYW5nWydkYXRldXBsb2FkZWQnXSA9ICdEYXRvIG9wcGxhc3RldCc7CiRsYW5nWydkZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1snZGVsZXRlJ10gPSAnU2xldHQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNrcml2ZWxzZSc7CiRsYW5nWydkZXN0bmFtZSddID0gJ0xhc3Qgb3BwIHNvbSc7CiRsYW5nWydkZXRhaWxfdGVtcGxhdGUnXSA9ICdEZXRhbGogbWFsJzsKJGxhbmdbJ2Rvd25sb2FkZWQnXSA9ICdGaWwgJXMgYmxlIGxhc3RldCBuZWQuJzsKJGxhbmdbJ2Rvd25sb2FkcyddID0gJ05lZGxhc3Rpbmdlcic7CiRsYW5nWydlZGl0J10gPSAnUmVkaWdlcic7CiRsYW5nWydlZGl0Y2F0ZWdvcnknXSA9ICdSRWRpZ2VyIGthdGVnb3JpJzsKJGxhbmdbJ2VkaXR1cGxvYWQnXSA9ICdSZWRpZ2VyIG9wcGxhc3RpbmcnOwokbGFuZ1snZXJyb3InXSA9ICdGZWlsISc7CiRsYW5nWydlcnJvcl9wYXRoaW51c2UnXSA9ICdFbiBrYXRlZ29yaSBzb20gYnJ1a2VyIGRlbiBzdGllbiBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRmVpbDogS2F0ZWdvcmkgZWtzaXN0ZXJlciBhbGxlcmVkZSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeW5vdGVtcHR5J10gPSAnRmVpbCEgS2FuIGlra2Ugc2xldHRlIGthdGVnb3JpIGRhIGRlbiBpa2tlIGVyIHRvbSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeW5vdGZvdW5kJ10gPSAnRmVpbDogS2F0ZWdvcmkgaWtrZSBmdW5uZXQhJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdGZWlsOiBEYXRhYmFzZSBmZWlsISc7CiRsYW5nWydlcnJvcl9lbXB0eWNhdGVnb3J5J10gPSAnRmVpbDogVG9tIGthdGVnb3JpISc7CiRsYW5nWydlcnJvcl9lbXB0eXBhdGgnXSA9ICdGZWlsOiBCbGFuayBzdGkhJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdGZWlsISBGaWwgJXMgZWtzaXN0ZXJlciBhbGxlcmVkZS4nOwokbGFuZ1snZXJyb3JfZmlsZW5vdGZvdW5kJ10gPSAnRmVpbCEgRmlsICVzIGJsZSBpa2tlIGZ1bm5ldC4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnRmVpbDogTWFuZ2VsZnVsbGUgcGFyYW1ldHJlIGdpdHQgdGlsIG1vZHVsZW4hJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRhdXRob3InXSA9ICdGZWlsOiBVZ3lsZGlnIChlbGxlciBibGFuaykgb3BwaGF2c21hbm4uJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRjYXRlZ29yeSddID0gJ0ZlaWw6IFVneWxkaWcgKGVsbGVyIGJsYW5rKSBrYXRlZ29yaS4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGRlc2NyaXB0aW9uJ10gPSAnRmVpbDogVWd5bGRpZyAoZWxsZXIgYmxhbmspIGJlc2tyaXZlbHNlLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZSddID0gJ0ZlaWw6IFVneWxkaWcgKGVsbGVyIGJsYW5rKSBmaWxuYXZuLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXBsb2FkZmlsZW5hbWUnXSA9ICdGZWlsOiBGaWxlciBtZWQgZGV0dGUgbmF2bmV0IChzYW5zeW5saWcgZmlsLWVuZGVsc2VuKSBlciBpa2tlIHRpbGxsYXR0ICglcykuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1cGxvYWRpZCddID0gJ0ZlaWw6IFVneWxkaWcgb3BwbGFzdGluZ3NJRCc7CiRsYW5nWydlcnJvcl9ub2ZpbGVzJ10gPSAnRmVpbDogSW5nZW4gcGFzc2VuZGUgZmlsZXIhJzsKJGxhbmdbJ2ZpbGVzJ10gPSAnRmlsZXInOwokbGFuZ1snZml4bWUnXSA9ICdGaWtzIG1lbGxvbXJvbSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdGaWxlciAoVXBsb2FkcyBNb2R1bGVuKSc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5JdCBpcyBhIG1vZHVsZSBmb3IgYWxsb3dpbmcgcGVvcGxlIHRvIHVwbG9hZCBhbmQgZG93bmxvYWQgZmlsZXMgdG8gYW5kIGZyb20geW91ciBzaXRlLiAgSXQga2VlcHMgdHJhY2sgb2Ygd2hvIHVwbG9hZGVkIGEgZmlsZSwgYW5kIHdobyBoYXMgZG93bmxvYWRlZCBpdC4gIEFzIHdlbGwsIHlvdSBjYW4gc29ydCBmaWxlcyBpbnRvIGNhdGVnb3JpZXMsIGFuZCBtYW5hZ2UgdGhlIGZpbGVzIHRoYXQgd2VyZSB1cGxvYWRlZCBsaWtlIGV2ZXJ5IGFkbWluaXN0cmF0b3Igd291bGQgZG88L3A+IA0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5UbyB1c2UgdGhpcyBtb2R1bGUsIHRvIGFsbG93IHVzZXJzIHRvIHVwbG9hZCBmaWxlcyB0byB5b3VyIHNpdGUsIHlvdSBzaG91bGQgaW5zdGFsbCB0aGUgbW9kdWxlLCBhbmQgdGhlbiBjcmVhdGUgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyAoYS5rLmEpIGRpcmVjdG9yaWVzIGZvciB0aGUgdXBsb2FkZWQgZmlsZXMgdG8gZ28gaW50by4gVGhlbiBhZGQgYSB0YWcgaW50byBhIHBhZ2Ugb3IgdGVtcGxhdGUgc29tZXdoZXJlIGxpa2Uge2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90O1VwbG9hZHMmcXVvdDsgY2F0ZWdvcnk9JnF1b3Q7c29tZWNhdGVnb3J5JnF1b3Q7IG1vZGU9JnF1b3Q7c29tZW1vZGUmcXVvdDt9LiAgV2hlcmUgbW9kZSBtYXRjaGVzIG9uZSBvZiB0aGUgbW9kZXMgbGlzdGVkIGJlbG93LiAgVGhlIG91dHB1dCB3aWxsIGRpZmZlciBkZXBlbmRpbmcgdXBvbiB3aGljaCBtb2RlIHlvdSBzZWxlY3QuPC9wPg0KPHA+VGhpcyBtb2R1bGUgY2FuIHVzZSB0aGUgRnJvbnRlbmRVc2VycyBtb2R1bGUgKG9wdGlvbmFsKSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgYW55IGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcnMgdG8gcGFydGx5IGZpbGwgaW4gdGhlIGZvcm0gd2hlbiB1cGxvYWRpbmcgZmlsZXM7PC9wPg0KPGgzPlBlcm1pc3Npb25zPC9oMz4NCjx1bD4NCjxsaT48ZW0+TWFuYWdlIFVwbG9hZHM8L2VtPiBwZXJtaXNzaW9uIGlzIG5lZWRlZCB0byBtYW5hZ2UgY2F0ZWdvcmllcywgYW5kIHRoZSBmaWxlcyB3aXRoaW4gdGhlbS48L2xpPg0KPGxpPjxlbT5Nb2RpZnkgVGVtcGxhdGVzPC9lbT4gcGVybWlzc2lvbiBpcyBuZWVkZWQgZWRpdCBhbnkgb2YgdGhlIHRlbXBsYXRlcy48L2xpPg0KPGxpPjxlbT5Nb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcy9lbT4gcGVybWlzc2lvbiBpcyBuZWVkZWQgYW55IG9mIHRoZSBmaWxlIHNldHRpbmdzLjwvbGk+DQo8L3VsPg0KPGgzPkVtYWlsaW5nPC9oMz4NCjxwPlRoaXMgbW9kdWxlIGlzIGNhcGFibGUgb2Ygc2VuZGluZyBhbiBlbWFpbCB3aGVuZXZlciBhIGZpbGUgaXMgdXBsb2FkZWQsIHNlZSB0aGUgcHJlZmVyZW5jZXMgdGFiLiAgSG93ZXZlciwgdG8gZG8gdGhpcyB0aGUgPGI+Q01TTWFpbGVyPC9iPiBwYWNrYWdlIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkLiAgVGhpcyBpcyBhbiA8ZW0+b3B0aW9uYWw8L2VtPiBzdGVwLCBhbmQgaWYgdGhlIENNU01haWxlciBtb2R1bGUgaXMgbm90IGluc3RhbGxlZCwgbm90aGluZyB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciwgb25seSBhIGxvZyBtZXNzYWdlIHdpbGwgYmUgcGxhY2VkIGludG8gdGhlIGFkbWluIGxvZzwvcD4NCjxoMz5TeXN0ZW0gU2V0dGluZ3M8L2gzPg0KPHA+PGI+Tm90ZTo8L2I+IFRoaXMgbW9kdWxlIGRvZXMgbm90IGJ5cGFzcyBvciBnZXQgcGFzdCBhbnkgZmlsZSBzaXplIGxpbWl0YXRpb25zIGluIHBocC4gIEl0IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlbS4gIFRoZXJlZm9yZSB5b3UgbWF5IG5lZWQgdG8gbW9kaWZ5IHlvdXIgcGhwLmluaSBmaWxlIGFuZC9vciB5b3VyIGh0dHBkLmNvbmYgZmlsZShzKSB0byBhbGxvdyB5b3UgdG8gdXBsb2FkIGZpbGVzIGFzIGxhcmdlIGFzIHdoYXQgeW91IGhhdmUgc2V0IGluIHRoZSB1cGxvYWRzIG1vZHVsZSBwcmVmZXJlbmNlcy48L3A+DQo8aDM+QXBhY2hlIE5vdGVzPC9oMz4NCjxwPkluIG9yZGVyIHRvIGFsbG93IGxhcmdlIGZpbGUgdXBsb2FkcywgeW91IG1heSBuZWVkIHRvIG1vZGlmeSB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBwYXJhbWV0ZXIgaW4geW91ciBwaHAuaW5pICBJbiBhZGRpdGlvbiwgdGhlIExpbWl0UmVxdWVzdEJvZHkgcGFyYW1ldGVyIGluIHlvdXIgYXBhY2hlIGNvbmZpZ3VyYXRpb24sIG1heSBuZWVkIHRvIGJlIGFkanVzdGVkIHRvIG1hdGNoIHRoZSB1cGxvYWRfbWF4X2ZpbGVzaXplIHBhcmFtZXRlcjwvcD4NCjxwPk5vdGU6ICB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSBwYXJhbWV0ZXIgY2FuIGJlIHNwZWNpZmllZCBpbiBieXRlcywga2lsb2J5dGVzLCBvciBtZWdhYnl0ZXMsIGhvd2V2ZXIgdGhlIExpbWl0UmVxdWV0Qm9keSBwYXJhbWV0ZXIgaXMgb25seSBzcGVjaWZpZWQgaW4gYnl0ZXM8L3A+DQonOwokbGFuZ1snaWQnXSA9ICdJRCc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bCB2ZXJzam9uICVzIGluc3RhbGxlcnQuJzsKJGxhbmdbJ2lwX2FkZHJlc3MnXSA9ICdJUCBBZGRyZXNzZSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VuIG1vZHVsIHNvbSB0aWxsYXRlciBicnVrZXJlICZhcmluZzsgbGFzdGUgb3BwIGZpbGVyLCBvZyB0aWxsYXRlciBkZWcgJmFyaW5nOyBoJmFyaW5nO25kdGVyZSBkZW0uJzsKJGxhbmdbJ25hbWUnXSA9ICdOYXZuJzsKJGxhbmdbJ3JlbmFtZW1lc3NhZ2UnXSA9ICdSZWRpZ2VyIG5hdm5ldCBoZXIgZm9yICZhcmluZzsgZ2omb3NsYXNoO3JlIGVuIG5hdm5lZW5kcmluZyc7CiRsYW5nWydwYXRoJ10gPSAnU3RpJzsKJGxhbmdbJ3BhdGhtZXNzYWdlJ10gPSAnRW5kcmUga2F0ZWdvcmkgaGVyIGZvciAmYXJpbmc7IGZseXR0ZSBmaWxlbiB0aWwgZW4gYW5uZW4ga2F0ZWdvcmknOwokbGFuZ1sncGF0aGludXBsb2FkcyddID0gJyhSZWxhdGl2IHRpbCBvcHBsYXN0aW5ncyBrYXRhbG9nZW4pJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVXBsb2FkcyBtb2R1bGVuIGhhciBibGl0dCBpbnN0YWxsZXJ0LiBWJmFlbGlnO3Igc2lra2VyIHAmYXJpbmc7ICZhcmluZzsgc2V0dGUgJnF1b3Q7TWFuYWdlIFVwbG9hZHMmcXVvdDsgcmV0dGlnaGV0ZXIgZm9yICZhcmluZzsga3VubmUgYnJ1a2UgbW9kdWxlbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1VwbG9hZHMgbW9kdWxlbiBoYXIgYmxpdHQgZmplcm5ldC4gIEluZ2VuIGZpbGVyIGhhciBibGl0dCBmamVybmV0IGZyYSBkaW4gb3BwbGFzdGluZ3Mga2F0YWxvZywgb2cgZmlsIGludGVncml0ZXRlbiBlciBpbnRha3QnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ01vZHVsIGlubnN0aWxsaW5nZXIgb3BwZGF0ZXJ0Lic7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlkZXNjJ10gPSAnQmVza3JpdmVsc2UnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5bGlzdGFibGUnXSA9ICdGaWxlciBpIGRlbm5lIGthdGVnb3JpZW4ga2FuIGxpc3RlcyB1dCc7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnluYW1lJ10gPSAnS2F0ZWdvcmkgbmF2bic7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlwYXRoJ10gPSAnU2VydmVyIHN0aSc7CiRsYW5nWydwcm9tcHRfZGVsZXRlZGlyZWN0b3J5J10gPSAnU2xldHQga2F0ZWdvcmkgbWFwcGU/JzsKJGxhbmdbJ3Byb21wdF9tYXhfdXBsb2Fkc2l6ZSddID0gJ01ha3NpbXVtIHRpbGxhdHRlIGZpbHN0Jm9zbGFzaDtycmVsc2UgKEtiKSc7CiRsYW5nWydwcm9tcHRfdmFsaWRfdXBsb2FkZXh0ZW5zaW9ucyddID0gJ0d5bGRpZyBvcHBsYXN0aW5ncyBmaWwtZW5kZWxzZSc7CiRsYW5nWydzY2FuJ10gPSAnU2thbm4nOwokbGFuZ1snc2VsZWN0Y2F0ZWdvcnknXSA9ICdWZWxnIGthdGVnb3JpJzsKJGxhbmdbJ3NpemUnXSA9ICdTdCZvc2xhc2g7cnJlbHNlJzsKJGxhbmdbJ3NpemVrYiddID0gJ1N0Jm9zbGFzaDtycmVsc2UgKEtiKSc7CiRsYW5nWydzdWJtaXQnXSA9ICdVdGYmb3NsYXNoO3InOwokbGFuZ1snc3VtbWFyeV90ZW1wbGF0ZSddID0gJ1NhbW1lbmRyYWdzIG1hbCc7CiRsYW5nWydzdW1tYXJ5J10gPSAnU2FtbWVuZHJhZyc7CiRsYW5nWyd0aXRsZV9hZG1pbl9wYW5lbCddID0gJ1VwbG9hZHMgTW9kdWxlbic7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdNb2R1bCBBZG1pbmlzdHJhc2pvbnNwYW5lbCc7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdNb2R1bCBJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3RpdGxlX3NpbmdfbG91ZGx5J10gPSAnU3luZyBoJm9zbGFzaDt5dD8nOwokbGFuZ1sndGl0bGVfc3VibmV0X2V4Y2x1c2lvbnMnXSA9ICdVdGVsdWtrIHN1Ym5ldHQgZnJhIHN0YXRpc3Rpa2tlcic7CiRsYW5nWyd0aXRsZV92YWxpZF91cGxvYWRleHRlbnNpb25zJ10gPSAnR3lsZGlnZSBmaWwtZW5kZWxzZXInOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBhdmlubnN0YWxsZXJ0Lic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsIG9wcGdyYWRlcnQgdGlsIHZlcnNqb24gJXMuJzsKJGxhbmdbJ3VwbG9hZCddID0gJ0xhc3Qgb3BwJzsKJGxhbmdbJ3VwbG9hZGVkJ10gPSAnRmlsICVzIGJsZSBsYXN0ZXQgb3BwIGF2ICVzLic7CiRsYW5nWydyZXBsYWNlZCddID0gJ0ZpbCAlcyBibGUgZXJzdGF0dGV0ICVzLic7CiRsYW5nWydkZWxldGVkJ10gPSAnRmlsICVzIGJsZSBzbGV0dGV0Lic7CiRsYW5nWyd1cGxvYWRmb3JtX3RlbXBsYXRlJ10gPSAnTEFzdCBvcHAgbWFsJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnQnJ1a2VybmF2bic7CiRsYW5nWyd3YXJuaW5nX2RlbGV0ZWNhdGVnb3J5J10gPSAnQURWQVJTRUw6IEZvcnNpa3RpZyBuJmFyaW5nO3IgZHUgc2xldHRlciBrYXRlZ29yaWVyLiAgRmlsZXIga2FuIGJsaSBib3J0ZSc7CiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5WZWxrb21tZW4gdGlsIFVwbG9hZHMgTW9kdWxlbnMgYWRtaW4gc2Vrc2pvbi4gTm9lIGFubmUga3VubmUgc3QmYXJpbmc7IGhlciBvbSBtb2R1bGVuIHZpcmtlbGlnIGdqb3JkZSBub2UuPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjQ2OTM0MjgwMi4xMTQ4MDc2NzUyLjExNDk0MjAwNzUuMTE0OTQyNjU2Ni45JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTE0OTQyNjU2Ni45LjYudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWhlbG1pbnNlbi5ub3x1dG1jY3Q9L2FkbWluL2VkaXRjb250ZW50LnBocHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hlbHBfT25Eb3dubG9hZCddID0gJzxoMz5WaWROZWRsYWRkbmluZzwvaDM+DQo8cD5FbiBoJmF1bWw7bmRlbHNlIHNvbSB1dGYmb3VtbDtycyBuJmF1bWw7ciBlbiBhbnYmYXVtbDtuZGFyZSBzbHV0ZiZvdW1sO3IgbmVkbGFkZG5pbmcgYXYgZW4gZmlsPC9wPg0KPHVsPg0KPGxpPjxlbT5pZDwvZW0+IC0gVXBwbGFkZG5pbmdzLUlEPC9saT4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gRmlsbmFtbjwvbGk+DQo8bGk+PGVtPmlwPC9lbT4gLSBOZWRsYWRkYXJlbnMgSVAtYWRyZXNzPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PbkRlbGV0ZUNhdGVnb3J5J10gPSAnPGgzPlZpZFRhQm9ydEthdGVnb3JpPC9oMz4NCjxwPkVuIGgmYXVtbDtuZGVsc2Ugc29tIHV0ZiZvdW1sO3JzIG4mYXVtbDtyIGVuIGthdGVnb3JpIHRhcyBib3J0PC9wPg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBLYXRlZ29yaW5hbW48L2xpPg0KPGxpPjxlbT5wYXRoPC9lbT4gLSBTJm91bWw7a3YmYXVtbDtnIGYmb3VtbDtyIGthdGVnb3JpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PbkNyZWF0ZUNhdGVnb3J5J10gPSAnPGgzPlZpZFNrYXBhS2F0ZWdvcmk8L2gzPg0KPHA+RW4gaCZhdW1sO25kZWxzZSBzb20gdXRmJm91bWw7cnMgbiZhdW1sO3IgZW4ga2F0ZWdvcmkgc2thcGFzPC9wPg0KPGg0PlBhcmFtZXRyYXI8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBLYXRlZ29yaW5zIG5hbW48L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gS2F0ZWdvcmlucyBiZXNrcml2bmluZzwvbGk+DQo8bGk+PGVtPnBhdGg8L2VtPiAtIEthdGVnb3JpbnMgcyZvdW1sO2t2JmF1bWw7ZzwvbGk+DQo8bGk+PGVtPnBhdGg8L2VtPiAtIEVuIGZsYWdnYSBzb20gaW5kaWtlcmFyIG9tIGthdGVnb3JpbiBrYW4gbGlzdGFzPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PblJlbW92ZSddID0gJzxoMz5WaWRUYUJvcnQ8L2gzPg0KPHA+RW4gaCZhdW1sO25kZWxzZSBzb20gdXRmJm91bWw7cnMgbiZhdW1sO3IgZW4gZmlsIHRhcyBib3J0IHZpYSBhZG1pbmlzdHJhdGlvbmVuIGVsbGVyIGZyb250ZW5kLWdyJmF1bWw7bnNzbml0dGV0PC9wPg0KPGg0PlBhcmFtZXRyYXI8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBOYW1uZXQgcCZhcmluZzsgZGVuIGJvcnR0YWduYSBmaWxlbjwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBEZW4gYm9ydHRhZ25hIGZpbGVucyBJRDwvbGk+DQo8bGk+PGVtPmNhdGVnb3J5X2lkPC9lbT4gLSBLYXRlZ29yaW5zIElEPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaGVscF9PblVwbG9hZCddID0gJzxoMz5WaWRVcHBsYWRkbmluZzwvaDM+DQo8cD5FbiBoJmF1bWw7bmRlbHNlIHNvbSB1dGYmb3VtbDtycyBuJmF1bWw7ciBlbiBmaWwgbGFkZGFzIHVwcCB2aWEgYWRtaW5pc3RyYXRpb25lbiBlbGxlciBmcm9udGVuZC1nciZhdW1sO25zc25pdHRldDwvcD4NCjxoND5QYXJhbWV0cmFyPC9oND4NCjx1bD4NCjxsaT48ZW0+Y2F0ZWdvcnk8L2VtPiAtIEthdGVnb3JpbnMgbmFtbjwvbGk+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIERlbiB1cHBsYWRkYWRlIGZpbGVucyBuYW1uPC9saT4NCjxsaT48ZW0+c2l6ZTwvZW0+IC0gU3Rvcmxla2VuIHAmYXJpbmc7IGRlbiB1cHBsYWRkYWRlIGZpbGVuPC9saT4NCjxsaT48ZW0+c3VtbWFyeTwvZW0+IC0gRGVuIHVwcGxhZGRhZGUgZmlsZW5zIGtvcnRmYXR0YWRlIGJlc2tyaXZuaW5nIChrYW4gdmFyYSB0b20pPC9lbT48L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gRGVuIHVwcGxhZGRhZGUgZmlsZW5zIGwmYXJpbmc7bmdhIGJlc2tyaXZuaW5nIChrYW4gdmFyYSB0b20pPC9lbT48L2xpPg0KPGxpPjxlbT5hdXRob3I8L2VtPiAtIERlbiB1cHBsYWRkZSBmaWxlbnMgZiZvdW1sO3JmYXR0YXJlIChvbSBuJmFyaW5nO2dvbik8L2VtPjwvbGk+DQo8bGk+PGVtPmlwX2FkZHJlc3M8L2VtPiAtIEludGVybmV0LWFkcmVzc2VuIGYmb3VtbDtyIGRlbiBrbGllbnQgc29tIGxhZGRhZGUgdXBwIGZpbGVuPC9saT4NCjwvdWw+DQonOwokbGFuZ1snaW5mb19ldmVudF9vbmRlbGV0ZWNhdGVnb3J5J10gPSAnSCZhdW1sO25kZWxzZSBzb20gdXRmJm91bWw7cnMgbiZhdW1sO3IgZW4ga2F0ZWdvcmkgdGFzIGJvcnQnOwokbGFuZ1snaW5mb19ldmVudF9vbmNyZWF0ZWNhdGVnb3J5J10gPSAnSCZhdW1sO25kZWxzZSBzb20gdXRmJm91bWw7cnMgbiZhdW1sO3IgZW4ga2F0ZWdvcmkgc2thcGFzJzsKJGxhbmdbJ2luZm9fZXZlbnRfb25kb3dubG9hZCddID0gJ0gmYXVtbDtuZGVsc2Ugc29tIHV0ZiZvdW1sO3JzIG4mYXVtbDtyIGVuIGZpbCBsYWRkYXMgbmVyJzsKJGxhbmdbJ2luZm9fZXZlbnRfb251cGxvYWQnXSA9ICdIJmF1bWw7bmRlbHNlIHNvbSB1dGYmb3VtbDtycyBuJmF1bWw7ciBlbiBueSBmaWwgbGFkZGFzIHVwcCc7CiRsYW5nWydpbmZvX2V2ZW50X29ucmVtb3ZlJ10gPSAnSCZhdW1sO25kZWxzZSBzb20gdXRmJm91bWw7cnMgbiZhdW1sO3IgZW4gZmlsIHRhcyBib3J0JzsKJGxhbmdbJ3RpdGxlX3VzZXJ0YWdfb251cGxvYWQnXSA9ICdBbnYmYXVtbDtuZGFyZGVmaW5pZXJhZGUgdGFnZ2FyIHNvbSBrYWxsYXMgZWZ0ZXIgYXR0IHVwcGxhZGRuaW5nZW4gJmF1bWw7ciBrb21wbGV0dCc7CiRsYW5nWydub25lJ10gPSAnSW5nYSc7CiRsYW5nWydtYXRjaGVzZm91bmQnXSA9ICdUciZhdW1sO2ZmYXIgaGl0dGFkZSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1sndGl0bGVfcmVkaXJlY3RvbnVwbG9hZCddID0gJ09tZGlyaWdlcmEgdGlsbCBzaWQtSUQvLWFsaWFzIG4mYXVtbDtyIGFudiZhdW1sO25kYXJlIGxhZGRhciB1cHAnOwokbGFuZ1snZGV0YWlscyddID0gJ0RldGFsamVyJzsKJGxhbmdbJ2NvbmZpcm1fcHJlZmVyZW5jZXMnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgJmF1bWw7bmRyYSBpbnN0JmF1bWw7bGxuaW5nYXJuYT8nOwokbGFuZ1snZXJyb3Jfbm9maWxlc3VwbG9hZGVkJ10gPSAnSW5nYSBmaWxlciBsYWRkYWRlcyB1cHAuJzsKJGxhbmdbJ3Byb21wdF9yZXBsYWNlJ10gPSAnVGlsbCZhcmluZzt0IGF0dCBza3JpdmEgJm91bWw7dmVyJzsKJGxhbmdbJ2luZm9fcmVwbGFjZSddID0gJ0VycyZhdW1sO3R0IGFsbGEgZmlsZXIgbWVkIHNhbW1hIG5hbW4gKCZhdW1sO25kcmFyIGludGUgaWQtbnVtcmV0KSc7CiRsYW5nWydub19pbml0aWFsJ10gPSAnVmlzYSBpbnRlIG4mYXJpbmc7Z3JhIGlubGVkYW5kZSByZXN1bHRhdCBuJmF1bWw7ciBmaWx0cmV0ICZhdW1sO3IgcCZhcmluZzsnOwokbGFuZ1sncGFyYW1fa2V5J10gPSAnUHJvdmlkZSBhbiBhZGRpdGlvbmFsIGtleSB0byB0aGUgbW9kdWxlIGZvciBmdXJ0aGVyIG9yZ2FuaXppbmcgdXBsb2Fkcy4gIFRoaXMga2V5IGNvdWxkIGJlIGFuIGVuY29kZWQgc3RyaW5nIGxpa2U6ICYjMDM5O2ZldXNlcnM6dWlkJiMwMzk7LCBldGMuICBUaGlzIHBhcmFtZXRlciBpcyB1c3VhbGx5IG9ubHkgbmVlZGVkIHdoZW4gZW1iZWRkaW5nIHRoZSB1cGxvYWRzIG1vZHVsZSBpbnRvIGFub3RoZXIgbW9kdWxlJzsKJGxhbmdbJ3BhcmFtX25vYXV0aG9yJ10gPSAnSGlkZSB0aGUgYXV0aG9yIGZpZWxkIGZyb20gdGhlIHVwbG9hZCBmb3JtLiAgVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB2YWxpZCB3aGVuIG1vZGU9JiMwMzk7dXBsb2FkJiMwMzk7LiAgSWYgVGhlIEZyb250ZW5kVXNlcnMgbW9kdWxlIGlzIHByZXNlbnQsIGFuZCBhIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbiwgYSBoaWRkZW4gZmllbGQgd2lsbCBob2xkIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJuYW1lJzsKJGxhbmdbJ3BhcmFtX3VwbG9hZF9pZCddID0gJ3VwbG9hZF9pZD0mcXVvdDtpZCZxdW90OyAtIHNwZWNpZnkgYSBzaW5nbGUgZmlsZSBmb3IgdGhlIHVybC9saW5rIG9yIHNpbmdsZSBtb2RlcyAoYWJvdmUpJzsKJGxhbmdbJ3BhcmFtX3VzZV9zdHJpY3RfcmVnZXhwJ10gPSAnRmlsdGVyZiZhdW1sO2x0ZXQgYW52JmF1bWw7bmRzIHNvbSBldHQgc3RyaWt0IHJlZ2V4cC11dHRyeWNrIHV0YW4gYXR0IGYmb3VtbDtyYmVoYW5kbGEgbWVsbGFuc2xhZyc7CiRsYW5nWydwYXJhbV9kZXRhaWxfZmlsZXRlbXBsYXRlJ10gPSAnQW52JmF1bWw7bmQgZW4gLnRwbC1maWwgZnImYXJpbmc7biBtYXBwZW4gVXBsb2Fkcy90ZW1wbGF0ZXMvZm9sZGVyIGlzdCZhdW1sO2xsZXQgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkYXRhYmFzbWFsbGVuIG4mYXVtbDtyIGVuIGRldGFsamVyYWQgcmFwcG9ydCB2aXNhcyc7CiRsYW5nWydwYXJhbV91cGxvYWRfZmlsZXRlbXBsYXRlJ10gPSAnQW52JmF1bWw7bmQgZW4gLnRwbC1maWwgZnImYXJpbmc7biBtYXBwZW4gVXBsb2Fkcy90ZW1wbGF0ZXMvZm9sZGVyIGlzdCZhdW1sO2xsZXQgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkYXRhYmFzbWFsbGVuIG4mYXVtbDtyIGV0dCB1cHBsYWRkbmluZ3Nmb3JtdWwmYXVtbDtyIHZpc2FzJzsKJGxhbmdbJ3BhcmFtX3N1bW1hcnlfZmlsZXRlbXBsYXRlJ10gPSAnQW52JmF1bWw7bmQgZW4gLnRwbC1maWwgZnImYXJpbmc7biBtYXBwZW4gVXBsb2Fkcy90ZW1wbGF0ZXMvZm9sZGVyIGlzdCZhdW1sO2xsZXQgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkYXRhYmFzbWFsbGVuIG4mYXVtbDtyIGVuIHNhbW1hbmZhdHRuaW5nc3JhcHBvcnQgdmlzYXMnOwokbGFuZ1sncGFyYW1fZmlsdGVyJ10gPSAnVmlzYSBmaWx0ZXJmb3JtdWwmYXVtbDtyZXQnOwokbGFuZ1sncGFyYW1fbm9faW50aXRpYWwnXSA9ICdCYXJhIGFudiZhdW1sO25kYmFyIG4mYXVtbDtyIGZpbHRlcnBhcmFtZXRlcm4gYW52JmF1bWw7bmRzLCBlbGxlciBuJmF1bWw7ciBkZW4gJmF1bWw7ciBwJmFyaW5nOyBzb20gc3RhbmRhcmQuIERlbiBoJmF1bWw7ciBwYXJhbWV0ZXJuIGluZGlrZXJhciBvbSBpbmxlZGFuZGUgcmVzdWx0YXQgc2thIHJldHVybmVyYXMnOwokbGFuZ1sncGFyYW1fc29ydG9yZGVyJ10gPSAnICA8cD5Tb3J0ZXJpbmdzb3JkbmluZ2FyDQogIDx1bD4NCiAgPGxpPjxlbT5kYXRlX2FzYzwvZW0+IC0gU29ydGVyYSBlZnRlciBkYXR1bSwgc3RpZ2FuZGU8L2xpPg0KICA8bGk+PGVtPmRhdGVfZGVzYzwvZW0+IC0gU29ydGVyYSBlZnRlciBkYXR1bSwgZmFsbGFuZGU8L2xpPg0KICA8bGk+PGVtPm5hbWVfYXNjPC9lbT4gLSBTb3J0ZXJhIGVmdGVyIG5hbW4sIHN0aWdhbmRlPC9saT4NCiAgPGxpPjxlbT5uYW1lX2Rlc2M8L2VtPiAtIFNvcnRlcmEgZWZ0ZXIgbmFtbiwgZmFsbGFuZGU8L2xpPg0KICA8bGk+PGVtPnNpemVfYXNjPC9lbT4gLSBTb3J0ZXJhIGVmdGVyIHN0b3JsZWssIHN0aWdhbmRlPC9saT4NCiAgPGxpPjxlbT5zaXplX2Rlc2M8L2VtPiAtIFNvcnRlcmEgZWZ0ZXIgc3RvcmxlaywgZmFsbGFuZGU8L2xpPg0KICA8bGk+PGVtPmRlc2NfYXNjPC9lbT4gLSBTb3J0ZXJhIGVmdGVyIGJlc2tyaXZuaW5nLCBzdGlnYW5kZTwvbGk+DQogIDxsaT48ZW0+ZGVzY19kZXNjPC9lbT4gLSBTb3J0ZXJhIGVmdGVyIGJlc2tyaXZuaW5nLCBmYWxsYW5kZTwvbGk+DQogIDxsaT48ZW0+YXV0aG9yX2FzYzwvZW0+IC0gU29ydGVyYSBlZnRlciBmJm91bWw7cmZhdHRhcmUsIHN0aWdhbmRlPC9saT4NCiAgPGxpPjxlbT5hdXRob3JfZGVzYzwvZW0+IC0gU29ydGVyYSBlZnRlciBmJm91bWw7cmZhdHRhcmUsIGZhbGxhbmRlPC9saT4NCiAgPGxpPjxlbT5pcF9hc2M8L2VtPiAtIFNvcnRlcmEgZWZ0ZXIgSVAtYWRyZXNzLCBzdGlnYW5kZTwvbGk+DQogIDxsaT48ZW0+aXBfZGVzYzwvZW0+IC0gU29ydGVyYSBlZnRlciBJUC1hZHJlc3MsIGZhbGxhbmRlPC9saT4NCiAgPGxpPjxlbT5yYW5kb208L2VtPiAtIFNsdW1wdmlzIHNvcnRlcmluZ3NvcmRuaW5nPC9saT4NCiAgPC91bD4NCiAgPC9wPic7CiRsYW5nWydwYXJhbV9maWxlZXh0ZW5zaW9ucyddID0gJyANCmZpbGVfZXh0ZW5zaW9ucz0mcXVvdDtleHQxLGV4dDIsZXh0MyZxdW90Ow0KPHA+ZyZhdW1sO2xsZXIgZW5iYXJ0IG4mYXVtbDtyIG1vZGU9dXBsb2FkLiBEZW4gaCZhdW1sO3IgcGFyYW1ldGVybiBiZWdyJmF1bWw7bnNhciB2aWxrYSBmaWx0eXBlciBzb20ga2FuIGxhZGRhcyB1cHAuIERlbiB1cHBoJmF1bWw7dmVyIGluc3QmYXVtbDtsbG5pbmdhcm5hIGkgbW9kdWxpbnN0JmF1bWw7bGxuaW5nYXIuPC9wPic7CiRsYW5nWydwYXJhbV9jb3VudCddID0gJ2NvdW50PSZxdW90O04mcXVvdDsNCjxwPkVuIHBhcmFtZXRlciBmJm91bWw7ciBhdHQgbGlzdGEgZW5iYXJ0IGRlIE4gZiZvdW1sO3JzdGEgcmVzdWx0YXRlbiBpIGVuIGZyJmFyaW5nO2dhLiBTaWRpbmRlbG5pbmcgKHBhZ2luYXRpb24pIHNrdWxsZSB2YXJhIGImYXVtbDt0dHJlLCBtZW4gZGV0IGgmYXVtbDtyIGZ1bmthciB0aWxscyB2aWRhcmU8L3A+JzsKJGxhbmdbJ3BhcmFtX2NhdGVnb3J5J10gPSAnY2F0ZWdvcnk9JnF1b3Q7bmFtZSZxdW90Ow0KPHA+PGI+Tm90ZXJhOjwvYj4gS2F0ZWdvcmkga2FuIHZhcmEgJnF1b3Q7YWxsJnF1b3Q7IChhbGxhKSwgdmlsa2V0IGxpc3RhciBhbGxhIHVwcGxhZGRuaW5nYXIgZnImYXJpbmc7biBhbGxhIDxlbT5saXN0YmFyYTwvZW0+IGthdGVnb3JpZXI8L3A+JzsKJGxhbmdbJ3BhcmFtX21vZGUnXSA9ICcgIDx1bD4NCiAgPGxpPjxlbT5kZXRhaWxlZDwvZW0+IC0gVmlzYSBlbiBkZXRhbGplcmFkIGxpc3RhICZvdW1sO3ZlciBhbGxhIGZpbGVyIGkga2F0ZWdvcmluPC9saT4NCiAgPGxpPjxlbT51cGxvYWQ8L2VtPiAtIFZpc2EgZXR0IGZvcm11bCZhdW1sO3IgZiZvdW1sO3IgYXR0IGwmYXJpbmc7dGEgZW4gYW52JmF1bWw7bmRhcmUgbGFkZGEgdXBwIGZpbGVyIHZpYSBoZW1zaWRhbjwvbGk+DQogIDxsaT48ZW0+dXJsIDxpPm9yPC9pPiBsaW5rPC9lbT4gLSBWaXNhIGVuIGwmYXVtbDtuayB0aWxsIGVuIGZpbDwvbGk+DQogIDxsaT48ZW0+c3VtbWFyeTwvZW0+IC0gVmlzYSBlbiBzYW1tYW5mYXR0YWQgbGlzdGEgJm91bWw7dmVyIGFsbGEgZmlsZXIgaSBlbiBrYXRlZ29yaTwvbGk+DQogIDxsaT48ZW0+c2luZ2xlPC9lbT4gLSBWaXNhIGVuIGRldGFsamVyYWQgcmFwcG9ydCBvbSBlbiBlbnNraWxkIHVwcGxhZGRuaW5nPC9saT4NCiAgPC91bD4nOwokbGFuZ1sncmV0dXJudG9tb2R1bGUnXSA9ICdUaWxsYmFrYSB0aWxsIG1vZHVscGFuZWxlbic7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3JpZXMnXSA9ICdEZXQgZmlubnMgaW5nYSBkZWZpbmllcmFkZSBrYXRlZ29yaWVyJzsKJGxhbmdbJ3RpdGxlX2VuZm9yY2VleHRlbnNpb25zJ10gPSAnS3ImYXVtbDt2ZXIgZmlsdGlsbCZhdW1sO2dnIGYmb3VtbDtyIGFsbGEgdXBwbGFkZGFkZSBmaWxlcic7CiRsYW5nWydyZXN0b3JlZGVmYXVsdHNjb25maXJtJ10gPSAnRGV0dGEgJmFyaW5nO3RlcnN0JmF1bWw7bGxlciBtYWxsYXJuYSB0aWxsIHN5c3RlbXN0YW5kYXJkLiBBbGxhIGYmb3VtbDtyJmF1bWw7bmRyaW5nYXIgc29tIGR1IGhhciBnam9ydCBrb21tZXIgYXR0IGYmb3VtbDtybG9yYXMuICZBdW1sO3IgZHUgcyZhdW1sO2tlciBwJmFyaW5nOyBhdHQgZHUgdmlsbCBmb3J0cyZhdW1sO3R0YT8nOwokbGFuZ1snaW5mb190aHVtYm5haWwnXSA9ICdFbiB2YWxmcmkgZmlsIG1lZCB0dW1uYWdlbGJpbGQnOwokbGFuZ1sndGh1bWJuYWlsJ10gPSAnVHVtbmFnZWxiaWxkJzsKJGxhbmdbJ2luZm9fc3VtbWFyeSddID0gJ0VuIGtvcnQgYmVza3Jpdm5pbmcgYXYgZmlsZW4gKG9tIHRvbSBhbnYmYXVtbDtuZHMgZmlsbmFtbmV0IHV0YW4gZGVzcyBmaWx0aWxsJmF1bWw7Z2cpJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnluYW1lJ10gPSAnRW4ga29ydCBiZXNrcml2bmluZyBhdiBkaW4ga2F0ZWdvcmkgKGYmb3VtbDtyIGFsbG0mYXVtbDtuaGV0ZW4pJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlkZXNjJ10gPSAnRW4gYmVza3Jpdm5pbmcgYXYgZGluIGthdGVnb3JpJzsKJGxhbmdbJ2luZm9fY2F0ZWdvcnlwYXRoJ10gPSAnTmFtbmV0IHAmYXJpbmc7IGthdGFsb2dlbiB1bmRlciBrYXRhbG9nZW4gdXBsb2Fkcywgc29tIHNrYSBhbnYmYXVtbDtuZGFzIGYmb3VtbDtyIGF0dCBzcGFyYSBmaWxlciBpIGRlbiBoJmF1bWw7ciBrYXRlZ29yaW4uIE9tIGthdGFsb2dlbiBtZWQgZGV0IGgmYXVtbDtyIG5hbW5ldCBpbnRlIGZpbm5zLCBzJmFyaW5nOyBrYW4gZGVuIHNrYXBhcy4nOwokbGFuZ1snaW5mb19kZXN0bmFtZSddID0gJ0FudiZhdW1sO25kIGRldCBoJmF1bWw7ciBmJmF1bWw7bHRldCBmJm91bWw7ciBhdHQgJmF1bWw7bmRyYSBuYW1uZXQgcCZhcmluZzsgZmlsZW4gdmlkIHVwcGxhZGRuaW5nJzsKJGxhbmdbJ2Vycm9yX2NhbnRjcmVhdGVkaXJlY3RvcnknXSA9ICdLdW5kZSBpbnRlIHNrYXBhIGthdGFsb2cnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdNb2R1bGVuIENNU01haWxlciBrdW5kZSBpbnRlIHNrYXBhIGVuIGluc3RhbnMnOwokbGFuZ1sndXBsb2FkX25vdGlmaWNhdGlvbiddID0gJ0VuIG55IGZpbCBoYXIgbGFkZGF0cyB1cHAnOwokbGFuZ1sndGl0bGVfZW1haWxfb25fdXBsb2FkJ10gPSAnU2tpY2thIGVwb3N0IHZpZCB1cHBsYWRkbmluZyB0aWxsOic7CiRsYW5nWydlbWFpbF90ZW1wbGF0ZSddID0gJ0Vwb3N0bWFsbCc7CiRsYW5nWyd0aXRsZV9kdW1teV9pbmRleF9odG1sJ10gPSAnU2thcGEgaW5kZXguaHRtbC1maWxlciBpIHZhcmplIG1hcHA/PGJyLz48ZW0+QWxsYSBiZWZpbnRsaWdhIGluZGV4Lmh0bWwtZmlsZXIga29tbWVyIGF0dCBmaW5uYXMga3ZhcjwvZW0+JzsKJGxhbmdbJ2Fib3V0J10gPSAnT20nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbmRlbmllZCddID0gJyZBcmluZzt0a29tc3QgbmVrYWQuIEtvbnRyb2xsZXJhIGRpbmEgciZhdW1sO3R0aWdoZXRlci4nOwokbGFuZ1snZXJyb3JfY291bGRub3R3cml0ZSddID0gJ0t1bmRlIGludGUgc2tyaXZhJzsKJGxhbmdbJ2FkZGNhdGVnb3J5J10gPSAnTCZhdW1sO2dnIHRpbGwga2F0ZWdvcmknOwokbGFuZ1snYWxsJ10gPSAnQWxsYSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnJkF1bWw7ciBkdSBzJmF1bWw7a2VyPyc7CiRsYW5nWydhdXRob3InXSA9ICdGJm91bWw7cmZhdHRhcmUnOwokbGFuZ1snY2FuY2VsJ10gPSAnJkFyaW5nO25ncmEnOwokbGFuZ1snY2Fubm90bW9kaWZ5cGF0aCddID0gJyhTJm91bWw7a3YmYXVtbDtnZW4ga2FuIGludGUgJmF1bWw7bmRyYXMpJzsKJGxhbmdbJ2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWVyJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snbWVzc2FnZV9jYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmluIGhhciBsYWd0cyB0aWxsJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4gIC0gU2VwdGVtYmVyIDIwMDUuIEYmb3VtbDtyc3RhIHZlcnNpb25lbi48L2xpPg0KPGxpPlZlcnNpb24gMS4wMS4gLSBTZXB0ZW1iZXIgMjAwNS4gTWluZHJlIGtvcnJpZ2VyaW5nYXIuPC9saT4NCjxsaT5WZXJzaW9uIDEuMDIuIC0gU2VwdGVtYmVyIDIwMDUuIExhIHRpbGwgbSZvdW1sO2psaWdoZXQgYXR0IHYmYXVtbDtsamEgc29ydGVyaW5nc29yZG5pbmc8L2xpPg0KPGxpPlZlcnNpb24gMS4wMy4gLSBTZXB0ZW1iZXIgMjAwNS4gS29ycmlnZXJpbmcgciZvdW1sO3JhbmRlIGtvbmZsaWt0IGkgbWFsbG5hbW48L2xpPg0KPGxpPlZlcnNpb24gMS4wNC4gLSBTZXB0ZW1iZXIgMjAwNS4gTGEgdGlsbCBtJm91bWw7amxpZ2hldCBhdHQgJmFyaW5nO3RlcnNjYW5uYSBlbiBtYXBwLCBvY2ggYXR0IGxhZGRhIHVwcCBmaWxlciBmciZhcmluZztuIGFkbWluLXNpZGFuPC9saT4NCjxsaT5WZXJzaW9uIDEuMDUuIC0gU2VwdGVtYmVyIDIwMDUuIEtvcnJpZ2VyaW5nIGF2IG4mYXJpbmc7Z3JhIGZlbGFrdGlnYSBQSFAtdmFyaWFibGVyPC9saT4NCjxsaT5WZXJzaW9uIDEuMDYuIC0gU2VwdGVtYmVyIDIwMDUuIExhIHRpbGwgZiZvdW1sO3JmYXR0YXJmJmF1bWw7bHQgaSB1cHBsYWRkbmluZ3Nmb3JtdWwmYXVtbDtyZXQgaSBhZG1pbi1wYW5lbGVuLCBsYSB0aWxsIHNhbW1hbmZhdHRuaW5nc2YmYXVtbDtsdCwgb2NoIGdqb3JkZSBvbSBiZXNrcml2bmluZyB0aWxsIHRleHQgYXJlYSwgb2NoIHRpbGwmYXJpbmc7dCBhbnYmYXVtbDtuZGFyZW4gYXR0IHYmYXVtbDtsamEgbmFtbiBwJmFyaW5nOyBkZXN0aW5hdGlvbnNmaWxlbjwvbGk+DQo8bGk+VmVyc2lvbiAxLjA3LiAtIFNlcHRlbWJlciAyMDA1LiBMYSB0aWxsIG0mb3VtbDtqbGlnaGV0IGF0dCAmYXVtbDtuZHJhIGZpbG5hbW4sIG9jaCBrb3JyaWdlcmFkZSBldHQgbWluZHJlIGZlbCBmJm91bWw7ciBzY2FubmluZyBhdiBtYXBwPC9saT4NCjxsaT5WZXJzaW9uIDEuMDguIC0gU2VwdGVtYmVyIDIwMDUuIEJldHRlciBoYW5kbGluZyBvZiBuYW1lcyB3aXRoIHNwYWNlcywgYW5kIGEgZmV3IG1pbm9yIGVycm9ycyBmaXhlZC4gIEFkZGVkIHN3ZWRpc2ggdHJhbnNsYXRpb24gKHRoYW5rcyB3ZXN0aXMpPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4wLiAtIE9rdG9iZXIgMjAwNQ0KIDx1bD4NCiAgIDxsaT5Nb2RpZmllcmFkZSBBdHRlbXB0VXBsb2FkLWZ1bmt0aW9uZW4gcyZhcmluZzsgYXR0IGRlbiBrdW5kZSBrYWxsYXMgdXRpZnImYXJpbmc7bjwvbGk+DQogICA8bGk+TGEgdGlsbCBHZXRVcGxvYWREZXRhaWxzLWZ1bmt0aW9uZW4gc29tIHJldHVybmVyYXIgYWxsYSBkZXRhbGplciBvbSBlbiBtb2R1bCwgaW5rbHVzaXZlIGVuIGwmYXVtbDtuazwvbGk+DQogICA8bGk+TGEgdGlsbCBSZWRpcmVjdHMgcyZhcmluZzsgYXR0IGRldCAmYXVtbDtyIG15Y2tldCB0cmV2bGlnYXJlIGF0dCBhcmJldGEgbWVkIG1vZHVsZW4sIGRlbiBvbWRpcmlnZXJhciB0aWxsIGRlbiByJmF1bWw7dHRhIGZsaWtlbjwvbGk+DQogICA8bGk+JkF1bWw7bmRyYWRlIGZyb250LW1hbGxlbiBmJm91bWw7ciBhdHQgc2UgYiZhdW1sO3R0cmUgdXQgb2NoIGZ1bmdlcmEgdmV0dGlnYXJlPC9saT4NCiAgIDxsaT5GaXhhciBmJm91bWw7ciB1cHBsYWRkbmluZ2VuLCBzJmFyaW5nOyBhdHQgYmVza3Jpdm5pbmdlbiBzdCZhdW1sO2xscyBpbiBvY2ggbmFtbiBvY2ggc2FtbWFuZmF0dG5pbmcgaGFtbmFyIHAmYXJpbmc7IHImYXVtbDt0dCBzdCZhdW1sO2xsZTwvbGk+DQogICA8bGk+Rml4YXIgZiZvdW1sO3IgYXR0IGhhbnRlcmEgbWVsbGFuc2xhZyBpIG5hbW4gJmF1bWw7bm51IGImYXVtbDt0dHJlPGxpPg0KICAgPGxpPk0mb3VtbDtqbGlnaGV0IGF0dCB2JmF1bWw7bGphIGF0dCBsJmF1bWw7Z2dhIGluZGV4Lmh0bWwtZmlsZXIgaSB2YXJqZSB1cHBsYWRkbmluZ3NtYXBwPC9saT4NCiAgIDxsaT5PbSBtYW4gc3BlY2lmaWNlcmFyIGV0dCBtJmFyaW5nO2xuYW1uLCBvY2ggaW5nZXQgZmlsdGlsbCZhdW1sO2dnIGFuZ2VzLCBhbnYmYXVtbDtuZHMgZmlsdGlsbCZhdW1sO2dnZXQgZiZvdW1sO3Igb3JpZ2luYWxmaWxlbjwvbGk+DQogPC91bD4NCiA8cD48ZW0+PGI+VmlrdGlndCE8L2I+PC9lbT48YnIvPkRldCAmYXVtbDtyIGludGUgbSZvdW1sO2psaWd0IGF0dCB1cHBncmFkZXJhIGZyJmFyaW5nO24gbiZhcmluZztnb24gYW5uYW4gdmVyc2lvbiBhdiBVcGxvYWRzbW9kdWxlbiB0aWxsIDEuMS4wLiAgRGV0dGEgcGdhIG4mYXJpbmc7Z3JhIGZlbCBzb20gZ2pvcmRlcyBpIGRhdGFiYXNydXRpbmVybmEsIG9jaCAmYXVtbDt2ZW4gaSB1cHBncmFkZXJpbmdzcnV0aW5lbiBpIDEuMC42LiBEdSBtJmFyaW5nO3N0ZSBhdmluc3RhbGxlcmEgZGVuIGdhbWxhIHZlcnNpb25lbiBvY2ggc2VkYW4gb21pbnN0YWxsZXJhIGRlbiBueWEgdmVyc2lvbmVuLiBEZXR0YSBvcnNha2FyIHN0b3JhIHN2JmFyaW5nO3JpZ2hldGVyIG9tIGR1IGhhciBiZXNrcml2bmluZ2FyIG9jaCBhbm5hdCBpIGRpbmEgdGFiZWxsZXI8L3A+DQo8L2xpPg0KPGxpPlZlcnNpb24gMS4xLjEuIC0gT2t0b2JlciwgMjAwNS4gRml4YWRlIG4mYXJpbmc7Z3JhIG1pbmRyZSBidWdnYXIgaSBHZXRVcGxvYWREZXRhaWxzIG9jaCBsYSB0aWxsIHl0dGVybGlnYXJlIGVuIGwmYXVtbDtuayAoZWxsZXIgZW4gdXJsKSB0aWxsIGRlIHVwcGxhZGRhZGUgZmlsZXJuYS48L2xpPg0KPGxpPlZlcnNpb24gMS4xLjIuIC0gT2t0b2JlciwgMjAwNS4gRml4YWRlIFVSTC1mJmF1bWw7bHRldCBpIEdldFVwbG9hZERldGFpbHMgZiZvdW1sO3IgYXR0IHJldHVybmVyYSBlbiBuZWRsYWRkbmluZ3NsJmF1bWw7bmssIG9jaCBsYSB0aWxsIGV0dCBhYnN1cmwtZiZhdW1sO2x0IHNvbSByZXR1cm5lcmFyIGRlbiBhYnNvbHV0YSBzJm91bWw7a3YmYXVtbDtnZW4gdGlsbCBmaWxlbiBwJmFyaW5nOyB3ZWJic2VydmVybi4gS2xpY2sgcCZhcmluZzsgZGVubmEgbCZhdW1sO25rIGtvbW1lciBpbnRlIGF0dCByJmF1bWw7a25hcy48L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuMy4gLSBPa3RvYmVyLCAyMDA1PC9wPg0KPHA+Rml4YWRlIHVwcGdyYWRlcmluZ3Nwcm9ibGVtZW4gZnImYXJpbmc7biAxLjAueC1zZXJpZW4uIERlIHNvbSBhbnYmYXVtbDtuZGVyIDEuMC54IGImb3VtbDtyIGt1bm5hIHVwcGdyYWRlcmEgdGlsbCAxLjEuMy4gbnUgdXRhbiBwcm9ibGVtLiA8c3Ryb25nPkRlIGJlciZvdW1sO21kYSBzaXN0YSBvcmRlbiwgZ2wmb3VtbDttIGludGUgYXR0IHRhIGJhY2t1cCBmJm91bWw7cnN0ITwvc3Ryb25nPi4gRml4YWRlIGNvbnRlbnQgcmVkaXJlY3QtZ3Jlam9yIHNvbSBpcnJpdGVyYWRlIG1pZy4gTGEgb2NrcyZhcmluZzsgdGlsbCBjYXRlZ29yeT1hbGwgZiZvdW1sO3IgYXR0IGxpc3RhIGFsbGEgdXBwbGFkZG5pbmdlbiBpIGFsbGEgbGlzdGJhcmEga2FlZ29yaWVyIDxlbT4obCZhcmluZzt0IG9zcyBob3BwYXMgYXR0IGZpY2sgb3JkbmluZyBwJmFyaW5nOyBzcWwtYW5yb3Blbik8L2VtPi48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuNC4gLSBPa3RvYmVyLCAyMDA1PC9wPg0KPHA+TGEgdGlsbCBjb3VudC1wYXJhbWV0ZXJuIGYmb3VtbDtyIGF0dCBsaXN0YSBkZSBmJm91bWw7cnN0YSBYIHBvc3Rlcm5hLCBvY2ggbGEgdGlsbCAmcXVvdDtzdW1tYXJ5bGluayZxdW90OyBvY2ggJnF1b3Q7Y2F0ZWdvcnkmcXVvdDsgaSBtYWxsYXJuYSBmJm91bWw7ciB3ZXN0aXMuIEYmb3VtbDtyIGV4ZW1wZWwgb20gaHVyIGRlIGFudiZhdW1sO25kcywgJmFyaW5nO3RlcnN0JmF1bWw7bGwgZGluYSBtYWxsYXIgdGlsbCBzdGFuZGFyZC48L3A+PC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjUuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5MYSB0aWxsIGUtcG9zdG5vdGlmaWVyaW5nIG9jaCBmaXhhZGUgbiZhcmluZztncmEgYnVnZ2FyPC9wPg0KPC9saT4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjYuIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQo8cD5MYSB0aWxsIGVuIEFQSS1mdW5rdGlvbiBvY2ggZml4YWRlIG4mYXJpbmc7Z3JhIHJlZGlyZWN0aW9uLWdyZWpvcjwvcD4NCjwvbGk+DQo8bGk+DQo8cD5WZXJzaW9uIDEuMS43LiAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KPHA+RmxlciBBUEktZnVua3Rpb25lciBvY2ggaWdub3JlcmFyIG51IGRvdC1maWxlciB2aWQgc2Nhbm5pbmcuIEUtcG9zdG5vdGlmaWVyaW5nICZhdW1sO3IgbnUgdGlsbGFndC48L3A+DQo8L2xpPg0KPGxpPg0KPHA+VmVyc2lvbiAxLjEuOC4gLSBKYW51YXJpLCAyMDA2PC9wPg0KPHA+RiZvdW1sO3JiJmF1bWw7dHRyYWRlIGRva3VtZW50YXRpb25lbiBtZWQgQXBhY2hlLSBvY2ggUEhQLWtvbmZpZ3VyYXRpb24uPC9wPg0KPHA+JkF1bWw7bmRyYWRlIHImYXVtbDt0dGlnaGV0ZXJuYSwgcyZhcmluZzsgYXR0IGRlICZhdW1sO3IgbWVyIHVwcGRlbGFkZS48L3A+DQo8cD5MYSB0aWxsIG4mYXJpbmc7Z3JhIGtvbW1lbnRhcmVyIG9jaCBmbGVyIG9yZCB0aWxsIGthdGVnb3JpLSBvY2ggdXBwbGFkZG5pbmdzZm9ybXVsJmF1bWw7cmVuIGkgYWRtaW5pc3RyYXRpb25lbjwvcD4NCjxwPkxhIHRpbGwgJnF1b3Q7cmFuZG9tJnF1b3Q7IChzbHVtcHZpcykgc29ydGVyaW5nc29yZG5pbmc8L3A+DQo8L2xpPg0KPHA+VmVyc2lvbiAxLjEuOS4gLSBKYW51YXJpLCAyMDA2PC9wPg0KPHA+KiBMYSB0aWxsIG0mb3VtbDtqbGlnaGV0ZW4gYXR0IGxhZGRhIHVwcCBlbiB0dW1uYWdlbGJpbGQ8L3A+DQo8cD4qIEImYXVtbDt0dHJlIGdyYW5za25pbmc8L3A+DQo8cD4qIFhNTCB0aWxsYWd0IHRpbGwgc3RhbmRhcmRmaWx0eXBlcm5hIChlbmJhcnQgdmlkIG55IGluc3RhbGxhdGlvbik8L3A+DQo8cD4qIExhIHRpbGwgZXR0IGJla3ImYXVtbDtmdGVsc2VtZWRkZWxhbmRlIGYmb3VtbDtyIGF0dCAmYXJpbmc7dGVyc3QmYXVtbDtsbGEgc3RhbmRhcmRrbmFwcGFybmEgZiZvdW1sO3IgbWFsbHNpZG9ybmEuPC9wPg0KPHA+KiBMYSB0aWxsIHBhcmFtZXRlcm4gZmlsX2V4dGVuc2lvbnMgZiZvdW1sO3IgdXBwbGFkZG5pbmdzZm9ydWwmYXVtbDtyZXQ8L3A+DQo8cD4qIERlbiB2YWxkYSBrYXRlZ29yaW4gaSBmaWxmaWx0cmV0IGZhc3RuYXIgKGcmYXJpbmc7ciBpbnRlIHRpbGxiYWthIHRpbGwgZiZvdW1sO3JzdGEga2F0ZWdvcmluKS4NCjxwPiogTGEgdGlsbCBlbiBpbnN0JmF1bWw7bGxuaW5nIGYmb3VtbDtyIGF0dCBhbGx0aWQgbCZhdW1sO2dnYSB0aWxsIGZpbHRpbGwmYXVtbDtnZyAoc3RhbmRhcmQgJmF1bWw7ciBvbiAocCZhcmluZzspICk8L3A+DQo8cD4qIExhIHRpbGwgZW4gbCZhdW1sO25rIHRpbGwgYXR0IHJlZGlnZXJhIHNpZGFuLCBpIG5hbW5rb2x1bW5lbiBpIGxpc3RhbiAmb3VtbDt2ZXIgZmlsZXIuPC9wPg0KPHA+KiBNaW5kcmUgJmF1bWw7bmRyaW5nYXIgaSBsYXlvdXRlbiBvY2ggdGV4dGVuIGYmb3VtbDtyIGF0dCBnJm91bWw7cmEgZGV0IHR5ZGxpZ2FyZS48L3A+DQo8cD4qIExBIHRpbGwgZG93bmxvYWRfdXJsIHNvbSBlbiBzbWFydHl0YWdnIHNvbSBrYW4gYW52JmF1bWw7bmRhcyBpIG1hbGxlbjwvcD4NCjxsaT4NCjxwPlZlcnNpb24gMS4xLjEwLiAtIEZlYnJ1YXJpLCAyMDA2PC9wPg0KPHA+KiBTYW1tYW5mYXR0bmluZyAmYXVtbDtyIG51IGZpbG5hbW5ldCAodXRhbiBmaWx0aWxsJmF1bWw7Z2cpIG9tIGluZ2VuIHNhbW1hbmZhdHRuaW5nIGhhciBzcGVjaWZpY2VyYXRzPC9wPg0KPHA+KiBOdSBrb3JyZWt0IGJldGVlbmRlIG9tIHR1bW5hZ2Vsc3RpbGwmYXVtbDtnZ2V0IGludGUgZmlubnMgaSBsaXN0YW4gJm91bWw7dmVyIGFjY2VwdGVyYWRlIGZpbHRpbGwmYXVtbDtnZzwvcD4NCjxwPiogVmlzYXIgaW50ZSBsJmF1bWw7bmdyZSBuJmFyaW5nO2dvdCBpbm5laCZhcmluZztsbCBpIGZpbHRhYmJlbiBvbSBpbnRlIG4mYXJpbmc7Z29uIGthdGVnb3JpIGhhciBkZWZpbmllcmF0czwvcD4NCjxwPiogVmlzYXIgZW4gbCZhdW1sO25rIHAmYXJpbmc7IGZlbHNpZGFuIHNvbSB0YXIgZGlnIHRpbGxiYWthIHRpbGwgYWRtaW5pc3RyYXRpb25zcGFuZWxlbjwvcD4NCjxwPiogTSZvdW1sO2psaWd0IGF0dCBlcnMmYXVtbDt0dGEgdXBwbGFkZGFkZSBmaWxlcjwvcD4NCjwvbGk+DQo8L3VsPic7CiRsYW5nWydkYXRlJ10gPSAnRGF0dW0nOwokbGFuZ1snZGF0ZXVwbG9hZGVkJ10gPSAnRGF0dW0gdXBwbGFkZGFkJzsKJGxhbmdbJ2RlZmF1bHQnXSA9ICdTdGFuZGFyZGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydkZWxldGUnXSA9ICdUYSBib3J0JzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnQmVza3Jpdm5pbmcnOwokbGFuZ1snZGVzdG5hbWUnXSA9ICdMYWRkYSB1cHAgc29tJzsKJGxhbmdbJ2RldGFpbF90ZW1wbGF0ZSddID0gJ0RldGFsam1hbGwnOwokbGFuZ1snZG93bmxvYWRlZCddID0gJ0ZpbGVuICVzICZhdW1sO3IgbmVkbGFkZGFkLic7CiRsYW5nWydkb3dubG9hZHMnXSA9ICdOZWRsYWRkbmluZ2FyJzsKJGxhbmdbJ2VkaXQnXSA9ICdSZWRpZ2VyYSc7CiRsYW5nWydlZGl0Y2F0ZWdvcnknXSA9ICdSZWRpZ2VyYSBrYXRlZ29yaSc7CiRsYW5nWydlZGl0dXBsb2FkJ10gPSAnUmVkaWdlcmEgdXBwbGFkZG5pbmcnOwokbGFuZ1snZXJyb3InXSA9ICdGZWwhJzsKJGxhbmdbJ2Vycm9yX3BhdGhpbnVzZSddID0gJ0VuIGthdGVnb3JpIG1lZCBkZW4gcyZvdW1sO2t2JmF1bWw7Z2VuIGZpbm5zIHJlZGFuJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRmVsOiBLYXRlZ29yaW4gZmlubnMgcmVkYW4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlub3RlbXB0eSddID0gJ0ZlbCEgS2FuIGludGUgdGEgYm9ydCBlbiBrYXRlZ29yaSBzb20gaW50ZSAmYXVtbDtyIHRvbSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeW5vdGZvdW5kJ10gPSAnRmVsOiBLYXRlZ29yaW4gaGl0dGFzIGludGUhJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdGZWw6IERhdGFiYXNmZWwhJzsKJGxhbmdbJ2Vycm9yX2VtcHR5Y2F0ZWdvcnknXSA9ICdGZWw6IFRvbSBrYXRlZ29yaSEnOwokbGFuZ1snZXJyb3JfZW1wdHlwYXRoJ10gPSAnRmVsOiBUb20gcyZvdW1sO2t2JmF1bWw7ZyEnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZlbCEgRW4gZmlsIG1lZCBkZXR0YSBuYW1uZXQgZmlubnMgcmVkYW4uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVub3Rmb3VuZCddID0gJ0ZlbCEgRmlsZW4gJXMgaGl0dGFkZXMgaW50ZS4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnRmVsOiBPdGlsbHImYXVtbDtja2xpZ2EgcGFyYW1ldHJhciBhbmdpdm5hIGYmb3VtbDtyIG1vZHVsZW4hJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRhdXRob3InXSA9ICdGZWw6IEZlbGFrdGlnIChlbGxlciB0b20pIGYmb3VtbDtyZmF0dGFyZS4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNhdGVnb3J5J10gPSAnRmVsOiBGZWxha3RpZyAoZWxsZXIgdG9tKSBrYXRlZ29yaS4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGRlc2NyaXB0aW9uJ10gPSAnRmVsOiBGZWxha3RpZyAoZWxsZXIgdG9tKSBiZXNrcml2bmluZy4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGUnXSA9ICdGZWw6IEZlbGFrdGlndCAoZWxsZXIgdG9tdCkgZmlsbmFtbi4nOwokbGFuZ1snZXJyb3JfaW52YWxpZHVwbG9hZGZpbGVuYW1lJ10gPSAnRmVsOiBGaWxlciBtZWQgZGV0IG5hbW5ldCAodHJvbGlnZW4gbWVkIGRldCBmaWx0aWxsJmF1bWw7Z2dldCkgJmF1bWw7ciBpbnRlIHRpbGwmYXJpbmc7dG5hLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXBsb2FkaWQnXSA9ICdGZWw6IE9naWx0aWd0IHVwcGxhZGRuaW5ncy1pZCc7CiRsYW5nWydlcnJvcl9ub2ZpbGVzJ10gPSAnRmVsOiBJbmdhIG1hdGNoYW5kZSBmaWxlciEnOwokbGFuZ1snZmlsZXMnXSA9ICdGaWxlcic7CiRsYW5nWydmaXhtZSddID0gJ0ZpeGEgbWVsbGFuc2xhZyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdVcHBsYWRkbmluZyc7CiRsYW5nWydoZWxwJ10gPSAnPGgzPlZhZCBnJm91bWw7ciBkZW4gaCZhdW1sO3IgbW9kdWxlbj88L2gzPg0KPHA+RGV0ICZhdW1sO3IgZW4gbW9kdWwgc29tIGcmb3VtbDtyIGRldCBtJm91bWw7amxpZ3QgYXR0IGxhZGRhIHVwcCBvY2ggbGFkZGEgbmVyIGZpbGVyIHRpbGwgb2NoIGZyJmFyaW5nO24gZGluIHdlYmJzaWRhLiBEZW4gaCZhcmluZztsbGVyIHJlZGEgcCZhcmluZzsgdmVtIHNvbSBsYWRkYWRlIHVwcCBlbiBmaWwgb2NoIHZlbSBzb20gaGFyIGxhZGRhdCBuZXIgZGVuLg0KRGVzc3V0b20ga2FuIGR1IGRlbGEgaW4gZmlsZXIgaSBrYXRlZ29yaWVyIG9jaCBoYW50ZXJhIGZpbGVybmEgc29tICZhdW1sO3IgdXBwbGFkZGFkZSBwJmFyaW5nOyBzYW1tYSBzJmF1bWw7dHQgc29tIGFsbGEgYWRtaW5pc3RyYXQmb3VtbDtyZXIgc2thIGt1bm5hIGcmb3VtbDtyYS48L3A+IA0KDQo8aDM+SHVyIGFudiZhdW1sO25kZXIgamFnIG1vZHVsZW4/PC9oMz4NCjxwPkYmb3VtbDtyIGF0dCBhbnYmYXVtbDtuZGEgZGVuIGgmYXVtbDtyIG1vZHVsZW4gLSBhbGx0cyZhcmluZzsgYXR0IHRpbGwmYXJpbmc7dGEgYW52JmF1bWw7bmRhcmUgYXR0IGxhZGRhIHVwcCBmaWxlciB0aWxsIGRpbiB3ZWJic2lkYSAtIG0mYXJpbmc7c3RlIGR1IGluc3RhbGxlcmEgbW9kdWxlbiBvY2ggZCZhdW1sO3JlZnRlciBza2FwYSBlbiBlbGxlciBmbGVyYSBrYXRlZ29yaWVyL21hcHBhcg0Kc29tIGRlIHVwcGxhZGRhZGUgZmlsZXJuYSBrYW4gbCZhdW1sO2dnYXMgaSAoaSBtb2R1bGluc3QmYXVtbDtsbG5pbmdhcm5hKS4gTCZhdW1sO2dnIHNlZGFuIHRpbGwgZW4gdGFnZyBwJmFyaW5nOyBlbiBzaWRhIGVsbGVyIG1hbGwgdW5nZWYmYXVtbDtyIHMmYXJpbmc7IGgmYXVtbDtyIHtjbXNfbW9kdWxlIG1vZHVsZT0mcXVvdDtVcGxvYWRzJnF1b3Q7IGNhdGVnb3J5PSZxdW90O2Vua2F0ZWdvcmkmcXVvdDsgbW9kZT0mcXVvdDtzdGlsJnF1b3Q7fS4gDQpTdGlsZW4gc2thIGQmYXJpbmc7IG1hdGNoYSBuJmFyaW5nO2dvbiBhdiBzdGlsYXJuYSBuZWRhbi4gVmFkIHNvbSBza3JpdnMgdXQgc2tpbGplciBzaWcgYmVyb2VuZGUgcCZhcmluZzsgdmlsa2VuIHN0aWwgZHUgdiZhdW1sO2xqZXIuPC9wPg0KDQo8cD5EZW4gaCZhdW1sO3IgbW9kdWxlbiBrYW4gYW52JmF1bWw7bmRhIFVzZXJJRC1tb2R1bGVuICh2YWxmcml0dCkgZiZvdW1sO3IgYXR0IGYmYXJpbmc7IGluZm9ybWF0aW9uIG9tIGFsbGEgaW5sb2dnYWRlIGFudiZhdW1sO25kYXJlIGYmb3VtbDtyIGF0dCBkZWx2aXMgZnlsbGEgaSBmb3JtdWwmYXVtbDtyZXQgbiZhdW1sO3IgZmlsZXIgbGFkZGFzIHVwcDs8L3A+DQoNCjxoMz5SJmF1bWw7dHRpZ2hldGVyPC9oMz4NCjx1bD4NCjxsaT48ZW0+TWFuYWdlIFVwbG9hZHM8L2VtPiAtIGJlaCZvdW1sO3ZzIGYmb3VtbDtyIGF0dCBoYW50ZXJhIGthdGVnb3JpZXIgb2NoIGRlc3MgZmlsZXIuPC9saT4NCjxsaT48ZW0+TW9kaWZ5IFRlbXBsYXRlczwvZW0+IC0gYmVoJm91bWw7dnMgZiZvdW1sO3IgYXR0ICZhdW1sO25kcmEgbiZhcmluZztnb24gYXYgbWFsbGFybmEuPC9saT4NCjxsaT48ZW0+TW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXM8L2VtPiAtIGJlaCZvdW1sO3ZzIGYmb3VtbDtyIGF0dCBmJm91bWw7ciBhdHQgJmF1bWw7ZG5yYSBmaWxpbnN0JmF1bWw7bGxuaW5nYXIuPC9saT4NCjwvdWw+DQoNCjxoMz5FcG9zdDwvaDM+DQo8cD5EZW4gaCZhdW1sO3IgbW9kdWxlbiBrYW4gc2tpY2thIGUtcG9zdCBuJmF1bWw7ciBlbiBmaWwgaGFyIGxhZGRhdHMgdXBwIChzZSB0YWJiZW4gSW5zdCZhdW1sO2xsbmluZ2FyKS4gTWVuIGYmb3VtbDtyIGF0dCBnJm91bWw7cmEgZGV0dGEga3ImYXVtbDt2cyBhdHQgbW9kdWxlbiA8c3Ryb25nPkNNU01haWxlcjwvc3Ryb25nPiBoYXIgaW5zdGFsbGVyYXRzIG9jaCBrb25maWd1cmVyYXRzLiBEZXR0YSAmYXVtbDtyIDxlbT52YWxmcml0dDwvZW0+IG9jaCBvbSBDTVNNYWlsZXItbW9kdWxlbiBpbnRlICZhdW1sO3IgaW5zdGFsbGVyYWQgdmlzYXMgaW5nZW50aW5nIGYmb3VtbDtyIGFudiZhdW1sO25kYXJlbiwgYmFyYSBldHQgbG9nZ21lZGRlbGFuZGUga29tbWVyIGF0dCBsJmF1bWw7Z2dhcyB0aWxsIGFkbWluLWxvZ2dlbi48L3A+DQoNCjxoMz5TeXN0ZW1pbnN0JmF1bWw7bGxuaW5nYXI8L2gzPg0KPHA+PHN0cm9uZz5Ob3RlcmE6PC9zdHJvbmc+IERlbiBoJmF1bWw7ciBtb2R1bGVuIGtvbW1lciBpbnRlIHJ1bnQgZWxsZXIgZiZvdW1sO3JiaSBuJmFyaW5nO2dyYSBmaWxzdG9ybGVrc2JlZ3ImYXVtbDtuc25pbmdhciBpIHBocC4gRGVuIGZ1bmdlcmFyIHRpbGxzYW1tYW5zIG1lZCBkZW0uIA0KRCZhdW1sO3JmJm91bWw7ciBtJmFyaW5nO3N0ZSBkdSBldmVudHVlbGx0ICZhdW1sO25kcmEgaSBkaW4gcGhwLmluaS1maWwgZiZvdW1sO3IgYXR0IHRpbGwmYXJpbmc7dGEgdXBwbGFkZG5pbmcgYXYgZmlsZXIgcyZhcmluZzsgc3RvcmEgc29tIGR1IGhhciBzdCZhdW1sO2xsdCBpbiBpIGluc3QmYXVtbDtsbG5pbmdhcm5hIGYmb3VtbDtyIHVwcGxhZGRuaW5nc21vZHVsZW4uPC9wPg0KDQo8aDM+Tm90IGYmb3VtbDtyIEFwYWNoZTwvaDM+DQo8cD5GJm91bWw7ciBhdHQgdGlsbCZhcmluZzt0YSBzdCZvdW1sO3JyZSBmaWx1cHBsYWRkbmluZ2FyIGthbiBkdSBiZWgmb3VtbDt2YSAmYXVtbDtuZHJhIHBhcmFtZXRlcm4gdXBsb2FkX21heF9maWxlc2l6ZSBpIGRpbiBwaHAuaW5pLWZpbC4gRGVzc3V0b20sIHBhcmFtZXRlcm4gTGltaXRSZXF1ZXN0Qm9keSBpbiBkaW4gQXBhY2hlLWtvbmZpZ3VyYXRpb24ga2FuIGJlaCZvdW1sO3ZhICZhdW1sO25kcmFzIGYmb3VtbDtyIGF0dCBtYXRjaGEgcGFyYW1ldGVybiB1cGxvYWRfbWF4X2ZpbGVzaXplPC9wPg0KPHA+Tm90ZXJhOiBwYXJhbWV0ZXJuIHVwbG9hZF9tYXhfZmlsZXNpemUga2FuIHNwZWNpZmljZXJhcyBpIGJ5dGVzLCBraWxvYnl0ZXMgZWxsZXIgbWVnYWJ5dGVzLiBQYXJhbWV0ZXJuYSBMaW1pdFJlcXVlc3RCb2R5IGQmYXVtbDtyZW1vdCwga2FuIGJhcmEgc3BlY2lmaWNlcmFzIGkgYnl0ZXM8L3A+JzsKJGxhbmdbJ2lkJ10gPSAnSWQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx2ZXJzaW9uICVzIGluc3RhbGxlcmFkLic7CiRsYW5nWydpcF9hZGRyZXNzJ10gPSAnSVAtYWRkcmVzcyc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VuIG1vZHVsIHNvbSBsJmFyaW5nO3RlciBhbnYmYXVtbDtuZGFyZSBsYWRkYSB1cHAgZmlsZXIgb2NoIGwmYXJpbmc7dGVyIGRpZyBoYW50ZXJhIGRlbS4nOwokbGFuZ1snbmFtZSddID0gJ05hbW4nOwokbGFuZ1sncmVuYW1lbWVzc2FnZSddID0gJyZBdW1sO25kcmEgbmFtbmV0IGgmYXVtbDtyIGYmb3VtbDtyIGF0dCBnJm91bWw7cmEgZW4gbmFtbiZhdW1sO25kcmluZyc7CiRsYW5nWydwYXRoJ10gPSAnUyZvdW1sO2t2JmF1bWw7Zyc7CiRsYW5nWydwYXRobWVzc2FnZSddID0gJyZBdW1sO25kcmEga2F0ZWdvcmluIGgmYXVtbDtyIGYmb3VtbDtyIGF0dCBmbHl0dGEgZmlsZW4gdGlsbCBlbiBhbm5hbiBtYXBwJzsKJGxhbmdbJ3BhdGhpbnVwbG9hZHMnXSA9ICcocmVsYXRpdiB0aWxsIHVwcGxhZGRuaW5nc21hcHBlbiknOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNZWRkZWxhbmRlIGVmdGVyIGluc3RhbGxhdGlvbiwgdC5leC4gR2wmb3VtbDttIGludGUgYXR0IHN0JmF1bWw7bGxhIGluIHImYXVtbDt0dGlnaGV0ZXIgZiZvdW1sO3IgJnF1b3Q7TWFuYWdlIFVwbG9hZHMmcXVvdDsgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkZW4gaCZhdW1sO3IgbW9kdWxlbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01lZGRlbGFuZGUgZWZ0ZXIgYXZpbnN0YWxsYXRpb24sIHQuZXguICZxdW90O1NraXQgb2NrcyZhcmluZzshIEJlc2VncmFkIGlnZW4hJnF1b3Q7JzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnSW5zdCZhdW1sO2xsbmluZ2FyJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ01vZHVsaW5zdCZhdW1sO2xsbmluZ2FyIHVwcGRhdGVyYWRlLic7CiRsYW5nWydwcm9tcHRfY2F0ZWdvcnlkZXNjJ10gPSAnQmVza3Jpdm5pbmcnOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5bGlzdGFibGUnXSA9ICdGaWxlcm5hIGkgZGVuIGgmYXVtbDtyIG1hcHBlbiBrYW4gbGlzdGFzJzsKJGxhbmdbJ3Byb21wdF9jYXRlZ29yeW5hbWUnXSA9ICdLYXRlZ29yaW5hbW4nOwokbGFuZ1sncHJvbXB0X2NhdGVnb3J5cGF0aCddID0gJ1NlcnZlci1zJm91bWw7a3YmYXVtbDtnJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVkaXJlY3RvcnknXSA9ICdUYSBib3J0IGthdGVnb3JpbWFwcD8nOwokbGFuZ1sncHJvbXB0X21heF91cGxvYWRzaXplJ10gPSAnTWF4aW1hbCBmaWxzdG9ybGVrIHRpbGwmYXJpbmc7dGVuIChLYiknOwokbGFuZ1sncHJvbXB0X3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdUaWxsJmFyaW5nO3RuYSBmaWx0aWxsJmF1bWw7Z2cgZiZvdW1sO3IgdXBwbGFkZGFkZSBmaWxlcic7CiRsYW5nWydzY2FuJ10gPSAnU2Nhbm5hJzsKJGxhbmdbJ3NlbGVjdGNhdGVnb3J5J10gPSAnViZhdW1sO2xqIGthdGVnb3JpJzsKJGxhbmdbJ3NpemUnXSA9ICdTdG9ybGVrJzsKJGxhbmdbJ3NpemVrYiddID0gJ1N0b3JsZWsgKEtiKSc7CiRsYW5nWydzdWJtaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbCc7CiRsYW5nWydzdW1tYXJ5X3RlbXBsYXRlJ10gPSAnU2FtbWFuZmF0dG5pbmdzbWFsbCc7CiRsYW5nWydzdW1tYXJ5J10gPSAnU2FtbWFuZmF0dG5pbmcnOwokbGFuZ1sndGl0bGVfYWRtaW5fcGFuZWwnXSA9ICdVcHBsYWRkbmluZ3Ntb2R1bCc7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdBZG1pbi1wYW5lbCBmJm91bWw7ciBtb2R1bCc7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdJbnN0JmF1bWw7bGxuaW5nYXIgZiZvdW1sO3IgbW9kdWwnOwokbGFuZ1sndGl0bGVfc2luZ19sb3VkbHknXSA9ICdTanVuZyBoJm91bWw7Z3Q/JzsKJGxhbmdbJ3RpdGxlX3N1Ym5ldF9leGNsdXNpb25zJ10gPSAnRXhrbHVkZXJhIHN1Ym4mYXVtbDt0IGZyJmFyaW5nO24gc3RhdGlzdGlrJzsKJGxhbmdbJ3RpdGxlX3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA9ICdUaWxsJmFyaW5nO3RuYSBmaWx0aWxsJmF1bWw7Z2cnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCBhdmluc3RhbGxlcmFkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsIHVwcGdyYWRlcmFkIHRpbGwgdmVyc2lvbiAlcy4nOwokbGFuZ1sndXBsb2FkJ10gPSAnTGFkZGEgdXBwJzsKJGxhbmdbJ3VwbG9hZGVkJ10gPSAnRmlsZW4gJXMgJmF1bWw7ciB1cHBsYWRkYWQuJzsKJGxhbmdbJ3JlcGxhY2VkJ10gPSAnRmlsZW4gJXMgZXJzYXR0ZXMgYXYgJXMuJzsKJGxhbmdbJ2RlbGV0ZWQnXSA9ICdGaWxlbiAlcyAmYXVtbDtyIGJvcnR0YWdlbi4nOwokbGFuZ1sndXBsb2FkZm9ybV90ZW1wbGF0ZSddID0gJ1VwcGxhZGRuaW5nc21hbGwnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdBbnYmYXVtbDtuZGFybmFtbic7CiRsYW5nWyd3YXJuaW5nX2RlbGV0ZWNhdGVnb3J5J10gPSAnVkFSTklORzogVmFyIGYmb3VtbDtyc2lrdGlnIG4mYXVtbDtyIGR1IHRhciBib3J0IGthdGVnb3JpZXIuIEZpbGVyIGthbiBnJmFyaW5nO3IgZiZvdW1sO3Jsb3JhZGUnOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+ViZhdW1sO2xrb21tZW4gdGlsbCBhZG1pbi1zZWt0aW9uZW4gZiZvdW1sO3IgVXBwbGFkZG5pbmdzbW9kdWxlbi4gSCZhdW1sO3Igc2t1bGxlIGRldCBzJmF1bWw7a2VydCBzdCZhcmluZzsgbiZhcmluZztnb3QgYW5uYXQgb20gbW9kdWxlbiBmYWt0aXNrdCBnam9yZGUgbiZhcmluZztnb3QuPC9wPic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNDk2MTkxMzIuMTguOS51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vYWRtaW4vYXBwcm92ZS1wZW5kaW5nLnBocHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My41NjYzOTcwMzAuMTE0NzU1NTA5OS4xMTQ5NjE5MTMyLjExNDk3MDAwMzguMTknOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkgKCRkYik7CgogICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAkZmxkcyA9ICJ1cGxvYWRfaWQgSSBLRVksCiAgICAgICAgICAgICB1cGxvYWRfY2F0ZWdvcnlfaWQgSSwKICAgICAgICAgICAgIHVwbG9hZF9uYW1lIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9hdXRob3IgQygyNTUpLAogICAgICAgICAgICAgdXBsb2FkX3N1bW1hcnkgQygyNTUpLCAKICAgICAgICAgICAgIHVwbG9hZF9kZXNjcmlwdGlvbiBYLAogICAgICAgICAgICAgdXBsb2FkX2lwIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9zaXplIEksCiAgICAgICAgICAgICB1cGxvYWRfZGF0ZSBEVCwKICAgICAgICAgICAgIHVwbG9hZF9rZXkgIEMoMjU1KQoJICAgICI7CgogICAgLy8gY3JlYXRlIGl0LiBUaGlzIHNob3VsZCBkbyBlcnJvciBjaGVja2luZywgYnV0IEknbSBhIGxhenkgc29kLgogICAgJHRhYm9wdGFycmF5ID0gYXJyYXkgKCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwgKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMiLAoJCQkJICAgICAgICRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSAoJHNxbGFycmF5KTsKICAgIAogICAgLy8gYSB0YWJsZSBmb3IgZG93bmxvYWRzCiAgICAkZmxkcyA9ICJkb3dubG9hZF9pZCBJIEtFWSwKIAkgICAgIGZpbGVfaWQgICAgIEksIAoJICAgICBkb3dubG9hZF9kYXRlIERULAogICAgICAgICAgICAgZG93bmxvYWRfaXAgICBDKDI1NSksCiAgICAgICAgICAgICBkb3dubG9hZF91c2VyIEMoMjU1KQoJICAgICI7CgogICAgLy8gY3JlYXRlIGl0LiBUaGlzIHNob3VsZCBkbyBlcnJvciBjaGVja2luZywgYnV0IEknbSBhIGxhenkgc29kLgogICAgJHRhYm9wdGFycmF5ID0gYXJyYXkgKCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CiAgICAkc3FsYXJyYXkgPQogICAgICAkZGljdC0+Q3JlYXRlVGFibGVTUUwgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzX2Rvd25sb2FkcyIsCgkJCSAgICAgJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5ICgkc3FsYXJyYXkpOwoKICAgIC8vIGEgdGFibGUgZm9yIGNhdGVnb3JpZXMKICAgICRmbGRzID0gInVwbG9hZF9jYXRlZ29yeV9pZCBJIEtFWSwKCSAgICAgdXBsb2FkX2NhdGVnb3J5X25hbWUgQygyNTUpLAoJICAgICB1cGxvYWRfY2F0ZWdvcnlfZGVzY3JpcHRpb24gWCwKICAgICAgICAgICAgIHVwbG9hZF9jYXRlZ29yeV9wYXRoIEMoMjU1KSwKCSAgICAgdXBsb2FkX2NhdGVnb3J5X2xpc3RhYmxlIEkKCSAgICAiOwoKICAgIC8vIGNyZWF0ZSBpdC4gVGhpcyBzaG91bGQgZG8gZXJyb3IgY2hlY2tpbmcsIGJ1dCBJJ20gYSBsYXp5IHNvZC4KICAgICR0YWJvcHRhcnJheSA9IGFycmF5ICgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwogICAgJHNxbGFycmF5ID0KICAgICAgJGRpY3QtPkNyZWF0ZVRhYmxlU1FMIChjbXNfZGJfcHJlZml4ICgpLiJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIiwKCQkJICAgICAkZmxkcywgJHRhYm9wdGFycmF5KTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkgKCRzcWxhcnJheSk7CiAgICAKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkgKCRzcWxhcnJheSk7CiAgICAvLyBjcmVhdGUgYSBzZXF1ZW5jZQogICAgJGRiLT5DcmVhdGVTZXF1ZW5jZSAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfc2VxIik7CiAgICAKICAgIC8vIGFuZCBhbm90aGVyIG9uZQogICAgJGRiLT5DcmVhdGVTZXF1ZW5jZSAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllc19zZXEiKTsKCiAgICAvLyBhbmQgYSB0aGlyZCBvbmUKICAgICRkYi0+Q3JlYXRlU2VxdWVuY2UgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzX2Rvd25sb2Fkc19zZXEiKTsKCiAgICAvLyBjcmVhdGUgYSBwZXJtaXNzaW9uCiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbiAoJ01hbmFnZSBVcGxvYWRzJywgJ01hbmFnZSBVcGxvYWRzJyk7CgogICAgLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCJtYXhfdXBsb2Fkc2l6ZSIsIDEwMDAwMDApOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCJ2YWxpZF91cGxvYWRleHRlbnNpb25zIiwKCQkJICAiZ2lmLGpwZyxKUEVHLGJtcCx3bWYsd21hLHdtdixtcGcsemlwLHRhcixneixiejIsbXAzLHdhdixhdSxvZ2cseG1sIik7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSAoInN1Ym5ldF9leGNsdXNpb25zIiwgIiIgKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlICgnY3JlYXRlX2R1bW15X2luZGV4X2h0bWwnLCAxKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlICgnc2VuZF91cGxvYWRfbm90aWZpY2F0aW9uc190bycsJycpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCdyZXF1aXJlZmlsZW5hbWVfZXh0ZW5zaW9ucycsMSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSAoJ3VzZXJ0YWdfb251cGxvYWQnLCcnKTsKICAgIAogICAgLy8gU2V0dXAgZm9ybSB0ZW1wbGF0ZQogICAgJHRoaXMtPlNldFRlbXBsYXRlICgndXBsb2FkZm9ybV9kZWZhdWx0JywgJHRoaXMtPmRmbHRfdXBsb2FkZm9ybXRlbXBsYXRlKTsKICAgIC8vIFNldHVwIHN1bW1hcnkgdGVtcGxhdGUKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSAoJ3N1bW1hcnlycHRfZGVmYXVsdCcsICR0aGlzLT5kZmx0X3N1bW1hcnl0ZW1wbGF0ZSk7CiAgICAvLyBTZXR1cCBkZXRhaWwgdGVtcGxhdGUKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSAoJ2RldGFpbHJwdF9kZWZhdWx0JywgJHRoaXMtPmRmbHRfZGV0YWlsdGVtcGxhdGUpOwogICAgLy8gdGVtcGxhdGUgdXNlZCBmb3IgZW1haWwgbm90aWZpY2F0aW9ucwogICAgJHRoaXMtPlNldFRlbXBsYXRlKCAndXBsb2FkX2VtYWlsdGVtcGxhdGUnLCAkdGhpcy0+ZGZsdF9lbWFpbG5vdGlmeXRlbXBsYXRlICk7CgogICAgLy8gRXZlbnQgaGFuZGxlcnMKICAgICR0aGlzLT5DcmVhdGVFdmVudCggIk9uVXBsb2FkIiApOwogICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAiT25SZW1vdmUiICk7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICJPbkRvd25sb2FkIiApOwogICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAiT25DcmVhdGVDYXRlZ29yeSIgKTsKICAgICR0aGlzLT5DcmVhdGVFdmVudCggIk9uRGVsZXRlQ2F0ZWdvcnkiICk7CgogICAgLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiAgICAkdGhpcy0+QXVkaXQgKDAsICR0aGlzLT5MYW5nICgnZnJpZW5kbHluYW1lJyksCgkJICAkdGhpcy0+TGFuZyAoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uICgpKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgIC8vIHJlbW92ZSB0aGUgZGF0YWJhc2UgdGFibGUKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkgKCRkYik7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMIChjbXNfZGJfcHJlZml4ICgpLiJtb2R1bGVfdXBsb2FkcyIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSAoJHNxbGFycmF5KTsKCiAgICAvLyByZW1vdmUgdGhlIHNlcXVlbmNlCiAgICAkZGItPkRyb3BTZXF1ZW5jZSAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfc2VxIik7CgogICAgLy8gcmVtb3ZlIHRoZSBjYXRlZ29yeSB0YWJsZQogICAgJHNxbGFycmF5ID0KICAgICAgJGRpY3QtPkRyb3BUYWJsZVNRTCAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyIpOwoKICAgIC8vIHJlbW92ZSBpdCdzIHNlcXVlbmNlCiAgICAkZGItPkRyb3BTZXF1ZW5jZSAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllc19zZXEiKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkgKCRzcWxhcnJheSk7CgogICAgLy8gcmVtb3ZlIHRoZSBkb3dubG9hZHMgdGFibGUKICAgICRzcWxhcnJheSA9CiAgICAgICRkaWN0LT5Ecm9wVGFibGVTUUwgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzX2Rvd25sb2FkcyIpOwoKICAgIC8vIGFuZCBpdCdzIHNlcXVlbmNlCiAgICAkZGItPkRyb3BTZXF1ZW5jZSAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfZG93bmxvYWRzX3NlcSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSAoJHNxbGFycmF5KTsKCiAgICAvLyByZW1vdmUgdGhlIHBlcm1pc3Npb25zCiAgICAkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbiAoJ01hbmFnZSBVcGxvYWRzJyk7CgogICAgLy8gcmVtb3ZlIHRoZSBwcmVmZXJlbmNlCiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSAoIm1heF91cGxvYWRzaXplIik7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSAoInZhbGlkX3VwbG9hZGV4dGVuc2lvbnMiKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlICgic3VibmV0X2V4Y2x1c2lvbnMiKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlICgiY3JlYXRlX2R1bW15X2luZGV4X2h0bWwiKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlICgnc2VuZF91cGxvYWRfbm90aWZpY2F0aW9uc190bycpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UgKCdyZXF1aXJlZmlsZW5hbWVfZXh0ZW5zaW9ucycpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UgKCdjdXJyZW50X2NhdGVnb3J5Jyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSAoJ3VzZXJ0YWdfb251cGxvYWQnKTsKCiAgICAvLyByZW1vdmUgdGVtcGxhdGVzCiAgICAkdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKICAgIGZvcmVhY2goICR0ZW1wbGF0ZXMgYXMgJHRwbCApCiAgICAgIHsKCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkdHBsKTsKICAgICAgfQoKICAgIC8vIHJlbW92ZSBldmVudHMKICAgICR0aGlzLT5SZW1vdmVFdmVudCgiT25VcGxvYWQiICk7CiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoIk9uUmVtb3ZlIiApOwogICAgJHRoaXMtPlJlbW92ZUV2ZW50KCJPbkRvd25sb2FkIiApOwogICAgJHRoaXMtPlJlbW92ZUV2ZW50KCJPbkNyZWF0ZUNhdGVnb3J5IiApOwogICAgJHRoaXMtPlJlbW92ZUV2ZW50KCJPbkRlbGV0ZUNhdGVnb3J5IiApOwoKICAgIC8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwogICAgJHRoaXMtPkF1ZGl0ICgwLCAkdGhpcy0+TGFuZyAoJ2ZyaWVuZGx5bmFtZScpLAoJCSAgJHRoaXMtPkxhbmcgKCd1bmluc3RhbGxlZCcpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwogICAgc3dpdGNoKCAkb2xkdmVyc2lvbiApCiAgICAgIHsKICAgICAgY2FzZSAiMS4xLjAiOgogICAgICBjYXNlICIxLjEuMSI6CiAgICAgIGNhc2UgIjEuMS4yIjoKICAgICAgY2FzZSAiMS4xLjMiOgogICAgICBjYXNlICIxLjEuNCI6CiAgICAgIGNhc2UgIjEuMS41IjoKICAgICAgY2FzZSAiMS4xLjYiOgoJJHRoaXMtPlNldFByZWZlcmVuY2UgKCdzZW5kX3VwbG9hZF9ub3RpZmljYXRpb25zX3RvJywnJyk7CgkkdGhpcy0+U2V0VGVtcGxhdGUoICd1cGxvYWRfZW1haWx0ZW1wbGF0ZScsICR0aGlzLT5kZmx0X2VtYWlsbm90aWZ5dGVtcGxhdGUgKTsKCXJldHVybjsKICAgICAgfQoKICAgIHN3aXRjaCAoJG9sZHZlcnNpb24pCiAgICB7CiAgICBjYXNlICIxLjAiOgogICAgY2FzZSAiMS4wLjEiOgogICAgY2FzZSAiMS4wLjIiOgogICAgY2FzZSAiMS4wLjMiOgogICAgY2FzZSAiMS4wLjQiOgogICAgY2FzZSAiMS4wLjUiOgogICAgICB7CgkvLyB0aGVzZSB2ZXJzaW9ucyBkaWRuJ3QgaGF2ZSBhIHN1bW1hcnkgZmllbGQKCS8vIHNvIHdlIGNvbnZlcnQgdGhlIHNjaGVtYSBvZiB0aGUgdXBsb2FkcyB0YWJsZSB0byBoYXZlIGEgc3VtbWFyeSBmaWVsZAoJLy8gYW5kIGNvcHkgdGhlIG9sZCBkZXNjcmlwdGlvbiBpbnRvIHRoZSBuZXcgc3VtbWFyeSBmaWVsZC4KCSR0aGlzLT5fZml4VG9BZGp1c3RUYWJsZVN0cnVjdHVyZTEoKTsKICAgICAgfQogICAgY2FzZSAiMS4wLjYiOgogICAgICB7CgkvLyB0aGlzIG1vZHVsZSB3YXMgdmVyeSB2ZXJ5IG1lc3NlZCB1cC4KCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgY2FzZSAiMS4wLjciOgogICAgY2FzZSAiMS4wLjgiOgogICAgY2FzZSAiMS4wLjkiOgogICAgICB7CgkvLyB0aGVzZSB2ZXJzaW9ucyBoYWQgYSBzdW1tYXJ5IGZpZWxkIGJ1dCBpdCAibWF5IiBoYXZlIGJlZW4gcGxhY2VkIGFzCgkvLyB0aGUgbGFzdCBjb2x1bW4gZHVlIHRvIHVwZ3JhZGluZyBmcm9tIDEuMC42IG9yIGVhcmxpZXIKCS8vIHRoaXMgd2lsbCByZS1jcmVhdGUgdGhlIHRhYmxlIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhIHdpbGwgYmUgaW4KCS8vIHRoZSBjb3JyZWN0IG9yZGVyLgoJJHRoaXMtPl9maXhUb0FkanVzdFRhYmxlU3RydWN0dXJlMigpOwogICAgICB9CgogICAgY2FzZSAiMS4xLjEwIjoKICAgIGNhc2UgIjEuMS4xMSI6CiAgICBjYXNlICIxLjEuMTIiOgogICAgY2FzZSAiMS4xLjEzIjoKICAgICAgewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJ0YWdfb251cGxvYWQnLCcnKTsKICAgICAgfQoKICAgIGNhc2UgIjEuMi4wIjoKICAgICAgewoJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3VzZXJ0YWdfb25sdXBsb2FkJyk7CgkkdGhpcy0+Q3JlYXRlRXZlbnQoICJPblVwbG9hZCIgKTsKCSR0aGlzLT5DcmVhdGVFdmVudCggIk9uUmVtb3ZlIiApOwoJJHRoaXMtPkNyZWF0ZUV2ZW50KCAiT25Eb3dubG9hZCIgKTsKCSR0aGlzLT5DcmVhdGVFdmVudCggIk9uQ3JlYXRlQ2F0ZWdvcnkiICk7CgkkdGhpcy0+Q3JlYXRlRXZlbnQoICJPbkRlbGV0ZUNhdGVnb3J5IiApOwogICAgICB9CiAgICBjYXNlICcxLjIuMSc6CiAgICAgIHsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyIsCgkJCQkJInVwbG9hZF9rZXkgQygyNTUpIik7CgkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKICAgICAgfQogICAgY2FzZSAnMS4yLjInOgogICAgICB7CgkkdG1wbCA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgndXBsb2FkX3VwbG9hZGZvcm0nKTsKCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgndXBsb2FkX3VwbG9hZGZvcm0nKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgndXBsb2FkZm9ybV9kZWZhdWx0JywkdG1wbCk7CgoJJHRtcGwgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJ3VwbG9hZF9kaXNwbGF5c3VtbWFyeScpOwoJJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCd1cGxvYWRfZGlzcGxheXN1bW1hcnknKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnc3VtbWFyeXJwdF9kZWZhdWx0JywkdG1wbCk7CgoJJHRtcGwgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJ3VwbG9hZF9kaXNwbGF5ZGV0YWlsJyk7CgkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJ3VwbG9hZF9kaXNwbGF5ZGV0YWlsJyk7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2RldGFpbHJwdF9kZWZhdWx0JywkdG1wbCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBhbnl0aGluZyBwYXN0IGhlcmUgc2hvdWxkIGJlIGZpbmUuCiAgICByZXR1cm47Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Ke2Vsc2V9Cnskc3RhcnRmb3JtfQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NhdGVnb3J5bmFtZX08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5bmFtZX08YnIvPnskaW5mb19jYXRlZ29yeW5hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NhdGVnb3J5ZGVzY308L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5ZGVzY308YnIvPnskaW5mb19jYXRlZ29yeWRlc2N9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NhdGVnb3J5cGF0aH08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhdGVnb3J5cGF0aH08YnIvPnskaW5mb19jYXRlZ29yeXBhdGh9PGJyLz57JHBhdGhtZXNzYWdlfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jYXRlZ29yeWxpc3RhYmxlfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2F0ZWdvcnlsaXN0YWJsZX08YnIvPnskaW5mb19jYXRlZ29yeWxpc3RhYmxlfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHNjYW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGVuZGZvcm19CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPgo8cD57JGFkbWluX25hdn08L3A+Cnskd2VsY29tZV90ZXh0fQ==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9Cnskc3RhcnRmb3JtfQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfbWF4X3VwbG9hZHNpemV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X21heF91cGxvYWRzaXplfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdmFsaWRfdXBsb2FkZXh0ZW5zaW9uc306PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdmFsaWRfdXBsb2FkZXh0ZW5zaW9uc308L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX3N1Ym5ldF9leGNsdXNpb25zfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdWJuZXRfZXhjbHVzaW9uc308L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX2R1bW15X2luZGV4X2h0bWx9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2R1bW15X2luZGV4X2h0bWx9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9lbmZvcmNlZXh0ZW5zaW9uc306PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZW5mb3JjZWV4dGVuc2lvbnN9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9lbWFpbF9vbl91cGxvYWR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VtYWlsX29uX3VwbG9hZH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX3JlZGlyZWN0X29uX3VwbG9hZH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVkaXJlY3Rfb25fdXBsb2FkfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdXNlcnRhZ19vbnVwbG9hZH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXNlcnRhZ19vbnVwbG9hZH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/brieflist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQ0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD57JG5hbWV0ZXh0fTwvdGg+DQoJCQk8dGg+eyRhdXRob3J0ZXh0fTwvdGg+DQoJCSAgICAgICAgPHRoPnskZGF0ZXRleHR9PC90aD4NCgkJCTx0aD57JHNpemV0ZXh0fTwvdGg+CQ0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQoJCTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4NCgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+YXV0aG9yfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZGF0ZX08L3RkPg0KCQkJPHRkPnskZW50cnktPnNpemV9PC90ZD4NCgkJPC90cj4NCgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPg0KICAgICAgICAgICAgICAgCQk8dGQgY29sc3Bhbj0iNCI+eyRlbnRyeS0+ZGVzY3JpcHRpb259PC90ZD4gDQoJCTwvdHI+DQoJey9mb3JlYWNofQ0KCTwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/categorylist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9IENhdGVnb3JpZXMgRm91bmQ8L3A+PC9kaXY+DQp7aWYgJGl0ZW1jb3VudCA+IDB9DQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoIHdpZHRoPSIxNSUiPnskY2F0ZWdvcnl0ZXh0fTwvdGg+DQoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPg0KCQkJPHRoPnskcGF0aHRleHR9PC90aD4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0NCgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPg0KCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPg0KCQkJPHRkPnskZW50cnktPnBhdGh9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPg0KCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4NCgkJPC90cj4NCgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPiANCgkJCTx0ZD4mbmJzcDs8L3RkPg0KCQkJPHRkIGNvbHNwYW49IjQiPnskZW50cnktPmRlc2NyaXB0aW9ufTwvdGQ+DQoJCTwvdHI+DQoJIA0Key9mb3JlYWNofQ0KCTwvdGJvZHk+DQo8L3RhYmxlPg0Key9pZn0NCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkbGlua308L3A+PC9kaXY+DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/deletecategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8cD57JHdhcm5pbmdfZGVsZXRlY2F0ZWdvcnl9PC9wPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2RlbGV0ZWRpcmVjdG9yeX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGVsZXRlZGlyZWN0b3J5fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH08L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9eyRoaWRkZW59CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZW5hbWV9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRlbXBsYXRlbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGV9OjwvcD4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskdGVtcGxhdGV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskc3VibWl0fXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZm9ybWVuZH0K]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG5hbWVwcm9tcHR9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICAgPC90cj4Key9mb3JlYWNofQo8L3RhYmxlPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskbmV3dGVtcGxhdGVsaW5rfTwvcD4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/editupload.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Ke2Vsc2V9Cnskc3RhcnRmb3JtfQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VwbG9hZG5hbWV9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdXBsb2FkbmFtZX0mbmJzcDt7JGZpeH17JG5hbWVtZXNzYWdlfTwvcD4KICA8L2Rpdj4KICB7aWYgJHBpY190aHVtYm5haWx9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGh1bWJuYWlsfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGljX3RodW1ibmFpbH08L3A+CiAgPC9kaXY+CiAgey9pZn0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9tb3ZlY2F0ZWdvcnl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbW92ZWNhdGVnb3J5fSZuYnNwO3skcGF0aG1lc3NhZ2V9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VwbG9hZHNpemV9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0YV91cGxvYWRzaXplfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91cGxvYWRkYXRlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRhdGFfdXBsb2FkZGF0ZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdXBsb2FkYXV0aG9yfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3VwbG9hZGF1dGhvcn08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdXBsb2Fkc3VtbWFyeX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91cGxvYWRzdW1tYXJ5fTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91cGxvYWRkZXNjfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3VwbG9hZGRlc2N9PC9wPgogIDwvZGl2PgogIHtpZiAkaXRlbWNvdW50ID4gMH0KICAgIDxici8+CiAgICA8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogICAgICA8dGhlYWQ+CiAgICAgICAgPHRyPgoJICA8dGg+eyRkYXRldGV4dH08L3RoPgogICAgICAgICAgPHRoPnskaXB0ZXh0fTwvdGg+CgkgIDx0aD57JHVzZXJ0ZXh0fTwvdGg+CiAgICAgICAgPC90cj4KICAgICAgPC90aGVhZD4KICAgICAgPHRib2R5PgogICAgICB7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJICA8dGQ+eyRlbnRyeS0+ZGF0ZX08L3RkPgoJICA8dGQ+eyRlbnRyeS0+aXB9PC90ZD4KCSAgPHRkPnskZW50cnktPnVzZXJ9PC90ZD4KCTwvdHI+CiAgICAgIHsvZm9yZWFjaH0KICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CiAgey9pZn0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZW5kZm9ybX0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0Ke2lmICRsaW5rIT0nJ308cD57JGxpbmt9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/expandedlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19DQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+DQogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRjYXRlZ29yeX08L3A+DQogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2F0ZWdvcnl9eyRpbnB1dF9zZWxlY3R9eyRpbnB1dF9oaWRkZW59PC9wPg0KPC9kaXY+DQp7JGVuZGZvcm19DQp7aWYgJGl0ZW1jb3VudCA+IDB9DQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPnskdGl0bGV0ZXh0fTwvdGg+DQoJCQk8dGg+eyRwb3N0ZGF0ZXRleHR9PC90aD4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPg0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQoJCTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+DQoJCQk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+YXV0aG9yfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+aXB9PC90ZD4NCgkJCTx0ZD57JGVudHJ5LT5kYXRlfTwvdGQ+DQoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPg0KCQk8L3RyPg0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPg0KCSAgICAgICAgCTx0ZD4mbmJzcDs8L3RkPg0KICAgICAgICAgICAgICAgCQk8dGQgY29sc3Bhbj0iNSI+eyRlbnRyeS0+ZGVzY3JpcHRpb259PC90ZD4gDQoJCTwvdHI+DQoJey9mb3JlYWNofQ0KCTwvdGJvZHk+DQo8L3RhYmxlPg0Ke2Vsc2V9DQo8L2JyPg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+Tm8gRmlsZXMgRGV0ZWN0ZWQ8L3A+DQo8L2Rpdj4NCnsvaWZ9DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/uploadform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0YXJ0Zm9ybX0KPHA+eyRwcm9tcHRfdXBsb2FkfXskaGlkZGVufXskaW5wdXRfc3VibWl0fTwvcD4Ke2VuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/uploadlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0Ke2lmICRub2Zvcm0gPT0gJyd9Cnskc3RhcnRmb3JtfQogIDx0YWJsZT4KICAgIDx0cj48dGQ+eyRjYXRlZ29yeX08L3RkPjx0ZD57JGlucHV0X2NhdGVnb3J5fXskaW5wdXRfc2VsZWN0fXskaW5wdXRfaGlkZGVufTxici8+PGhyLz48L3RkPjwvdHI+CiAgICA8dHI+PHRkPnskcHJvbXB0X2F1dGhvcn08L3RkPjx0ZD57JGlucHV0X2F1dGhvcn08L3RkPjwvdHI+CiAgICA8dHI+PHRkPnskcHJvbXB0X2Rlc3RuYW1lfTwvdGQ+PHRkPnskaW5wdXRfZGVzdG5hbWV9PC90ZD48L3RyPgogICAgPHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZD57JGluZm9fZGVzdG5hbWV9PC90ZD48L3RyPgogICAgPHRyPjx0ZD57JHByb21wdF9zdW1tYXJ5fTwvdGQ+PHRkPnskaW5wdXRfc3VtbWFyeX08L3RkPjwvdHI+CiAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PHRkPnskaW5mb19zdW1tYXJ5fTwvdGQ+PC90cj4KICAgIDx0cj48dGQ+eyRwcm9tcHRfdGh1bWJuYWlsfTwvdGQ+PHRkPnskaW5wdXRfdGh1bWJuYWlsfTwvdGQ+PC90cj4KICAgIDx0cj48dGQ+eyRwcm9tcHRfcmVwbGFjZX08L3RkPjx0ZD57JGlucHV0X3JlcGxhY2V9PC90ZD48L3RyPgogICAgPHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZD57JGluZm9fcmVwbGFjZX08L3RkPjwvdHI+CiAgICA8dHI+PHRkPnskcHJvbXB0X2Jyb3dzZX08L3RkPjx0ZD57JGlucHV0X2Jyb3dzZX0mbmJzcDt7JGlucHV0X3N1Ym1pdH08L3RkPjwvdHI+CiAgPC90YWJsZT4KICA8YnIvPgp7JGVuZGZvcm19CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD4mbmJzcDs8L3RoPgoJCQk8dGggd2lkdGg9IjE1JSI+eyR0aXRsZXRleHR9PC90aD4KCQkJPHRoIHdpZHRoPSI0MCUiPnskc3VtbWFyeXRleHR9PC90aD4KCQkJPHRoPnskc2l6ZXRleHR9PC90aD4KCQkJPHRoPnskYXV0aG9ydGV4dH08L3RoPgoJCQk8dGg+eyRpcHRleHR9PC90aD4KCQkJPHRoPnskcG9zdGRhdGV0ZXh0fTwvdGg+CgkJCTx0aD57JGRsdGV4dH08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CgkJCTx0ZD57JGVudHJ5LT5pZH08L3RkPgoJCQk8dGQ+PGEgaHJlZj0ieyRlbnRyeS0+ZWRpdHVybH0iPnskZW50cnktPm5hbWV9PC9hPjwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5zdW1tYXJ5fTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5zaXplfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5hdXRob3J9PC90ZD4KCQkJPHRkPnskZW50cnktPmlwfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kYXRlfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kb3dubG9hZHN9PC90ZD4KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJPC90cj4KCXsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+CntlbHNlfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPk5vIEZpbGVzIERldGVjdGVkPC9wPgo8L2Rpdj4Key9pZn0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/Uploads.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIFZlcnNpb246IDEuMi4zLCBjYWxndXkxMDAwCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOgkvL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNsYXNzIFVwbG9hZHMgZXh0ZW5kcyBDTVNNb2R1bGUKewogLyoqCiAgKiBUaGUgZGVmYXVsdCB0ZW1wbGF0ZSB1c2VkIGluIGVtYWlsIG5vdGlmaWNhdGlvbnMKICAqLwogIHZhciAkZGZsdF9lbWFpbG5vdGlmeXRlbXBsYXRlID0gJwo8IS0tIEVtYWlsIGZvcm0gdGVtcGxhdGUgLS0+CjxwPlRoaXMgbWVzc2FnZSBpcyB0byBub3RpZnkgeW91IHRoYXQgYSBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkIHRvIHlvdXIgd2Vic2l0ZS4gIFRoZSBkZXRhaWxzIG9mIHRoaXMgdXBsb2FkIGFyZSBhcyBmb2xsb3dzOjwvcD4KPHA+TmFtZTogeyRuYW1lfTwvcD4KPHA+U2l6ZTogeyRzaXplfTwvcD4KPHA+U3VtbWFyeTogeyRzdW1tYXJ5fTwvcD4KPHA+RGVzY3JpcHRpb246IHskZGVzY3JpcHRpb259PC9wPgo8cD5BdXRob3I6IHskYXV0aG9yfTwvcD4KPHA+SVAgQWRkcmVzczogeyRpcF9hZGRyZXNzfTwvcD4KPCEtLSBFbWFpbCBmb3JtIHRlbXBsYXRlIC0tPgogICAgJzsKIC8qKgogICAqIFRoZSBkZWZhdWx0IHRlbXBsYXRlIHVzZWQgZm9yIHRoZSB1cGxvYWQgZm9ybQogICAqLwogIHZhciAkZGZsdF91cGxvYWRmb3JtdGVtcGxhdGUgPSAnCjwhLS0gVXBsb2FkIGZvcm0gdGVtcGxhdGUgLS0+Cnskc3RhcnRmb3JtfXskaW5wdXRfa2V5fQp7aWYgJG5vYXV0aG9yIH0gCnskaW5wdXRfYXV0aG9yfQp7ZWxzZX0KPHA+eyRwcm9tcHRfYXV0aG9yfSZuYnNwO3skaW5wdXRfYXV0aG9yfTwvcD4Key9pZn0KPHA+eyRwcm9tcHRfc3VtbWFyeX0mbmJzcDt7JGlucHV0X3N1bW1hcnl9PC9wPgo8cD57JHByb21wdF9kZXNjcmlwdGlvbn0mbmJzcDt7JGlucHV0X2Rlc2NyaXB0aW9ufTwvcD4KPHA+eyRwcm9tcHRfZGVzdG5hbWV9Jm5ic3A7eyRpbnB1dF9kZXN0bmFtZX0mbmJzcDt7JGluZm9fZGVzdG5hbWV9PC9wPgo8cD57JHByb21wdF90aHVtYm5haWx9Jm5ic3A7eyRpbnB1dF90aHVtYm5haWx9Jm5ic3A7eyRpbmZvX3RodW1ibmFpbH08L3A+CjxwPnskcHJvbXB0X3JlcGxhY2V9Jm5ic3A7eyRpbnB1dF9yZXBsYWNlfSZuYnNwO3skaW5mb19yZXBsYWNlfTwvcD4KPHA+eyRwcm9tcHRfdXBsb2FkfXskaGlkZGVufXskaW5wdXRfYnJvd3NlfXskaW5wdXRfc3VibWl0fTwvcD4KeyRlbmRmb3JtfQo8IS0tIFVwbG9hZCBmb3JtIHRlbXBsYXRlIC0tPicKOwoKICAvKgogICAqIFRoZSBkZWZhdWx0IHRlbXBsYXRlIHVzZWQgZm9yIHRoZSBzdW1tYXJ5IHJlcG9ydAogICAqLwogIHZhciAkZGZsdF9zdW1tYXJ5dGVtcGxhdGUgPSAnCjwhLS0gU3RhcnQgVXBsb2FkIERpc3BsYXkgVGVtcGxhdGUgLS0+CntpZiAkaW5wdXRfZmlsdGVyICE9IFwnXCd9Cnskc3RhcnRmb3JtfQp7JHByb21wdF9maWx0ZXJ9eyRpbnB1dF9maWx0ZXJ9eyRoaWRkZW5fcGFyYW1zfXskaW5wdXRfc3VibWl0fQp7JGVuZGZvcm19Cjxici8+CnskbWF0Y2hlc30mbmJzcDt7JG1hdGNoZXN0ZXh0fQp7L2lmfQo8dGFibGU+CiAgPHRyPgogICAgPHRoPnskY2F0ZWdvcnl9PC90aD4KICAgIDx0aD57JG5hbWV9PC90aD4KICAgIDx0aD57JGF1dGhvcn08L3RoPgogICAgPHRoPnskZGF0ZX08L3RoPgogICAgPHRoPnskc2l6ZX08L3RoPgogICAgPHRoPnskZGV0YWlsc308L3RoPgogICAgPHRoPnskc3VtbWFyeX08L3RoPgogICAgPHRoPnskZGVzY3JpcHRpb259PC90aD4KICA8L3RyPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4gCiAgICA8dGg+eyRlbnRyeS0+Y2F0ZWdvcnl9PC90ZD4KICAgIDx0ZD4KICAgICAgeyRlbnRyeS0+bmFtZX0KICAgICAgPGJyLz4KICAgICAgeyRlbnRyeS0+ZG93bmxvYWRfdXJsfQogICAgICB7aWYgJGVudHJ5LT50aHVtYm5haWxfdXJsfQogICAgICAgIDxici8+eyR0aHVtYm5haWx9Jm5ic3A7PGltZyBzcmM9InskZW50cnktPnRodW1ibmFpbF91cmx9IiBib3JkZXI9MD4KICAgICAgey9pZn0KICAgIDwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+YXV0aG9yfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGF0ZX08L3RkPgogICAgPHRkPnskZW50cnktPnNpemV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZXRhaWxsaW5rfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+c3VtbWFyeX08L3RkPgogICAgPHRkPnskZW50cnktPnN1bW1hcnlsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQo8L3RhYmxlPgo8IS0tIEVuZCBVcGxvYWQgRGlzcGxheSBUZW1wbGF0ZSAtLT4KJzsKCiAgLyoqCiAgICogVGhlIGRlZmF1bHQgdGVtcGxhdGUgdXNlZCBmb3IgdGhlIGRldGFpbCByZXBvcnQKICAgKi8KICB2YXIgJGRmbHRfZGV0YWlsdGVtcGxhdGUgPSAnCjwhLS0gRGV0YWlsIHRlbXBsYXRlIC0tPgp7aWYgJGlucHV0X2ZpbHRlciAhPSBcJ1wnfQp7JHN0YXJ0Zm9ybX0KeyRwcm9tcHRfZmlsdGVyfXskaW5wdXRfZmlsdGVyfXskaGlkZGVuX3BhcmFtc317JGlucHV0X3N1Ym1pdH0KeyRlbmRmb3JtfQo8YnIvPgp7JG1hdGNoZXN9Jm5ic3A7eyRtYXRjaGVzdGV4dH08YnIvPgp7L2lmfQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQo8dGFibGU+CiAge2lmICRlbnRyeS0+dGh1bWJuYWlsX3VybH0KICAgIDx0cj4KICAgICAgIDx0ZD57JHRodW1ibmFpbH08L3RkPgogICAgICAgPHRkPjxpbWcgc3JjPSJ7JGVudHJ5LT50aHVtYm5haWxfdXJsfSIgYm9yZGVyPTA+PC90ZD4KICAgICA8L3RyPgogIHsvaWZ9CiAgPHRyPgogICAgPHRkPnskY2F0ZWdvcnl9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jYXRlZ29yeX08L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnskaWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnskbmFtZX08L3RkPgogICAgPHRkPnskZW50cnktPm5hbWV9PGJyLz57JGVudHJ5LT5kb3dubG9hZF91cmx9PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD57JGRhdGV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kYXRlfTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+eyRhdXRob3J9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5hdXRob3J9PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD57JHNpemV9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5zaXplfTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+eyRzdW1tYXJ5fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+c3VtbWFyeX08L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnskc3VtbWFyeX08L3RkPgogICAgPHRkPnskZW50cnktPnN1bW1hcnlsaW5rfTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+eyRkZXNjcmlwdGlvbn08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2NyaXB0aW9ufTwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPGJyLz4KPGJyLz4Key9mb3JlYWNofQo8IS0tIERldGFpbCB0ZW1wbGF0ZSAtLT4KJzsKCiAgdmFyICR1cGxvYWRfZXh0ZW5zaW9ucyA9ICcnOwoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgX2V4cGxvZGVfd2l0aF9rZXkoICRTdHIsICRpbmdsdWU9Jz0nLCAkb3V0Z2x1Zz0nJicpOwogICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgICBFeHBsb2RlIGEgc3RyaW5nIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gZXhwbG9kZV93aXRoX2tleSgkc3RyLCAkaW5nbHVlPSc9JywgJG91dGdsdWU9JyYnKQogIHsKICAgICRyZXQgPSBhcnJheSgpOwogICAgJGExID0gc3BsaXQoJG91dGdsdWUsJHN0cik7CiAgICBmb3JlYWNoKCAkYTEgYXMgJGEyICkKICAgIHsKICAgICAgbGlzdCggJGssICR2ICkgPSBzcGxpdCggJGluZ2x1ZSwgJGEyICk7CiAgICAgICRyZXRbICRrIF0gPSAkdjsKICAgIH0KICAgIHJldHVybiAkcmV0OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBfaW1wbG9kZV93aXRoX2tleSggJFN0ciwgJGluZ2x1ZT0nPScsICRvdXRzZ2x1Zz0nJicpOwogICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgICBJbXBsb2RlIGFuIGFzc29jaWF0aXZlIGFycmF5IGludG8gYSBzdHJpbmcKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gaW1wbG9kZV93aXRoX2tleSgkYXNzb2MsICRpbmdsdWUgPSAnPScsICRvdXRnbHVlID0gJyYnKQogIHsKICAgICAkcmV0dXJuID0gbnVsbDsKICAgICBmb3JlYWNoICgkYXNzb2MgYXMgJHRrID0+ICR0dikgJHJldHVybiAuPSAkb3V0Z2x1ZS4kdGsuJGluZ2x1ZS4kdHY7CiAgICAgcmV0dXJuIHN1YnN0cigkcmV0dXJuLHN0cmxlbigkb3V0Z2x1ZSkpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIF9jYXRlZ29yeVBhdGgoICRjYXRlZ29yeXBhdGggKQogICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgICBHZW5lcmF0ZSBhIHBhdGggdG8gYSBjZXJ0YWluIGNhdGVnb3J5CiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9jYXRlZ29yeVBhdGgoICRjYXRlZ29yeXBhdGggKQogIHsKICAgIHJldHVybiAkdGhpcy0+Y21zLT5jb25maWdbJ3VwbG9hZHNfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuCiAgICAgICAgICAgICAgICRjYXRlZ29yeXBhdGg7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFVwbG9hZFBhdGgoICRjYXRlZ29yeXBhdGgsICRmaWxlbmFtZSApCiAgICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgIEdlbmVyYXRlIGEgZmlsZSBzcGVjaWZpY2F0aW9uIHRvIGEgZmlsZSBpbiBhIGNlcnRhaW4gCiAgICBjYXRlZ29yeS4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX3VwbG9hZFBhdGgoICRjYXRlZ29yeXBhdGgsICRmaWxlbmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCAkY2F0ZWdvcnlwYXRoICkuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZW5hbWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX3Rlc3RpcCgkcmFuZ2UsJGlwKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgVGhpcyBpcyBhIGZ1bmN0aW9uIHRvIG1hdGNoIGFuIElQIGFkZHJlc3MgYWdhaW5zdCBhbiAKICAgYWRkcmVzcyByYW5nZSBzcGVjaWZpY2F0aW9uLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF90ZXN0aXAoJHJhbmdlLCRpcCkgCiAgewogICAgJHJlc3VsdCA9IDE7CgogICAgIyBJUCBQYXR0ZXJuIE1hdGNoZXIKICAgICMgSi5BZGFtcyA8am5hQHJldGluYS5uZXQ+CiAgICAjCiAgICAjIE1hdGNoZXM6CiAgICAjCiAgICAjIHh4eC54eHgueHh4Lnh4eCAgICAgICAgKGV4YWN0KQogICAgIyB4eHgueHh4Lnh4eC5beXl5LXp6el0gIChyYW5nZSkKICAgICMgeHh4Lnh4eC54eHgueHh4L25uICAgIChubiA9ICMgYml0cywgY2lzY28gc3R5bGUgLS0gaS5lLiAvMjQgPSBjbGFzcyBDKQogICAgIwogICAgIyBEb2VzIG5vdCBtYXRjaDoKICAgICMgeHh4Lnh4eC54eHgueHhbeXl5LXp6el0gIChyYW5nZSwgcGFydGlhbCBvY3RldHMgbm90IHN1cHBvcnRlZCkKIAogICAgaWYgKGVyZWcoIihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLyhbMC05XSspIiwkcmFuZ2UsJHJlZ3MpKSB7CiAgICAgICMgcGVyZm9ybSBhIG1hc2sgbWF0Y2gKICAgICAgJGlwbCA9IGlwMmxvbmcoJGlwKTsKICAgICAgJHJhbmdlbCA9IGlwMmxvbmcoJHJlZ3NbMV0gLiAiLiIgLiAkcmVnc1syXSAuICIuIiAuICRyZWdzWzNdIC4gIi4iIC4gJHJlZ3NbNF0pOwogICAgICAKICAgICAgJG1hc2tsID0gMDsKICAgICAgCiAgICAgIGZvciAoJGkgPSAwOyAkaTwgMzE7ICRpKyspIHsKCWlmICgkaSA8ICRyZWdzWzVdLTEpIHsKICAgICAgICAgICRtYXNrbCA9ICRtYXNrbCArIHBvdygyLCgzMC0kaSkpOwoJfQogICAgICB9CiAgICAgIAogICAgICBpZiAoKCRtYXNrbCAmICRyYW5nZWwpID09ICgkbWFza2wgJiAkaXBsKSkgewoJICAgICAgcmV0dXJuIDE7CiAgICAgIH0gZWxzZSB7CgkgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgCiAgICAgICMgcmFuZ2UgYmFzZWQKICAgICAgJG1hc2tvY3RzID0gc3BsaXQoIlwuIiwkcmFuZ2UpOwogICAgICAkaXBvY3RzID0gc3BsaXQoIlwuIiwkaXApOwogICAgICAKICAgICAgIyBwZXJmb3JtIGEgcmFuZ2UgbWF0Y2gKICAgICAgZm9yICgkaT0wOyAkaTw0OyAkaSsrKSB7CgkgICAgICBpZiAoZXJlZygiXFsoWzAtOV0rKVwtKFswLTldKylcXSIsJG1hc2tvY3RzWyRpXSwkcmVncykpIHsKCSAgCQkJaWYgKCAoJGlwb2N0c1skaV0gPiAkcmVnc1syXSkgfHwgKCRpcG9jdHNbJGldIDwgJHJlZ3NbMV0pKSB7CgkgICAgCQkJJHJlc3VsdCA9IDA7CgkgIAkJCX0KCQkJCX0KCQkJCWVsc2UKCSAgCQl7CgkgICAgCQlpZiAoJG1hc2tvY3RzWyRpXSA8PiAkaXBvY3RzWyRpXSkgewoJICAgICAgCQkkcmVzdWx0ID0gMDsKCSAgICAJfQoJICAJfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gJHJlc3VsdDsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZ2V0Q2F0ZWdvcnlGcm9tTmFtZSgpCiAgICBQVUJMSUMKICAKICAgIHJldHVybiB0aGUgY2F0ZWdvcnkgaWQgZ2l2ZW4gYSBuYW1lLCBvciBmYWxzZQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIGdldENhdGVnb3J5RnJvbU5hbWUoJG5hbWUpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0KICAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4ICgpLgogICAgICAibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfbmFtZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksIGFycmF5ICgkbmFtZSkpOwogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIGlmKCAhJHJvdyApIAogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIHJldHVybiAkcm93OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBnZXRDYXRlZ29yeUxpc3QoKQogICAgUFVCTElDCiAgCiAgICByZXR1cm4gYSBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzIGFuZCBpZCdzCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gZ2V0Q2F0ZWdvcnlMaXN0KCkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERCKCk7CiAgICAkY2F0ZWdvcnlsaXN0ID0gYXJyYXkoKTsKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5ICk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKICAgICAgICByZXR1cm4gJGNhdGVnb3J5bGlzdDsKICAgICAgfQoKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJJGNhdGVnb3J5bGlzdFskcm93Wyd1cGxvYWRfY2F0ZWdvcnlfbmFtZSddXSA9IAoJICAkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXTsKICAgICAgfQogICAgcmV0dXJuICRjYXRlZ29yeWxpc3Q7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgZ2V0Q2F0ZWdvcnlQYXRoRnJvbUlEKCkKICAgUFVCTElDCiAgCiAgIHJldHVybiB0aGUgY2F0ZWdvcnkgcGF0aCBnaXZlbiBhIGNhdGVnb3J5IGlkCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIGZ1bmN0aW9uIGdldENhdGVnb3J5UGF0aEZyb21JRCggJGNhdGVnb3J5X2lkICkKICAgewogICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBXSEVSRSAiLgogICAgICAgInVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJGNhdGVnb3J5X2lkICkgKTsKICAgICBpZiggISRkYnJlc3VsdCApCiAgICAgICB7CgkgcmV0dXJuOwogICAgICAgfQogICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgaWYoICEkcm93ICkKICAgICAgIHsKCSByZXR1cm47CiAgICAgICB9CiAgICAgCiAgICAgcmV0dXJuICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ107CiAgIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBnZXRDYXRlZ29yeVBhdGhGcm9tRmlsZUlEKCkKICAgIFBVQkxJQwogIAogICAgcmV0dXJuIHRoZSBjYXRlZ29yeSBwYXRoIGdpdmVuIGEgZmlsZSBpZAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIGdldENhdGVnb3J5UGF0aEZyb21GaWxlSUQoICRmaWxlX2lkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMgV0hFUkUgdXBsb2FkX2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRmaWxlX2lkKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIGlmKCAhJHJvdyApCiAgICAgIHsKCXJldHVybjsKICAgICAgfQogICAgJGNhdCA9ICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddOwogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMgV0hFUkUgIi4KICAgICAgInVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkY2F0ICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICEkcm93ICkKICAgICAgewoJcmV0dXJuOwogICAgICB9CgogICAgcmV0dXJuICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ107CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGdldEZpbGVMaXN0KCAkY2F0ZWdvcnlfaWQgKQogICAgUFVCTElDCiAgCiAgICByZXR1cm4gYSBsaXN0IG9mIGZpbGVzIGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIGdldEZpbGVMaXN0KCAkY2F0ZWdvcnlfaWQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRmaWxlbGlzdCA9IGFycmF5KCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMiLgogICAgICAiIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkY2F0ZWdvcnlfaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CiAgICAgICAgcmV0dXJuICRmaWxlbGlzdDsKICAgICAgfQoKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJJGZpbGVsaXN0WyRyb3dbJ3VwbG9hZF9uYW1lJ11dID0gCgkgICRyb3dbJ3VwbG9hZF9pZCddOwogICAgICB9CiAgICByZXR1cm4gJGZpbGVsaXN0OwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBnZXRGaWxlTmFtZSggJGZpbGVfaWQgKQogICAgUFVCTElDCiAgCiAgICByZXR1cm4gYSBsaXN0IG9mIGZpbGVzIGluIHRoZSBnaXZlbiBjYXRlZ29yeQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIGdldEZpbGVOYW1lKCAkZmlsZV9pZCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzIi4KICAgICAgIiBXSEVSRSB1cGxvYWRfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJGZpbGVfaWQgKSApOwogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIHJldHVybiAkcm93Wyd1cGxvYWRfbmFtZSddOwogIH0KCiAgCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGdldEZpbGVEZXRhaWxzKCAkZmlsZV9pZCApCiAgICBQVUJMSUMKICAKICAgIHJldHVybiBhIGxpc3Qgb2YgZmlsZXMgaW4gdGhlIGdpdmVuIGNhdGVnb3J5CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gZ2V0RmlsZURldGFpbHMoICRmaWxlX2lkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMiLgogICAgICAiIFdIRVJFIHVwbG9hZF9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkZmlsZV9pZCApICk7CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgcmV0dXJuICRyb3c7CiAgfQoKICAKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfZml4VG9BZGp1c3RUYWJsZVN0cnVjdHVyZTEoKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgLy8gbW92ZSB0aGUgZGVzY3JpcHRpb24gZmllbGQsIGV0YywgaW50byB0aGUgcHJvcGVyIHBsYWNlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICBmdW5jdGlvbiBfZml4VG9BZGp1c3RUYWJsZVN0cnVjdHVyZTEoKQogICB7CiAgICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICAvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KICAgICAkZmxkcyA9ICJ1cGxvYWRfaWQgSSBLRVksCiAgICAgICAgICAgICB1cGxvYWRfY2F0ZWdvcnlfaWQgSSwKICAgICAgICAgICAgIHVwbG9hZF9uYW1lIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9hdXRob3IgQygyNTUpLAogICAgICAgICAgICAgdXBsb2FkX3N1bW1hcnkgQygyNTUpLCAKICAgICAgICAgICAgIHVwbG9hZF9kZXNjcmlwdGlvbiBYLAogICAgICAgICAgICAgdXBsb2FkX2lwIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9zaXplIEksCiAgICAgICAgICAgICB1cGxvYWRfZGF0ZSBUCgkgICAgIjsKCiAgICAgLy8gY3JlYXRlIGl0LiBUaGlzIHNob3VsZCBkbyBlcnJvciBjaGVja2luZywgYnV0IEknbSBhIGxhenkgc29kLgogICAgICR0YWJvcHRhcnJheSA9IGFycmF5ICgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwogICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkgKCRkYik7CiAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMIChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX25ldyIsCgkJCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSAoJHNxbGFycmF5KTsKICAgICAKICAgICAvLyBub3cgaGF2ZSB0byB0cmFuc2ZlciB0aGUgZGF0YQogICAgICRxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19uZXcgCiAgICAgICAgICAgICAgU0VMRUNUIHVwbG9hZF9pZCwgdXBsb2FkX2NhdGVnb3J5X2lkLCB1cGxvYWRfbmFtZSwgdXBsb2FkX2F1dGhvciwgdXBsb2FkX2Rlc2NyaXB0aW9uLCAnJywKICAgICAgICAgICAgICB1cGxvYWRfaXAsIHVwbG9hZF9zaXplLCB1cGxvYWRfZGF0ZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyI7CiAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSApOwogICAgIGlmKCAhJGRicmVzdWx0ICkgewogICAgICAgJHRoaXMtPlNldEVycm9yKCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgLy8gYW5kIGRyb3AgdGhlIG9yaWdpbmFsIHRhYmxlCiAgICAgJHNxbGFycmF5ID0KICAgICAgICRkaWN0LT5Ecm9wVGFibGVTUUwgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzIiwKCQkJICAgICRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwogICAgIAogICAgIC8vIGFuZCByZW5hbWUgdGhlIG5ldyB0YWJsZQogICAgICRzcWxhcnJheSA9CiAgICAgICAkZGljdC0+UmVuYW1lVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfbmV3IiwKCQkJICAgICAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyIgKTsKICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKICAgfSAgCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfZml4VG9BZGp1c3RUYWJsZVN0cnVjdHVyZTIoKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgLy8gbW92ZSB0aGUgZGVzY3JpcHRpb24gZmllbGQsIGV0YywgaW50byB0aGUgcHJvcGVyIHBsYWNlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICBmdW5jdGlvbiBfZml4VG9BZGp1c3RUYWJsZVN0cnVjdHVyZTIoKQogICB7CiAgICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICAvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KICAgICAkZmxkcyA9ICJ1cGxvYWRfaWQgSSBLRVksCiAgICAgICAgICAgICB1cGxvYWRfY2F0ZWdvcnlfaWQgSSwKICAgICAgICAgICAgIHVwbG9hZF9uYW1lIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9hdXRob3IgQygyNTUpLAogICAgICAgICAgICAgdXBsb2FkX3N1bW1hcnkgQygyNTUpLCAKICAgICAgICAgICAgIHVwbG9hZF9kZXNjcmlwdGlvbiBYLAogICAgICAgICAgICAgdXBsb2FkX2lwIEMoMjU1KSwKICAgICAgICAgICAgIHVwbG9hZF9zaXplIEksCiAgICAgICAgICAgICB1cGxvYWRfZGF0ZSBUCgkgICAgIjsKCiAgICAgLy8gY3JlYXRlIGl0LiBUaGlzIHNob3VsZCBkbyBlcnJvciBjaGVja2luZywgYnV0IEknbSBhIGxhenkgc29kLgogICAgICR0YWJvcHRhcnJheSA9IGFycmF5ICgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwogICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkgKCRkYik7CiAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMIChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX25ldyIsCgkJCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CiAgICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSAoJHNxbGFycmF5KTsKICAgICAKICAgICAvLyBub3cgaGF2ZSB0byB0cmFuc2ZlciB0aGUgZGF0YQogICAgICRxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19uZXcgCiAgICAgICAgICAgICAgU0VMRUNUIHVwbG9hZF9pZCwgdXBsb2FkX2NhdGVnb3J5X2lkLCB1cGxvYWRfbmFtZSwgdXBsb2FkX2F1dGhvciwgdXBsb2FkX3N1bW1hcnksIAogICAgICAgICAgICAgIHVwbG9hZF9kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICB1cGxvYWRfaXAsIHVwbG9hZF9zaXplLCB1cGxvYWRfZGF0ZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyI7CiAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSApOwogICAgIGlmKCAhJGRicmVzdWx0ICkgewogICAgICAgJHRoaXMtPlNldEVycm9yKCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgLy8gYW5kIGRyb3AgdGhlIG9yaWdpbmFsIHRhYmxlCiAgICAgJHNxbGFycmF5ID0KICAgICAgICRkaWN0LT5Ecm9wVGFibGVTUUwgKGNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzIiwKCQkJICAgICRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwogICAgIAogICAgIC8vIGFuZCByZW5hbWUgdGhlIG5ldyB0YWJsZQogICAgICRzcWxhcnJheSA9CiAgICAgICAkZGljdC0+UmVuYW1lVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfbmV3IiwKCQkJICAgICAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyIgKTsKICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCiAgICAgCiAgIH0gIAoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX2dldFVwbG9hZENhdGVnb3J5RGV0YWlscyggJGNhdGVnb3J5X2lkICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgcmVwcmVzZW50aW5nIHRoZSBzcGVjaWZpYwogICByb3cgb2YgdGhlIGNhdGVnb3JpZXMgZGF0YWJhc2UgbWF0Y2hpbmcgdGhlIHN1cHBsaWVkIAogICBjYXRlZ29yeSBpZAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9nZXRVcGxvYWRDYXRlZ29yeURldGFpbHMoICRjYXRlZ29yeV9pZCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRjYXRlZ29yeV9pZCApICk7CiAgICBpZiggISRkYnJlc3VsdCApIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICBpZiggISRyb3cgKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJHJvdzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfZ2V0VXBsb2FkRmlsZURldGFpbHMoICRjYXRlZ29yeV9pZCApCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICByZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IG1hdGNoaW5nIHRoZSBzcGVjaWZpYyByb3cgb2YKICAgdGhlIHVwbG9hZHMgdGFibGUgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCB1cGxvYWQgaWQKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfZ2V0VXBsb2FkRmlsZURldGFpbHMoICRmaWxlX2lkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMgV0hFUkUgdXBsb2FkX2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRmaWxlX2lkICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkgewogICAgICByZXR1cm47CiAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICEkcm93ICkgewogICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRyb3c7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIF9zY2FuZGlyKCAkZGlyLCAkc29ydCApCiAgICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgIFNjYW4gYSBkaXJlY3RvcnkgYW5kIHJldHVybiBhIHNvcnRlZCBsaXN0LgogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfc2NhbmRpcigkZGlyID0gJy4vJywgJHNvcnQgPSAwKQogIHsKICAgICRkaXJfb3BlbiA9IEBvcGVuZGlyKCRkaXIpOwogIAogICAgaWYgKCEgJGRpcl9vcGVuKQogICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAKICAgICRmaWxlcyA9IGFycmF5KCk7CiAgICB3aGlsZSAoKCRkaXJfY29udGVudCA9IHJlYWRkaXIoJGRpcl9vcGVuKSkgIT0gZmFsc2UpCiAgICAgIHsKCS8vIHdlIGlnbm9yZSBpbmRleC5odG1sIGZpbGVzIGlmIHRoZSBwcmVmZXJlbmNlIGlzIHNldAoJaWYoICRkaXJfY29udGVudCA9PSAnaW5kZXguaHRtbCcgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9kdW1teV9pbmRleF9odG1sJykpCgkgIHsKCSAgICBjb250aW51ZTsKCSAgfQoKCS8vIGlnbm9yZSBkb3QgZmlsZXMKCWlmKCBwcmVnX21hdGNoKCAiL15cLi8iLCAkZGlyX2NvbnRlbnQgKSApCgkgIHsKCSAgICBjb250aW51ZTsKCSAgfQoKCSRmaWxlc1tdID0gJGRpcl9jb250ZW50OwogICAgICB9CiAgCiAgICBpZiggaXNfYXJyYXkoICRmaWxlcyApICkKICAgICAgewoJaWYgKCRzb3J0ID09IDEpCgkgIHJzb3J0KCRmaWxlcywgU09SVF9TVFJJTkcpOwoJZWxzZQoJICBzb3J0KCRmaWxlcywgU09SVF9TVFJJTkcpOwogICAgICB9CiAgCiAgICByZXR1cm4gJGZpbGVzOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBfbWtkaXJyKCAkcGF0aG5hbWUsICRtb2RlICkKICAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICAgTWFrZSBhIGRpcmVjdG9yeSByZWN1cnNpdmVseQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfbWtkaXJyICgkcGF0aG5hbWUsICRtb2RlID0gMDc3NykKICB7CiAgICAvLyBDaGVjayBpZiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMKICAgIGlmIChpc19kaXIgKCRwYXRobmFtZSkgfHwgZW1wdHkgKCRwYXRobmFtZSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vIEVuc3VyZSBhIGZpbGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCB3aXRoIHRoZSBzYW1lIG5hbWUKICAgIGlmIChpc19maWxlICgkcGF0aG5hbWUpKQogICAgewogICAgICAvLyBSQzogTW9kaWZpY2F0aW9uIHN1Y2ggdGhhdCB0aGlzIGlzbid0IGFuIGVycm9yCiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vIENyYXdsIHVwIHRoZSBkaXJlY3RvcnkgdHJlZQogICAgJG5leHRfcGF0aG5hbWUgPQogICAgICBzdWJzdHIgKCRwYXRobmFtZSwgMCwgc3RycnBvcyAoJHBhdGhuYW1lLCBESVJFQ1RPUllfU0VQQVJBVE9SKSk7CiAgICBpZiAoJHRoaXMtPl9ta2RpcnIgKCRuZXh0X3BhdGhuYW1lLCAkbW9kZSkpCiAgICB7CiAgICAgIGlmICghZmlsZV9leGlzdHMgKCRwYXRobmFtZSkpCiAgICAgIHsKCQkJCXJldHVybiBta2RpciAoJHBhdGhuYW1lLCAkbW9kZSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX2lzVmFsaWRGaWxlbmFtZSggJGZpbGVuYW1lICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIFRlc3QgYSBzdHJpbmcgdG8gc2VlIGlmIGl0IGlzIGEgdmFsaWQgZmlsZW5hbWUgKGkuZSkgdGhlCiAgIGV4dGVuc2lvbiBmYWxscyBpbiBvdXIgYWxsb3dlZCBleHRlbnNpb25zLCBhbmQgdGhlcmUgYXJlCiAgIG5vIGludmFsaWQgY2hhcmFjdGVycy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfaXNWYWxpZEZpbGVuYW1lICgkZmlsZW5hbWUpCiAgewogICAgJGZpbGVfbmFtZSA9IHRyaW0gKCRmaWxlbmFtZSk7CiAgICAkZXh0ZW5zaW9uID0gc3RydG9sb3dlciAoc3RycmNociAoJGZpbGVfbmFtZSwgIi4iKSk7CgogICAgLy8gYXJyYXkgb2YgZmlsZXMgd2UgZG9uJ3QgYWxsb3cKICAgICRleHRfc3RyID0gJHRoaXMtPnVwbG9hZF9leHRlbnNpb25zOwogICAgaWYoICRleHRfc3RyID09ICcnICkKICAgICAgewoJJGV4dF9zdHIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSAoInZhbGlkX3VwbG9hZGV4dGVuc2lvbnMiKTsKICAgICAgfQogICAgJGV4dF9hcnJheSA9IHNwbGl0ICgiLCIsICRleHRfc3RyKTsKICAgICRleHRfY291bnQgPSBjb3VudCAoJGV4dF9hcnJheSk7CgogICAgaWYgKCEkZmlsZV9uYW1lKQogICAgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGlmICghJGV4dF9hcnJheSkKICAgICAgewoJcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7Cglmb3JlYWNoICgkZXh0X2FycmF5IGFzICR2YWx1ZSkKCXsKCSAgJGZpcnN0X2NoYXIgPSBzdWJzdHIgKCR2YWx1ZSwgMCwgMSk7CgkgIGlmICgkZmlyc3RfY2hhciA8PiAiLiIpCgkgIHsKCSAgICAkZXh0ZW5zaW9uc1tdID0gIi4iLnN0cnRvbG93ZXIgKCR2YWx1ZSk7CgkgIH0KCSAgZWxzZQoJICB7CgkgICAgJGV4dGVuc2lvbnNbXSA9IHN0cnRvbG93ZXIgKCR2YWx1ZSk7CgkgIH0KCX0KCgkkdmFsaWRfZXh0ZW5zaW9uID0gZmFsc2U7Cglmb3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkdmFsdWUpCgl7CgkgIGlmICgkdmFsdWUgPT0gJGV4dGVuc2lvbikKCSAgewoJICAgICR2YWxpZF9leHRlbnNpb24gPSB0cnVlOwoJICAgIGJyZWFrOwoJICB9Cgl9CgoJcmV0dXJuICR2YWxpZF9leHRlbnNpb247CiAgICAgIH0KICAgIH0KICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBFTkQgT0YgVVRJTElUWSBGVU5DVElPTlMKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXROYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXROYW1lICgpCiAgewogICAgcmV0dXJuICdVcGxvYWRzJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRGcmllbmRseU5hbWUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZyAoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEV2ZW50RGVzY3JpcHRpb24oICRuYW1lICkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCAkbmFtZSApCiAgewogICAgc3dpdGNoICggJG5hbWUgKQogICAgICB7CiAgICAgIGNhc2UgJ09uVXBsb2FkJzoKCXJldHVybiAkdGhpcy0+TGFuZygnaW5mb19ldmVudF9vbnVwbG9hZCcpOwoJYnJlYWs7CiAgICAgIGNhc2UgJ09uUmVtb3ZlJzoKCXJldHVybiAkdGhpcy0+TGFuZygnaW5mb19ldmVudF9vbnJlbW92ZScpOwoJYnJlYWs7CiAgICAgIGNhc2UgJ09uRG93bmxvYWQnOgoJcmV0dXJuICR0aGlzLT5MYW5nKCdpbmZvX2V2ZW50X29uZG93bmxvYWQnKTsKCWJyZWFrOwogICAgICBjYXNlICdPbkNyZWF0ZUNhdGVnb3J5JzoKCXJldHVybiAkdGhpcy0+TGFuZygnaW5mb19ldmVudF9vbmNyZWF0ZWNhdGVnb3J5Jyk7CglicmVhazsKICAgICAgY2FzZSAnT25EZWxldGVDYXRlZ29yeSc6CglyZXR1cm4gJHRoaXMtPkxhbmcoJ2luZm9fZXZlbnRfb25kZWxldGVjYXRlZ29yeScpOwoJYnJlYWs7CiAgICAgIH0KICAgIHJldHVybiAiIjsKICB9CgogIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFZlcnNpb24gKCkKICB7CiAgICByZXR1cm4gJzEuMi4zJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRFdmVudEhlbHAoICRldmVudG5hbWUgKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCAoICRldmVudG5hbWUgKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZyAoJ2hlbHBfJy4kZXZlbnRuYW1lKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEhlbHAoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEhlbHAgKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcgKCdoZWxwJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3IgKCkKICB7CiAgICByZXR1cm4gJ2NhbGd1eTEwMDAnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEF1dGhvckVtYWlsKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCAoKQogIHsKICAgIHJldHVybiAncm9iQHRlY2hjb20uZHluZG5zLm9yZyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0Q2hhbmdlTG9nKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2cgKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcgKCdjaGFuZ2Vsb2cnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJc1BsdWdpbk1vZHVsZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUgKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNBZG1pbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSGFzQWRtaW4gKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pblNlY3Rpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbiAoKQogIHsKICAgIHJldHVybiAnY29udGVudCc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgTWluaW11bUNNU1ZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uICgpCiAgewogICAgcmV0dXJuICcxLjAtc3ZuJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBTZXRQYXJhbWV0ZXJzKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzICgpCiAgewogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigna2V5JywgJ251bGwnLCAkdGhpcy0+TGFuZygncGFyYW1fa2V5JykpOwogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbm9hdXRob3InLCAnZmFsc2UnLCAkdGhpcy0+TGFuZygncGFyYW1fbm9hdXRob3InKSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd1cGxvYWRfaWQnLCdpZCcsJHRoaXMtPkxhbmcoJ3BhcmFtX3VwbG9hZF9pZCcpKTsKICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NvdW50JywnTicsJHRoaXMtPkxhbmcoJ3BhcmFtX2NvdW50JykpOwogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc29ydG9yZGVyJywnc29ydG9yZGVyJywkdGhpcy0+TGFuZygncGFyYW1fc29ydG9yZGVyJykpOwogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZmlsZV9leHRlbnNpb25zJywnZXh0MSxleHQyLGV4dDMnLCR0aGlzLT5MYW5nKCdwYXJhbV9maWxlZXh0ZW5zaW9ucycpKTsKICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2NhdGVnb3J5JywndXBsb2FkX2NhdGVnb3J5JywkdGhpcy0+TGFuZygncGFyYW1fY2F0ZWdvcnknKSxmYWxzZSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdmaWx0ZXInLCdmaWx0ZXInLCR0aGlzLT5MYW5nKCdwYXJhbV9maWx0ZXInKSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdub19pbml0aWFsJywnbm9faW5pdGlhbCcsJHRoaXMtPkxhbmcoJ3BhcmFtX25vX2luaXRpYWwnKSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdtb2RlJywnbW9kZScsJHRoaXMtPkxhbmcoJ3BhcmFtX21vZGUnKSxmYWxzZSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd1c2Vfc3RyaWN0X3JlZ2V4cCcsJ3VzZV9zdHJpY3RfcmVnZXhwJywkdGhpcy0+TGFuZygncGFyYW1fdXNlX3N0cmljdF9yZWdleHAnKSk7CiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0ZW1wbGF0ZScsJ3RlbXBsYXRlJywkdGhpcy0+TGFuZygncGFyYW1fdGVtcGxhdGUnKSk7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uICgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nICgnbW9kZGVzY3JpcHRpb24nKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBWaXNpYmxlVG9BZG1pblVzZXIoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlciAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTWFuYWdlIFVwbG9hZHMnKSB8fAogICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgfHwKICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXREZXBlbmRlbmNpZXMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcyAoKQogIHsKICAgIHJldHVybiBhcnJheSAoKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZyAoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlICgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nICgncG9zdHVuaW5zdGFsbCcpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIERvQWN0aW9uICgkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCA9IC0xKQogIHsKICAgIHN3aXRjaCAoJGFjdGlvbikKICAgICAgewogICAgICBjYXNlICdkb191cGxvYWQnOgoJewoJICAvLyBhIHVzZXIgaXMgdHJ5aW5nIHRvIHVwbG9hZCBzb21ldGhpbmcKCSAgJHJldCA9ICR0aGlzLT5BdHRlbXB0VXBsb2FkICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCk7CgkgIGlmKCAkcmV0WzBdID09IEZBTFNFICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgICRyZXRbMV0gKTsKCSAgICAgIHJldHVybjsKCSAgICB9CgkgICRzdHIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3Rfb25fdXBsb2FkJyk7CgkgICRpZCA9ICRyZXR1cm5pZDsKCSAgaWYoICRzdHIgIT0gJycgKQoJICAgIHsKCSAgICAgICRpZCA9IENvbnRlbnRNYW5hZ2VyOjpHZXRQYWdlSURGcm9tQWxpYXMoICRzdHIgKTsKCSAgICAgIGlmKCAhJGlkICkKCQl7CgkJICAvLyBwYWdlIG5vdCBmb3VuZCwgaWdub3JlIGl0CgkJICAkaWQgPSAkcmV0dXJuaWQ7CgkJfQoJICAgIH0KCSAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCggJGlkICk7CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnc2F2ZV9hZG1pbl9wcmVmcyc6Cgl7CgkgIC8vIG9ubHkgbGV0IHBlb3BsZSBzYXZlIG1vZHVsZSBwcmVmZXJlbmNlcyBpZiB0aGV5IGhhdmUgcGVybWlzc2lvbgoJICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykpCgkgICAgewoJICAgICAgJHRoaXMtPl9TYXZlQWRtaW5QcmVmcyAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdhZGRjYXRlZ29yeSc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTWFuYWdlIFVwbG9hZHMnKSkKCSAgICB7CgkgICAgICAkdGhpcy0+X0FkbWluQWRkQ2F0ZWdvcnkgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZWRpdGNhdGVnb3J5JzoKCXsKCSAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24gKCdNYW5hZ2UgVXBsb2FkcycpKQoJICAgIHsKCSAgICAgICR0aGlzLT5fQWRtaW5FZGl0Q2F0ZWdvcnkgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZWRpdGNhdGVnb3J5JzoKCXsKCSAgLy8gY2hlY2sgcGVybWlzc2lvbnMgYWdhaW4KCSAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24gKCdNYW5hZ2UgVXBsb2FkcycpKQoJICAgIHsKCSAgICAgICR0aGlzLT5fQWRtaW5Eb0VkaXRDYXRlZ29yeSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkZWxldGVjYXRlZ29yeSc6Cgl7CgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTWFuYWdlIFVwbG9hZHMnKSkKCSAgICB7CgkgICAgICAkdGhpcy0+X0FkbWluRGVsZXRlQ2F0ZWdvcnkgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZGVsZXRlY2F0ZWdvcnknOgoJewoJICAvLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgoJICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01hbmFnZSBVcGxvYWRzJykpCgkgICAgewoJICAgICAgJHRoaXMtPl9BZG1pbkRvRGVsZXRlQ2F0ZWdvcnkgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZWRpdHVwbG9hZCc6Cgl7CgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTWFuYWdlIFVwbG9hZHMnKSkKCSAgICB7CgkgICAgICAkdGhpcy0+X0FkbWluRWRpdFVwbG9hZCAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19lZGl0dXBsb2FkJzoKCXsKCSAgLy8gY2hlY2sgcGVybWlzc2lvbnMgYWdhaW4KCSAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24gKCdNYW5hZ2UgVXBsb2FkcycpKQoJICAgIHsKCSAgICAgICR0aGlzLT5fQWRtaW5Eb0VkaXRVcGxvYWQgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZGVsZXRldXBsb2FkJzoKCXsKCSAgLy8gY2hlY2sgcGVybWlzc2lvbnMgYWdhaW4KCSAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24gKCdNYW5hZ2UgVXBsb2FkcycpKQoJICAgIHsKCSAgICAgICR0aGlzLT5fQWRtaW5Eb0RlbGV0ZVVwbG9hZCAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICd1cGxvYWRmb3JtdGVtcGxhdGUnOgoJewoJICAvLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgoJICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbiAoJ01vZGlmeSBUZW1wbGF0ZXMnKSkKCSAgICB7CgkgICAgICBpZiAoaXNzZXQgKCRwYXJhbXNbJ2RlZmF1bHRidXR0b24nXSkpCgkJewoJCSAgJHRoaXMtPlNldFRlbXBsYXRlICgndXBsb2FkX3VwbG9hZGZvcm0nLCAkdGhpcy0+ZGZsdF91cGxvYWRmb3JtdGVtcGxhdGUpOwoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICAkdGhpcy0+U2V0VGVtcGxhdGUgKCd1cGxvYWRfdXBsb2FkZm9ybScsICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddKTsKCQl9CgkgICAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3VwbG9hZGZvcm1fdGVtcGxhdGUnKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAndXBkYXRlZW1haWx0ZW1wbGF0ZSc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTW9kaWZ5IFRlbXBsYXRlcycpKQoJICAgIHsKCSAgICAgIGlmIChpc3NldCAoJHBhcmFtc1snZGVmYXVsdGJ1dHRvbiddKSkKCQl7CgkJICAkdGhpcy0+U2V0VGVtcGxhdGUgKCd1cGxvYWRfZW1haWx0ZW1wbGF0ZScsCgkJCQkgICAgICAkdGhpcy0+ZGZsdF9lbWFpbG5vdGlmeXRlbXBsYXRlKTsKCQl9CgkgICAgICBlbHNlCgkJewoJCSAgJHRoaXMtPlNldFRlbXBsYXRlICgndXBsb2FkX2VtYWlsdGVtcGxhdGUnLCAkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSk7CgkJfQoJICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdlbWFpbF90ZW1wbGF0ZScpOwoJICAgIH0KCX0KCiAgICAgIGNhc2UgJ3VwZGF0ZXN1bW1hcnl0ZW1wbGF0ZSc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTW9kaWZ5IFRlbXBsYXRlcycpKQoJICAgIHsKCSAgICAgIGlmIChpc3NldCAoJHBhcmFtc1snZGVmYXVsdGJ1dHRvbiddKSkKCQl7CgkJICAkdGhpcy0+U2V0VGVtcGxhdGUgKCd1cGxvYWRfZGlzcGxheXN1bW1hcnknLAoJCQkJICAgICAgJHRoaXMtPmRmbHRfc3VtbWFyeXRlbXBsYXRlKTsKCQl9CgkgICAgICBlbHNlCgkJewoJCSAgJHRoaXMtPlNldFRlbXBsYXRlICgndXBsb2FkX2Rpc3BsYXlzdW1tYXJ5JywgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10pOwoJCX0KCSAgICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnc3VtbWFyeV90ZW1wbGF0ZScpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICd1cGRhdGVkZXRhaWx0ZW1wbGF0ZSc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uICgnTW9kaWZ5IFRlbXBsYXRlcycpKQoJICAgIHsKCSAgICAgIGlmIChpc3NldCAoJHBhcmFtc1snZGVmYXVsdGJ1dHRvbiddKSkKCQl7CgkJICAkdGhpcy0+U2V0VGVtcGxhdGUgKCd1cGxvYWRfZGlzcGxheWRldGFpbCcsICR0aGlzLT5kZmx0X2RldGFpbHRlbXBsYXRlKTsKCQl9CgkgICAgICBlbHNlCgkJewoJCSAgJHRoaXMtPlNldFRlbXBsYXRlICgndXBsb2FkX2Rpc3BsYXlkZXRhaWwnLCAkcGFyYW1zWyd0ZW1wbGF0ZWNvbnRlbnQnXSk7CgkJfQoJICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdkZXRhaWxfdGVtcGxhdGUnKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgZGVmYXVsdDoKCXBhcmVudDo6RG9BY3Rpb24oICRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CglicmVhazsKICAgICAgfQogIH0KCmZ1bmN0aW9uIFNlYXJjaFJlc3VsdCgkcmV0dXJuaWQsICRhcnRpY2xlaWQsICRhdHRyID0gJycpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICBpZiggJGF0dHIgPT0gJ3VwbG9hZCcpCiAgICAgIHsKCS8vIGdldCB0aGUgY2F0ZWdvcnkgaWQgZm9yIGFuIHVwbG9hZCBpZAoJJGRldGFpbHMgPSAkdGhpcy0+R2V0VXBsb2FkRGV0YWlscygkYXJ0aWNsZWlkLCcnKTsKCQoJLy8gbm93IGdldCB0aGUgY2F0ZWdvcnkgbmFtZSBpbnN0ZWFkIG9mIHRoZSBjYXRlZ29yeSBpZCwgZ29kIAoJLy8gd2FzIEkgc3R1cGlkLgoJJHEgPSAiU0VMRUNUIHVwbG9hZF9jYXRlZ29yeV9uYW1lIEFTIG5hbWUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcwogICAgICAgICAgICAgIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoJGRldGFpbHNbJ3VwbG9hZF9jYXRlZ29yeV9pZCddKSApOwoJaWYoICEkZGJyZXN1bHQgfHwgISRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSApCgkgIHsKCSAgICBkaWUoICdlcnJvcicgKTsKCSAgICAvLyB0b2RvLCBhdWRpdAoJICAgIHJldHVybjsKCSAgfQoJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCSRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7CgkkcmVzdWx0WzFdID0gJGRldGFpbHNbJ3VwbG9hZF9uYW1lJ107CgkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRhcnRpY2xlaWQsICdkZWZhdWx0JywgJHJldHVybmlkLCAkZGV0YWlsc1sndXBsb2FkX25hbWUnXSwKCQkJCQlhcnJheSgnbW9kZSc9PidzaW5nbGUnLAoJCQkJCSAgICAgICd1cGxvYWRfaWQnID0+ICRhcnRpY2xlaWQsCgkJCQkJICAgICAgJ2NhdGVnb3J5JyA9PiAkcm93WyduYW1lJ10gKSwgJycsIHRydWUpOwoJcmV0dXJuICRyZXN1bHQ7CiAgICAgIH0KICB9CgogIGZ1bmN0aW9uIFNlYXJjaFJlSW5kZXgoJiRtb2R1bGUpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICRxdWVyeSA9ICJTRUxFQ1QgdXBsb2FkX2lkLCB1cGxvYWRfbmFtZSwgdXBsb2FkX2F1dGhvciwgdXBsb2FkX3N1bW1hcnksIHVwbG9hZF9kZXNjcmlwdGlvbiwgdXBsb2FkX2lwLCB1cGxvYWRfZGF0ZSBGUk9NIGNtc19tb2R1bGVfdXBsb2FkcyBBLCBjbXNfbW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBCIFdIRVJFIEEudXBsb2FkX2NhdGVnb3J5X2lkID0gQi51cGxvYWRfY2F0ZWdvcnlfaWQgQU5EIEIudXBsb2FkX2NhdGVnb3J5X2xpc3RhYmxlID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoIDEgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglkaWUoICRkYi0+RXJyb3JNc2coKSApOwogICAgICB9CiAgICB3aGlsZSggJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCiAgICAgIHsKCSRzdHIgPSAkcm93Wyd1cGxvYWRfbmFtZSddLicgJy4kcm93Wyd1cGxvYWRfYXV0aG9yJ10uJyAnLgoJICAkcm93Wyd1cGxvYWRfc3VtbWFyeSddLicgJy4kcm93Wyd1cGxvYWRfZGVzY3JpcHRpb24nXTsKCSRtb2R1bGUtPkFkZFdvcmRzKCAkdGhpcy0+R2V0TmFtZSgpLCAkcm93Wyd1cGxvYWRfaWQnXSwgJ3VwbG9hZCcsICRzdHIgKTsKICAgICAgfQogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgQkVHSU4gT0YgVUkgU1VQUE9SVCBGVU5DVElPTlMKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0FkbWluQ3JlYXRlVGVtcGxhdGVMaXN0KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYSBsaXN0IG9mIHRlbXBsYXRlcyBtYXRjaGluZwogICBhIHByZWZpeCwgYW5kIHRoZSBhcHByb3ByaWF0ZSBlZGl0LCBhZGQsIGFuZCBkZWxldGUgbGlua3MuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIGZ1bmN0aW9uIF9BZG1pbkNyZWF0ZVRlbXBsYXRlTGlzdCggJGlkLCAkcmV0dXJuaWQsICRwcmVmaXggKQogICAgewogICAgICAvLyB3ZSdyZSBnb25uYSBhbGxvdyBtdWx0aXBsZSB0ZW1wbGF0ZXMgaGVyZQogICAgICAvLyBidXQgd2UncmUgZ29ubmEgcHJlZml4IHRoZW0gYWxsIHdpdGggdXBsb2FkZm9ybV8KICAgICAgZ2xvYmFsICRnQ21zOwoKICAgICAgJGFsbHRlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCk7CiAgICAgICRyb3dhcnJheSA9IGFycmF5KCk7CiAgICAgICRyb3djbGFzcyA9ICdyb3cxJzsKICAgICAgZm9yZWFjaCggJGFsbHRlbXBsYXRlcyBhcyAkb25ldGVtcGxhdGUgKQoJewoJICBpZiggIXByZWdfbWF0Y2goIi9eJHByZWZpeC8iLCAkb25ldGVtcGxhdGUgKSApCgkgICAgewoJICAgICAgY29udGludWU7CgkgICAgfQoJICAKCSAgJHRtcCA9IHN1YnN0cigkb25ldGVtcGxhdGUsc3RybGVuKCRwcmVmaXgpKTsKCSAgJHJvdyA9IG5ldyBTdGRDbGFzcygpOwoJICAkcm93LT5uYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwKCQkJCQkgICR0bXAsIGFycmF5KCd0ZW1wbGF0ZScgPT4gJG9uZXRlbXBsYXRlICkpOwoJICAkcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCSAgJHJvdy0+ZWRpdGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCSAgICAgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+CgkJCQkJICAgICAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkJCSAgICAgIGFycmF5ICgndGVtcGxhdGUnID0+ICRvbmV0ZW1wbGF0ZSksCgkJCQkJICAgICAgJHRoaXMtPkxhbmcgKCdhcmV5b3VzdXJlJykpOwoKCSAgJHRtcCA9ICRwcmVmaXguImRlZmF1bHQiOwoJICBpZiggJG9uZXRlbXBsYXRlID09ICR0bXAgKQoJICAgIHsKCSAgICAgICRyb3ctPmRlbGV0ZWxpbmsgPSAnJm5ic3A7JzsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2RlbGV0ZXRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCQkgICAgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT4KCQkJCQkJICAgIERpc3BsYXlJbWFnZSAoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKCQkJCQkJCQkgICR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKCQkJCQkJICAgIGFycmF5ICgndGVtcGxhdGUnID0+ICRvbmV0ZW1wbGF0ZSksCgkJCQkJCSAgICAkdGhpcy0+TGFuZyAoJ2FyZXlvdXN1cmUnKSk7CgkgICAgfQoJICAgICAgCgkgIGFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7CgkgICgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKCX0KCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkgKTsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lcHJvbXB0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbmV3dGVtcGxhdGVsaW5rJywKCQkJICAgICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsCgkJCQkJICAgICAgICR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3dGVtcGxhdGUnKSwKCQkJCQkgICAgICAgYXJyYXkoJ3ByZWZpeCcgPT4gJHByZWZpeCApKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVtcGxhdGVzLnRwbCcpOwogICAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0FkbWluRWRpdENhdGVnb3J5KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgdGhlIGZvcm0gZm9yIHRoZSB1c2VyIHRvIGVkaXQKICAgY2F0ZWdvcnkgZGV0YWlscy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfQWRtaW5FZGl0Q2F0ZWdvcnkgKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZScsICR0aGlzLT5MYW5nICgnZWRpdGNhdGVnb3J5JykpOwogICAgCiAgICAvLyBjaGVjayB0aGluZ3Mgb3V0CiAgICBpZiAoIWlzc2V0ICgkcGFyYW1zWydjYXRlZ29yeV9pZCddKSkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgnZXJyb3Jfbm9jYXRlZ29yeScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZGRjYXRlZ29yeS50cGwnKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgY2F0ZWdvcnkgaW5mbyBmcm9tIHRoZSBkYXRhYmFzZSAoZm9yIHRoaXMgY2F0ZWdvcnkpCiAgICAkcXVlcnkgPQogICAgICAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXggKCkuCiAgICAgICJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKTsKICAgIGlmICghJGRicmVzdWx0KQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCdlcnJvcl9kYmVycm9yJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAxKTsKCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSAoJ2FkZGNhdGVnb3J5LnRwbCcpOwoJcmV0dXJuOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdyAoKTsKICAgIGlmICghJHJvdykKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZGRjYXRlZ29yeS50cGwnKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIHBvcHVsYXRlIHRoZSB0ZW1wbGF0ZQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgic3RhcnRmb3JtIiwKCQkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdGNhdGVnb3J5JywgJHJldHVybmlkKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdzdWJtaXQnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnY2FuY2VsJywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsgICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdzY2FuJywKCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoICRpZCwgJ3NjYW4nLCAkdGhpcy0+TGFuZygnc2NhbicpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9jYXRlZ29yeW5hbWUnLCAkdGhpcy0+TGFuZyAoJ3Byb21wdF9jYXRlZ29yeW5hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9jYXRlZ29yeW5hbWUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9jYXRlZ29yeW5hbWUnLAoJCQkJCQkJCQkgJHJvd1sndXBsb2FkX2NhdGVnb3J5X25hbWUnXSwgMjAsIDgwKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbmZvX2NhdGVnb3J5bmFtZScsICR0aGlzLT5MYW5nKCdpbmZvX2NhdGVnb3J5bmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9jYXRlZ29yeWRlc2MnLCAkdGhpcy0+TGFuZyAoJ3Byb21wdF9jYXRlZ29yeWRlc2MnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9jYXRlZ29yeWRlc2MnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9jYXRlZ29yeWRlc2MnLAoJCQkJCQkgICAkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfZGVzY3JpcHRpb24nXSwgODAsIDI1NSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5mb19jYXRlZ29yeWRlc2MnLCAkdGhpcy0+TGFuZygnaW5mb19jYXRlZ29yeWRlc2MnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfY2F0ZWdvcnlwYXRoJywkdGhpcy0+TGFuZyAoJ3Byb21wdF9jYXRlZ29yeXBhdGgnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9jYXRlZ29yeXBhdGgnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9jYXRlZ29yeXBhdGgnLCRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10sCgkJCQkJCSAgIDgwLCAyNTUsICJyZWFkb25seSIpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2luZm9fY2F0ZWdvcnlwYXRoJywgJHRoaXMtPkxhbmcoJ2luZm9fY2F0ZWdvcnlwYXRoJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X2NhdGVnb3J5bGlzdGFibGUnLCAkdGhpcy0+TGFuZyAoJ3Byb21wdF9jYXRlZ29yeWxpc3RhYmxlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfY2F0ZWdvcnlsaXN0YWJsZScsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94ICgkaWQsCgkJCQkJCSAgICAgICAnaW5wdXRfY2F0ZWdvcnlsaXN0YWJsZScsIDEsICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9saXN0YWJsZSddKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwYXRobWVzc2FnZScsICR0aGlzLT5MYW5nICgnY2Fubm90bW9kaWZ5cGF0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2hpZGRlbicsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiAoJGlkLCAnY2F0ZWdvcnlfaWQnLAoJCQkJCQkJICAgICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKTsKICAgIAogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnYWRkY2F0ZWdvcnkudHBsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0FkbWluRGVsZXRlQ2F0ZWdvcnkoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIEZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYSBmb3JtIHRvIGFsbG93IHRoZSB1c2VyIHRvIGRlbGV0ZQogICBhIGNhdGVnb3J5IGZyb20gdGhlIGRhdGFiYXNlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9BZG1pbkRlbGV0ZUNhdGVnb3J5ICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgaWYoICFpc3NldCggJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSApICkKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIHRlc3QgdG8gc2VlIGlmIHRoZXJlIGFyZSBzdGlsbCBmaWxlcyBsZWZ0IGluIHRoaXMgY2F0ZWdvcnksIGlmIHRoZXJlIGFyZSwgdGhlbiBwdWtlCiAgICAvLyBvdGhlcndpc2UgZGVsZXRlIHRoZSBkaXJlY3RvcnkgdG9vIChtYXliZSkKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSApICk7CiAgICAkYyA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKICAgIGlmKCAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICR0aGlzLT5MYW5nICgnZXJyb3JfY2F0ZWdvcnlub3RlbXB0eScpKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGRpc3BsYXkgc29tZXRoaW5nIHRvIGFsbG93IHRoZSB1c2VyIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkuLi4uIHdpbGwgKG9wdGlvbmFsbHkpIGRlbGV0ZQogICAgLy8gYWxsIG9mIHRoZSAobWFuYWdlZCkgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSB0b28uCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICd3YXJuaW5nX2RlbGV0ZWNhdGVnb3J5JywKCQkJICAgJHRoaXMtPkxhbmcoJ3dhcm5pbmdfZGVsZXRlY2F0ZWdvcnknKSApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnc3RhcnRmb3JtJyAsCgkJCSAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2RlbGV0ZWNhdGVnb3J5JywgJHJldHVybmlkKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdoaWRkZW4nLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ2NhdGVnb3J5X2lkJywgJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkgKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiggJ3Byb21wdF9kZWxldGVkaXJlY3RvcnknLAoJCQkgICAkdGhpcy0+TGFuZygncHJvbXB0X2RlbGV0ZWRpcmVjdG9yeScpICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdpbnB1dF9kZWxldGVkaXJlY3RvcnknLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCggJGlkLAoJCQkJCQkgICAgICAgJ2lucHV0X2RlbGV0ZWRpcmVjdG9yeScsCgkJCQkJCSAgICAgICAxLDAgKSApOwkJCQkJCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVsZXRlY2F0ZWdvcnkudHBsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0FkbWluRG9EZWxldGVDYXRlZ29yeSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgQSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGRvZXMgdGhlIGRlbGV0aW9uIG9mIHRoZSBjYXRlZ29yeQogICBnaXZlbiB0aGUgY2F0ZWdvcnkgaWQgaW4gdGhlIHBhcmFtZXRlcnMsIGFuZCBhIGZldyBvdGhlcgogICBuZWNlc3NhcnkgZGV0YWlscy4gIFRoaXMgZnVuY3Rpb24gYWxzbyB3aWxsIG9wdGlvbmFsbHkKICAgcmVtb3ZlIGFsbCBmaWxlcyBmcm9tIHRoZSBkaXJlY3RvcnkuLi4gdGhvdWdoIEkgYW0gbm90CiAgIGNlcnRhaW4gaWYgdGhpcyBpcyBnb29kIGNvZGUKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfQWRtaW5Eb0RlbGV0ZUNhdGVnb3J5ICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgaWYoICFpc3NldCggJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSApICkKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgY2F0ZWdvcnkgZGV0YWlscwogICAgJGNhdGVnb3J5ID0gJHRoaXMtPl9nZXRVcGxvYWRDYXRlZ29yeURldGFpbHMoICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gKTsKICAgIGlmKCAhJGNhdGVnb3J5ICkgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2RiZXJyb3InKSk7CglyZXR1cm47CiAgICB9CgogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9kZWxldGVkaXJlY3RvcnknXSkgJiYgJHBhcmFtc1snaW5wdXRfZGVsZXRlZGlyZWN0b3J5J10gKQogICAgICB7CgkkcCA9ICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCAkY2F0ZWdvcnlbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10gKTsKCSRkaXJfb3BlbiA9IEBvcGVuZGlyKCAkcCApOwoJaWYoICEkZGlyX29wZW4gKSB7CgkgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX3BhdGhlcnJvcicpKTsKCSAgcmV0dXJuOwoJfQoKCXdoaWxlKCgkZGlyX2NvbnRlbnQgPSByZWFkZGlyKCRkaXJfb3BlbikpICE9IGZhbHNlKQoJICB7CgkgICAgaWYoIGlzX2ZpbGUoICRwLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGRpcl9jb250ZW50ICkgKSB7CgkgICAgICB1bmxpbmsoICRwLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGRpcl9jb250ZW50ICk7CgkgICAgfQoJICB9CgoJLy8gbm93IHRyeSB0byB1bmxpbmsgdGhlIGRpcmVjdG9yeSBpdHNlbGYKCS8vIGJ1dCBpZ25vcmUgYW55IGVycm9ycy4KCXJtZGlyKCAkcCApOwogICAgICB9CgoKICAgIC8vIGRlbGV0ZSB0aGUgZGlyZWN0b3J5IGNhdGVnb3J5CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gKSApOwoKICAgIC8vIHNlbmQgYW4gZXZlbnQKICAgICRwYXJtc1tdID0gYXJyYXkoKTsKICAgICRwYXJtc1snbmFtZSddID0gJGNhdGVnb3J5Wyd1cGxvYWRfY2F0ZWdvcnlfbmFtZSddOwogICAgJHBhcm1zWydwYXRoJ10gPSAkY2F0ZWdvcnlbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ107CiAgICAkdGhpcy0+U2VuZEV2ZW50KCdPbkRlbGV0ZUNhdGVnb3J5JywkcGFybXMpOwoKICAgIC8vIGFuZCB3ZSdyZSBkb25lCiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCAkaWQsICdjYXRlZ29yaWVzJyApOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9BZG1pbkVkaXRVcGxvYWQoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIEEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBhIGZvcm0gdG8gYWxsb3cgdGhlIHVzZXIgdG8gZWRpdAogICB0aGUgcGFyYW1ldGVycyBvciBkZXRhaWxzIG9mIGFuIHVwbG9hZGVkIGZpbGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0FkbWluRWRpdFVwbG9hZCAoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3RpdGxlJywgJHRoaXMtPkxhbmcgKCdlZGl0dXBsb2FkJykpOwogICAgCiAgICAvLyBjaGVjayB0aGluZ3Mgb3V0CiAgICBpZiAoIWlzc2V0ICgkcGFyYW1zWyd1cGxvYWRfaWQnXSkpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkdGhpcy0+TGFuZyAoJ2Vycm9yX25vaWQnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsIDEpOwoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnZWRpdHVwbG9hZC50cGwnKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgaW5mbyBmcm9tIHRoZSBkYXRhYmFzZSAoZm9yIHRoaXMgZmlsZSkKICAgICRxdWVyeSA9CiAgICAgICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCAoKS4KICAgICAgIm1vZHVsZV91cGxvYWRzIFdIRVJFIHVwbG9hZF9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ3VwbG9hZF9pZCddKSk7CiAgICBpZiAoISRkYnJlc3VsdCkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdlZGl0dXBsb2FkLnRwbCcpOwoJcmV0dXJuOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdyAoKTsKICAgIGlmICghJHJvdykKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdlZGl0dXBsb2FkLnRwbCcpOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gYW5kIHRoZSBjYXRlZ29yeSBpbmZvIGZvciB0aGlzIGNhdGVnb3J5CiAgICAkY2F0cGF0aCA9ICR0aGlzLT5nZXRDYXRlZ29yeVBhdGhGcm9tSUQoJHJvd1sndXBsb2FkX2NhdGVnb3J5X2lkJ10pOwoKICAgIC8vIGdldCB0aGUgY2F0ZWdvcnkgbGlzdAogICAgJGNhdGVnb3J5bGlzdCA9IGFycmF5ICgpOwogICAgJHF1ZXJ5ID0KICAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4ICgpLgogICAgICAibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBPUkRFUiBCWSB1cGxvYWRfY2F0ZWdvcnlfbmFtZSBBU0MiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnkpOwogICAgaWYgKCEkZGJyZXN1bHQpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCdlcnJvcl9ub2NhdGVnb3JpZXMnKSk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJLy8gdGhpcyBjb3VsZCBwcm9iYWJseSBiZSBkb25lIHdpdGggYSBmb3JfZWFjaCwgYnV0IHdoYXQgdGhlIGhlbGwKCXdoaWxlICgkcm93MiA9ICRkYnJlc3VsdC0+RmV0Y2hSb3cgKCkpCgkgIHsKCSAgICAkY2F0ZWdvcnlsaXN0WyRyb3cyWyd1cGxvYWRfY2F0ZWdvcnlfbmFtZSddXSA9CgkgICAgICAkcm93MlsndXBsb2FkX2NhdGVnb3J5X2lkJ107CgkgIH0KICAgICAgfQoKICAgIC8vIHBvcHVsYXRlIHRoZSB0ZW1wbGF0ZQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgic3RhcnRmb3JtIiwKCQkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZG9fZWRpdHVwbG9hZCcsICRyZXR1cm5pZCkpOwoJICAvLyB0b2RvIGNoZWNrIHRoaXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBzcGFjZXMgaW4gdGhlIG5hbWUKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2ZpeCcsCgkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdmaXgnLCAkdGhpcy0+TGFuZygnZml4bWUnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2NhbmNlbCcsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwogICAgCgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X3VwbG9hZG5hbWUnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3VwbG9hZG5hbWUnLCAKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X3VwbG9hZG5hbWUnLAoJCQkJCQkgICRyb3dbJ3VwbG9hZF9uYW1lJ10sIDIwLCAyNTUgKSk7CiAgICAvLyB0aHVtYm5haWw/CiAgICAkdG5maWxlID0gJHRoaXMtPl9jYXRlZ29yeVBhdGgoICRjYXRwYXRoLkRJUkVDVE9SWV9TRVBBUkFUT1IuCgkJCQkgICAgJy50aHVtYnMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhcmFtc1sndXBsb2FkX2lkJ10uJ190aHVtYicpOwogICAgaWYoIGZpbGVfZXhpc3RzKCAkdG5maWxlICkgKQogICAgICB7CgkkdG51cmwgPSAkdGhpcy0+Y21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uIi8iLiRjYXRwYXRoLicvLnRodW1icy8nLiRwYXJhbXNbJ3VwbG9hZF9pZCddLidfdGh1bWInOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X3RodW1ibmFpbCcsICR0aGlzLT5MYW5nKCd0aHVtYm5haWwnKS4nOicpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncGljX3RodW1ibmFpbCcsICc8aW1nIHNyYz0iJy4kdG51cmwuJyIgYm9yZGVyPSIwIi8+Jyk7CiAgICAgIH0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ25hbWVtZXNzYWdlJywgJHRoaXMtPkxhbmcoJ3JlbmFtZW1lc3NhZ2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfdXBsb2FkZGF0ZScsICR0aGlzLT5MYW5nKCdkYXRldXBsb2FkZWQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdkYXRhX3VwbG9hZGRhdGUnLCAkcm93Wyd1cGxvYWRfZGF0ZSddKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF91cGxvYWRzaXplJywgJHRoaXMtPkxhbmcoJ3NpemVrYicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2RhdGFfdXBsb2Fkc2l6ZScsIGludHZhbCgkcm93Wyd1cGxvYWRfc2l6ZSddIC8gMTAyNC4wICsgMC41KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfdXBsb2FkYXV0aG9yJywgJHRoaXMtPkxhbmcoJ2F1dGhvcicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3VwbG9hZGF1dGhvcicsIAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3VwbG9hZGF1dGhvcicsCgkJCQkJCSAgJHJvd1sndXBsb2FkX2F1dGhvciddLCAyMCwgMjU1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfbW92ZWNhdGVnb3J5JywgJHRoaXMtPkxhbmcgKCdwcm9tcHRfY2F0ZWdvcnluYW1lJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfbW92ZWNhdGVnb3J5JywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcERvd24gKCRpZCwgImlucHV0X21vdmVjYXRlZ29yeSIsICRjYXRlZ29yeWxpc3QsIC0xLAoJCQkJCQkgICAgICAgJHJvd1sndXBsb2FkX2NhdGVnb3J5X2lkJ10pKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3BhdGhtZXNzYWdlJywgJHRoaXMtPkxhbmcoJ3BhdGhtZXNzYWdlJykpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF91cGxvYWRzdW1tYXJ5JywgJHRoaXMtPkxhbmcgKCdzdW1tYXJ5JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfdXBsb2Fkc3VtbWFyeScsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X3VwbG9hZHN1bW1hcnknLAoJCQkJCQkgICAkcm93Wyd1cGxvYWRfc3VtbWFyeSddLCA4MCwgMjU1KSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X3VwbG9hZGRlc2MnLCAkdGhpcy0+TGFuZyAoJ2Rlc2NyaXB0aW9uJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfdXBsb2FkZGVzYycsCgkJCSAgICR0aGlzLT5DcmVhdGVUZXh0QXJlYSAoZmFsc2UsICRpZCwgJHJvd1sndXBsb2FkX2Rlc2NyaXB0aW9uJ10sICdpbnB1dF91cGxvYWRkZXNjJyApKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdoaWRkZW4nLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4gKCRpZCwgJ3VwbG9hZF9pZCcsJHBhcmFtc1sndXBsb2FkX2lkJ10pLgoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4gKCRpZCwgJ2NhdGVnb3J5X2lkJywkcGFyYW1zWydjYXRlZ29yeV9pZCddKSk7CiAgICAKICAgIC8vIHBvcHVsYXRlIHRoZSByb3dzIG9mIGRvd25sb2FkIGluZm9ybWF0aW9uCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfZG93bmxvYWRzIFdIRVJFIGZpbGVfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1sndXBsb2FkX2lkJ10gKSApOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZGF0ZXRleHQnLCAkdGhpcy0+TGFuZygnZGF0ZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXB0ZXh0JywgJHRoaXMtPkxhbmcoJ2lwX2FkZHJlc3MnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VzZXJ0ZXh0JywgJHRoaXMtPkxhbmcoJ3VzZXJuYW1lJykpOwogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICRyb3djbGFzcyA9ICdyb3cxJzsKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwoJJG9uZXJvdy0+ZGF0ZSA9ICRyb3dbJ2Rvd25sb2FkX2RhdGUnXTsKCSRvbmVyb3ctPmlwICAgPSAkcm93Wydkb3dubG9hZF9pcCddOwoJJG9uZXJvdy0+dXNlciA9ICRyb3dbJ2Rvd25sb2FkX3VzZXInXTsKCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwkJCSAgICAgCgoJYXJyYXlfcHVzaCggJHJvd2FycmF5LCAkb25lcm93KTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKICAgICAgfQoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2l0ZW1zJywgJHJvd2FycmF5KTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwoKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSAoJ2VkaXR1cGxvYWQudHBsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0FkbWluRG9FZGl0VXBsb2FkKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBY3R1YWxseSBwZXJmb3JtIHRoZSBkYXRhYmFzZSB1cGRhdGVzIHJlcXVlc3RlZCBpbiB0aGUKICAgX0FkbWluRWRpdFVwbG9hZCBmb3JtLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9BZG1pbkRvRWRpdFVwbG9hZCAoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQogIHsKICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGFsbCB0aGUgcGFyYW1ldGVycyB3ZSBuZWVkCiAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ3VwbG9hZF9pZCddKSB8fAoJIWlzc2V0KCRwYXJhbXNbJ2lucHV0X3VwbG9hZGRlc2MnXSkgfHwKCSFpc3NldCgkcGFyYW1zWydpbnB1dF9tb3ZlY2F0ZWdvcnknXSkgKSAKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfQogIAoJICAvLyB0b2RvLCBhcmUgd2UgZml4aW5nIGl0PwogCiAgICAvLyBub3cgc2VlIGlmIHdlIGNhbiBmaW5kIHRoZSBkZXRhaWxzIGFib3V0IHRoaXMgdXBsb2FkCiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMgV0hFUkUgdXBsb2FkX2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ3VwbG9hZF9pZCddICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkgewogICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkgICAgICAgJHRoaXMtPkxhbmcgKCdlcnJvcl9kYmVycm9yJykpOwogICAgICByZXR1cm47CiAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICEkcm93ICkgewogICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkgICAgICAgJHRoaXMtPkxhbmcgKCdlcnJvcl9kYmVycm9yJykpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gd293IHdlIGRpZC4uLiBub3cgYWxsIHdlIGhhdmUgdG8gZG8gaXMgY29tcGFyZSBjb21tZW50cywgYW5kIHRoZSBjYXRlZ29yaWVzLCBhbmQgb2ZmIHdlIGdvLgogICAgJGRvX3VwZGF0ZSA9IGZhbHNlOwogICAgJG5ld25hbWUgPSAkcm93Wyd1cGxvYWRfbmFtZSddOwogICAgJG5ld2NhdGVnb3J5ID0gJHJvd1sndXBsb2FkX2NhdGVnb3J5X2lkJ107CiAgICAkbmV3YXV0aG9yID0gJHJvd1sndXBsb2FkX2F1dGhvciddOwogICAgJG5ld2Rlc2MgPSAkcm93Wyd1cGxvYWRfZGVzY3JpcHRpb24nXTsKICAgICRuZXdzdW1tYXJ5ID0gJHJvd1sndXBsb2FkX3N1bW1hcnknXTsKICAgIGlmKCAkcGFyYW1zWydpbnB1dF9tb3ZlY2F0ZWdvcnknXSAhPSAkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXSB8fAoJJHBhcmFtc1snaW5wdXRfdXBsb2FkbmFtZSddICE9ICRyb3dbJ3VwbG9hZF9uYW1lJ10gKSB7CiAgICAgIC8vIGxvb2tzIGxpa2Ugd2UgaGF2ZSB0byBtb3ZlIGl0CiAgICAgIC8vIGdldCB0aGUgaW5mbyBmb3IgdGhlIG5ldyBjYXRlZ29yeQogICAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkcGFyYW1zWydpbnB1dF9tb3ZlY2F0ZWdvcnknXSApICk7CiAgICAgICRjYXQxcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgICBpZiggISRjYXQxcm93ICkgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcgKCdlcnJvcl9kYmVycm9yJykpOwoJcmV0dXJuOwogICAgICB9CgogICAgICAvLyBhbmQgdGhlIG9sZCBjYXRlZ29yeQogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddICkgKTsKICAgICAgJGNhdDJyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgIGlmKCAhJGNhdDJyb3cgKSB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZyAoJ2Vycm9yX2RiZXJyb3InKSk7CglyZXR1cm47CiAgICAgIH0KICAgICAgCiAgICAgIC8vIG5vdyB3ZSBjYW4gbW92ZSB0aGUgZmlsZSBmcm9tIGRpcmVjdG9yeSBvbmUgdG8gdHdvLgogICAgICAvLyBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QgaW4gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQogICAgICAkZnJvbWZpbGUgPSAkdGhpcy0+X3VwbG9hZFBhdGgoICRjYXQycm93Wyd1cGxvYWRfY2F0ZWdvcnlfcGF0aCddLCB0cmltKCRyb3dbJ3VwbG9hZF9uYW1lJ10pICk7CiAgICAgICR0b2ZpbGUgICA9ICR0aGlzLT5fdXBsb2FkUGF0aCggJGNhdDFyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10sIHRyaW0oJHBhcmFtc1snaW5wdXRfdXBsb2FkbmFtZSddKSApOwoKICAgICAgLy8gbW92ZSB0aGUgZmlsZQogICAgICBpZiggZmlsZV9leGlzdHMoICR0b2ZpbGUgKSApIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nICgnZXJyb3JfZmlsZWV4aXN0cycsJHRvZmlsZSkpOwoJcmV0dXJuOwogICAgICB9CiAgICAgIGlmKCAhcmVuYW1lKCAkZnJvbWZpbGUsICR0b2ZpbGUgKSApIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nICgnZXJyb3JfY2Fubm90cmVuYW1lJykpOwoJcmV0dXJuOwogICAgICB9CgogICAgICAvLyBhbmQgbW92ZSBhbnkgdGh1bWJuYWlsCiAgICAgICR0bl9mcm9tZmlsZSA9ICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCAkY2F0MnJvd1sndXBsb2FkX2NhdGVnb3J5X3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLgoJCQkJCSAgICcudGh1bWJzJy5ESVJFQ1RPUllfU0VQQVJBVE9SLiRwYXJhbXNbJ3VwbG9hZF9pZCddLidfdGh1bWInKTsKICAgICAgJHRuX3RvZmlsZSAgID0gJHRoaXMtPl9jYXRlZ29yeVBhdGgoICRjYXQxcm93Wyd1cGxvYWRfY2F0ZWdvcnlfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuCgkJCQkJICAgJy50aHVtYnMnLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhcmFtc1sndXBsb2FkX2lkJ10uJ190aHVtYicpOwogICAgICBpZiggZmlsZV9leGlzdHMoICR0bl9mcm9tZmlsZSApICkKCXsKCSAgLy8geWVwLCB3ZSBnb3R0YSBtb3ZlIHRoZSB0aHVtYm5haWwgdG9vCgkgICR0b2RpciA9IGRpcm5hbWUoICR0bl90b2ZpbGUgKTsKCSAgaWYoICFmaWxlX2V4aXN0cyggJHRvZGlyICkgKQoJICAgIHsKCSAgICAgICRyZXN1bHQgPSAkdGhpcy0+X21rZGlyciggJHRvZGlyICk7CgkgICAgICBpZiggJHJlc3VsdCA9PSBmYWxzZSApCgkJewoJCSAgLy8gdWgtb2gsIHRoZSByZW5hbWUgZmFpbGVkLCBwdXQgdGhlIG9sZCBmaWxlIGJhY2sKCQkgIHJlbmFtZSggJHRvZmlsZSwgJGZyb21maWxlICk7CgkJICAvLyBhbmQgZGlzcGxheSBhbiBlcnJvcgoJCSAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcgKCdlcnJvcl9jYW5ub3RjcmVhdGVkaXJlY3RvcnknKQoJCQkJCSAgICAuJzogJy4kdG9kaXIpOwoJCSAgcmV0dXJuOwoJCX0KCgkgICAgICAvLyB3b29ob28sIGRpcmVjdG9yeSBjcmVhdGVkCgkgICAgICAvLyBub3cgY3JlYXRlIHRoZSAuaW5kZXguaHRtbAoJICAgICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfZHVtbXlfaW5kZXhfaHRtbCcpICkKCQl7CgkJICB0b3VjaCggJHRvZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuImluZGV4Lmh0bWwiICk7CgkJfQoKCSAgICB9CgoJICAvLyBhbmQgcmVuYW1lIHRoZSB0aHVtYm5haWwKCSAgcmVuYW1lKCAkdG5fZnJvbWZpbGUsICR0bl90b2ZpbGUgKTsKCX0KCiAgICAgICRkb191cGRhdGUgPSB0cnVlOwogICAgICAkbmV3Y2F0ZWdvcnkgPSAkcGFyYW1zWydpbnB1dF9tb3ZlY2F0ZWdvcnknXTsKICAgICAgJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksCgkJICAgICR0aGlzLT5MYW5nKCdtb3ZlZGZpbGUnLCAkZnJvbWZpbGUsICR0b2ZpbGUgKSk7CiAgICB9CgogICAgaWYoICRwYXJhbXNbJ2lucHV0X3VwbG9hZGRlc2MnXSAhPSAkcm93Wyd1cGxvYWRfZGVzY3JpcHRpb24nXSApIHsKICAgICAgJGRvX3VwZGF0ZSA9IHRydWU7CiAgICAgICRuZXdkZXNjID0gdHJpbSgkcGFyYW1zWydpbnB1dF91cGxvYWRkZXNjJ10pOwogICAgfQogICAgaWYoICRwYXJhbXNbJ2lucHV0X3VwbG9hZG5hbWUnXSAhPSAkcm93Wyd1cGxvYWRfbmFtZSddICkgewogICAgICAkZG9fdXBkYXRlID0gdHJ1ZTsKICAgICAgJG5ld25hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3VwbG9hZG5hbWUnXSk7CiAgICB9CiAgICBpZiggJHBhcmFtc1snaW5wdXRfdXBsb2Fkc3VtbWFyeSddICE9ICRyb3dbJ3VwbG9hZF9zdW1tYXJ5J10gKSB7CiAgICAgICRkb191cGRhdGUgPSB0cnVlOwogICAgICAkbmV3c3VtbWFyeSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfdXBsb2Fkc3VtbWFyeSddKTsKICAgIH0KICAgIGlmKCAkcGFyYW1zWydpbnB1dF91cGxvYWRhdXRob3InXSAhPSAkcm93Wyd1cGxvYWRfYXV0aG9yJ10gKSB7CiAgICAgICRkb191cGRhdGUgPSB0cnVlOwogICAgICAkbmV3YXV0aG9yID0gdHJpbSgkcGFyYW1zWydpbnB1dF91cGxvYWRhdXRob3InXSk7CiAgICB9CgogICAgaWYoICRkb191cGRhdGUgKSB7CiAgICAgICRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzIFNFVAogICAgICAgICAgICAgICAgICB1cGxvYWRfbmFtZSA9ID8sIHVwbG9hZF9hdXRob3IgPSA/LAogICAgICAgICAgICAgICAgICB1cGxvYWRfc3VtbWFyeSA9ID8sIHVwbG9hZF9kZXNjcmlwdGlvbiA9ID8sCiAgICAgICAgICAgICAgICAgIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8gV0hFUkUgdXBsb2FkX2lkID0gPyI7CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJG5ld25hbWUsICRuZXdhdXRob3IsICRuZXdzdW1tYXJ5LCAkbmV3ZGVzYywgJG5ld2NhdGVnb3J5LCAkcGFyYW1zWyd1cGxvYWRfaWQnXSApICk7CiAgICB9CgogICAgLy8gZG9uZS4KICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnZmlsZXMnLCBhcnJheSggJ2N1cmNhdGVnb3J5JyA9PiAkcGFyYW1zWydjYXRlZ29yeV9pZCddKSApOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9BZG1pbkRvRGVsZXRlVXBsb2FkKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBY3R1YWxseSBkZWxldGUgYW4gdXBsb2FkIGZyb20gdGhlIGZpbGVzeXN0ZW0gYW5kCiAgIGZyb20gdGhlIGRhdGFiYXNlLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9BZG1pbkRvRGVsZXRlVXBsb2FkICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgLy8gd2UncmUgZ29ubmEgcHV0IHNvbWUgdGhvdWdodCBpbnRvIHRoaXMuLi4gdGhlIHVzZXIKICAgIC8vIGhhcyBhbHJlYWR5IGFuc3dlcmVkLCBZZXAsIFdlJ3JlIHN1cmUgdGhlIGZpbGUgZXhpc3RzLCBkb24ndCByZWFsbHkgY2FyZSBhbnl3YXlzCiAgICAvLyBzbyBhbGwgd2UgaGF2ZSB0byBkbyBpcyByZW1vdmUgdGhlIGZpbGUsIGFuZCByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHRoZSBkYXRhYmFzZS4KCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWyd1cGxvYWRfaWQnXSApICkgCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgaW5mbyBhYm91dCB0aGUgdXBsb2FkIHdlJ3JlIGdvbm5hIGRlbGV0ZQogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzIFdIRVJFIHVwbG9hZF9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkcGFyYW1zWyd1cGxvYWRfaWQnXSApICk7CiAgICBpZiggISRkYnJlc3VsdCApIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2RiZXJyb3InKSk7CglyZXR1cm47CiAgICB9CiAgICAkdXBsb2Fkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICEkdXBsb2Fkcm93ICkgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJICAgICAgICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCXJldHVybjsKICAgIH0KICAgIAogICAgLy8gYW5kIHRoZSBpbmZvIGFib3V0IGl0J3MgY2F0ZWdvcnkKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIFdIRVJFIHVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkdXBsb2Fkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXSApICk7CiAgICBpZiggISRkYnJlc3VsdCApIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2RiZXJyb3InKSk7CglyZXR1cm47CiAgICB9CiAgICAkY2F0ZWdvcnlyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICBpZiggISRjYXRlZ29yeXJvdyApIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2RiZXJyb3InKSk7CglyZXR1cm47CiAgICB9CiAgICAKICAgIC8vIG5vdyBidWlsZCB0aGUgcGF0aAogICAgJGZpbGUgPSAkdGhpcy0+X3VwbG9hZFBhdGgoICRjYXRlZ29yeXJvd1sndXBsb2FkX2NhdGVnb3J5X3BhdGgnXSwgJHVwbG9hZHJvd1sndXBsb2FkX25hbWUnXSApOwoKICAgIC8vIGFuZCBkZWxldGUgdGhlIGZpbGUKICAgIEB1bmxpbmsoICRmaWxlICk7CgogICAgLy8gYW5kIHRoZSB0aHVtYm5haWwgaWYgb25lIGV4aXN0cwogICAgJHRuZmlsZSA9ICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCAkY2F0ZWdvcnlyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10gKS5ESVJFQ1RPUllfU0VQQVJBVE9SLicudGh1bWJzJzsKICAgICR0bmZpbGUgLj0gRElSRUNUT1JZX1NFUEFSQVRPUi4kcGFyYW1zWyd1cGxvYWRfaWQnXS4nX3RodW1iJzsKICAgIEB1bmxpbmsoICR0bmZpbGUgKTsKCiAgICAvLyBhbmQgdGhlIGRvd25sb2FkcwogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19kb3dubG9hZHMgV0hFUkUgZmlsZV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkdXBsb2Fkcm93Wyd1cGxvYWRfaWQnXSApICk7CgogICAgLy8gYW5kIHRoZSByZWNvcmQgaXRzZWxmLgogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyBXSEVSRSB1cGxvYWRfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSggJHVwbG9hZHJvd1sndXBsb2FkX2lkJ10gKSApOwoKICAgIC8vIGFuZCB3ZSdyZSBkb25lCiAgICAkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5sYW5nKCdmcmllbmRseW5hbWUnKSwKCQkgICR0aGlzLT5sYW5nKCdkZWxldGVkJywgJGRlc3RuYW1lKSApOwoKICAgIC8vIGRlbGV0ZSB0aGUgc2VhcmNoIHN0dWZmCiAgICAkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnU2VhcmNoJyk7CiAgICBpZiAoJG1vZHVsZSAhPSBGQUxTRSkKICAgICAgewoJJG1vZHVsZS0+RGVsZXRlV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJHVwbG9hZHJvd1sndXBsb2FkX2lkJ10sICd1cGxvYWQnKTsKICAgICAgfQogICAgCgogICAgLy8gc2VuZCBhbiBldmVudAogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICRwYXJtc1snaWQnXSA9ICR1cGxvYWRyb3dbJ3VwbG9hZF9pZCddOwogICAgJHBhcm1zWyduYW1lJ10gPSAkdXBsb2Fkcm93Wyd1cGxvYWRfbmFtZSddOwogICAgJHBhcm1zWydjYXRlZ29yeV9pZCddID0gJHVwbG9hZHJvd1sndXBsb2FkX2NhdGVnb3J5X2lkJ107CiAgICAkdGhpcy0+U2VuZEV2ZW50KCdPblJlbW92ZScsICRwYXJtcyApOwoKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnZmlsZXMnLCBhcnJheSggJ2lucHV0X2NhdGVnb3J5JyA9PiAkdXBsb2Fkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXSkpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9BZG1pbkRvRWRpdENhdGVnb3J5KCRpZCwgJHBhcmFtcywgJHJldHVybmlkKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgQWN0dWFsbHkgZWRpdCBhIGNhdGVnb3J5IGdpdmVuIHRoZSBpbmZvcm1hdGlvbiBnaXZlbgogICBpbiB0aGUgZWRpdCBjYXRlZ29yeSBmb3JtLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9BZG1pbkRvRWRpdENhdGVnb3J5ICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgCiAgICAvLyBhcmUgd2UgY2FuY2VsbGluZwogICAgaWYgKGlzc2V0ICgkcGFyYW1zWydjYW5jZWwnXSkpCiAgICAgIHsKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnY2F0ZWdvcmllcycpOwogICAgICB9CiAgICAKICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIHNvbWV0aGluZyB0byB3b3JrIHdpdGgKICAgIGlmICghaXNzZXQgKCRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pIHx8ICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10gPT0gIiIpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkdGhpcy0+TGFuZyAoImVycm9yX25vY2F0ZWdvcnlpZCIpKTsKICAgICAgfQogICAgZWxzZSBpZiAoIWlzc2V0ICgkcGFyYW1zWydpbnB1dF9jYXRlZ29yeW5hbWUnXSkKCSAgICAgfHwgJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnluYW1lJ10gPT0gIiIpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkdGhpcy0+TGFuZyAoImVycm9yX2VtcHR5Y2F0ZWdvcnkiKSk7CiAgICAgIH0KICAgIGVsc2UgaWYgKCFpc3NldCAoJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlwYXRoJ10pCgkgICAgIHx8ICRwYXJhbXNbJ2lucHV0X2NhdGVnb3J5ZGVzYyddID09ICIiKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsICIxIik7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCJlcnJvcl9lbXB0eXBhdGgiKSk7CiAgICAgIH0KICAgIGVsc2UgaWYgKGlzc2V0KCAkcGFyYW1zWydzY2FuJ10gKSApCiAgICAgIHsKICAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMKICAgICAgICAgICAgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyI7CiAgICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydjYXRlZ29yeV9pZCddKSApOwogICAgICAgICBpZiggISRkYnJlc3VsdCApCiAgICAgICAgICAgewoJICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsICIxIik7CgkgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkdGhpcy0+TGFuZyAoImVycm9yX2RiZXJyb3IiKSk7CiAgICAgICAgICAgfSAKICAgICAgICAgZWxzZSAKICAgICAgICAgICB7CiAgICAgICAgICAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgICAgICAgICAgaWYoICEkcm93ICkgCiAgICAgICAgICAgICAgIHsKICAgCSAgICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKIAkgICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCJlcnJvcl9kYmVycm9yIikpOwogICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICRkaXIgPSAkdGhpcy0+X2NhdGVnb3J5UGF0aCggJHJvd1sndXBsb2FkX2NhdGVnb3J5X3BhdGgnXSApOwogICAgICAgICAgICAgICAgICR0aGlzLT5TY2FuRGlyZWN0b3J5KCAkcGFyYW1zWydjYXRlZ29yeV9pZCddLCAkZGlyICk7CgkJICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnZmlsZXMnLCBhcnJheSgnaW5wdXRfY2F0ZWdvcnknID0+ICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pICk7CgkJIHJldHVybjsKICAgICAgICAgICAgICAgfSAKICAgICAgICAgIH0KICAgICAgfQogICAgZWxzZQogICAgICB7CgkvLyBub3cgcHJlcGFyZSB0byB1cGRhdGUgdGhlIHJlY29yZAoJJHF1ZXJ5ID0KCSAgIlVQREFURSAiLmNtc19kYl9wcmVmaXggKCkuCgkgICJtb2R1bGVfdXBsb2Fkc19jYXRlZ29yaWVzIFNFVCB1cGxvYWRfY2F0ZWdvcnlfbmFtZSA9ID8sIi4KCSAgInVwbG9hZF9jYXRlZ29yeV9kZXNjcmlwdGlvbiA9ID8sIHVwbG9hZF9jYXRlZ29yeV9saXN0YWJsZSA9ID8gV0hFUkUgdXBsb2FkX2NhdGVnb3J5X2lkID0gPyI7CgkkZGJyZXN1bHQgPQoJICAkZGItPkV4ZWN1dGUgKCRxdWVyeSwKCQkJYXJyYXkgKCRwYXJhbXNbJ2lucHV0X2NhdGVnb3J5bmFtZSddLAoJCQkgICAgICAgJHBhcmFtc1snaW5wdXRfY2F0ZWdvcnlkZXNjJ10sCgkJCSAgICAgICAkcGFyYW1zWydpbnB1dF9jYXRlZ29yeWxpc3RhYmxlJ10sCgkJCSAgICAgICAkcGFyYW1zWydjYXRlZ29yeV9pZCddKSk7CglpZiAoISRkYnJlc3VsdCkKCSAgewoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCJlcnJvcl9kYmVycm9yIikpOwoJICB9CgllbHNlCgkgIHsKCSAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwnY2F0ZWdvcmllcycpOwoJICAgIHJldHVybjsKCSAgfQogICAgICB9CiAgICAKICAgICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCJhZGRjYXRlZ29yeS50cGwiKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfQWRtaW5BZGRDYXRlZ29yeSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgUHJvdmlkZSBhIGZvcm0gdG8gYWxsb3cgdXNlcnMgdG8gYWRkIGEgY2F0ZWdvcnkuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0FkbWluQWRkQ2F0ZWdvcnkgKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCkKICB7CiAgICAvLyBwb3B1bGF0ZSB0aGUgdGVtcGxhdGUKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3RpdGxlJywgJHRoaXMtPkxhbmcgKCdhZGRjYXRlZ29yeScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3N0YXJ0Zm9ybScsCgkJCQkgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwKCQkJCQkJCSAgJ2RvX2FkZGNhdGVnb3J5JywKCQkJCQkJCSAgJHJldHVybmlkKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnY2FuY2VsJywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9jYXRlZ29yeW5hbWUnLAoJCQkgICAkdGhpcy0+TGFuZyAoJ3Byb21wdF9jYXRlZ29yeW5hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9jYXRlZ29yeW5hbWUnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9jYXRlZ29yeW5hbWUnLAoJCQkJCQkgICAiIiwgMjAsIDgwKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbmZvX2NhdGVnb3J5bmFtZScsICR0aGlzLT5MYW5nKCdpbmZvX2NhdGVnb3J5bmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9jYXRlZ29yeWRlc2MnLCAgJHRoaXMtPkxhbmcgKCdwcm9tcHRfY2F0ZWdvcnlkZXNjJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfY2F0ZWdvcnlkZXNjJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCAoJGlkLCAnaW5wdXRfY2F0ZWdvcnlkZXNjJywKCQkJCQkJICAgIiIsIDgwLCAyNTUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2luZm9fY2F0ZWdvcnlkZXNjJywgJHRoaXMtPkxhbmcoJ2luZm9fY2F0ZWdvcnlkZXNjJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X2NhdGVnb3J5cGF0aCcsCgkJCSAgICR0aGlzLT5MYW5nICgncHJvbXB0X2NhdGVnb3J5cGF0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X2NhdGVnb3J5cGF0aCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X2NhdGVnb3J5cGF0aCcsCgkJCQkJCSAgICIiLCA4MCwgMjU1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbmZvX2NhdGVnb3J5cGF0aCcsICR0aGlzLT5MYW5nKCdpbmZvX2NhdGVnb3J5cGF0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3BhdGhtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCdwYXRoaW51cGxvYWRzJykpOwogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfY2F0ZWdvcnlsaXN0YWJsZScsCgkJCSAgICR0aGlzLT5MYW5nICgncHJvbXB0X2NhdGVnb3J5bGlzdGFibGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9jYXRlZ29yeWxpc3RhYmxlJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3ggKCRpZCwKCQkJCQkJICAgICAgICdpbnB1dF9jYXRlZ29yeWxpc3RhYmxlJywKCQkJCQkJICAgICAgIDEsMCkpOwogICAgLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZGRjYXRlZ29yeS50cGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfRGlzcGxheUFkbWluUGFuZWxDYXRlZ29yaWVzVGFiKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQogICAKICAgQSBwcml2YXRlIG1ldGhvZCBmb3IgZGlzcGxheWluZyB0aGUgY29udGVudHMgb2YgdGhlIAogICBjYXRlZ29yaWVzIHRhYiBpbiB0aGUgYWRtaW4gcGFuZWwKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfRGlzcGxheUFkbWluUGFuZWxDYXRlZ29yaWVzVGFiKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgJHJvd2FycmF5ID0gYXJyYXkgKCk7CiAgICAkcXVlcnkgPSAnJzsKICAgICRkYnJlc3VsdCA9ICcnOwogICAgCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXggKCkuIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnkpOwogICAgJHJvd2NsYXNzID0gJ3JvdzEnOwogICAgCiAgICB3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3cgKCkpCiAgICAgIHsKCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MgKCk7Cgkkb25lcm93LT5pZCA9ICRyb3dbInVwbG9hZF9jYXRlZ29yeV9pZCJdOwoJJG9uZXJvdy0+bmFtZSA9IAoJICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCAKCQkJICAgICAkcm93WyJ1cGxvYWRfY2F0ZWdvcnlfbmFtZSJdLAoJCQkgICAgIGFycmF5KCdjYXRlZ29yeV9pZCc9PiRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddKSk7CgoJJG9uZXJvdy0+ZGVzY3JpcHRpb24gPSAkcm93WyJ1cGxvYWRfY2F0ZWdvcnlfZGVzY3JpcHRpb24iXTsKCSRvbmVyb3ctPnBhdGggPSAkcm93WyJ1cGxvYWRfY2F0ZWdvcnlfcGF0aCJdOwoJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgoJJG9uZXJvdy0+ZWRpdGxpbmsgPQoJICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLAoJCQkgICAgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+CgkJCSAgICAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKCQkJCQkgICAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkgICAgIGFycmF5ICgnY2F0ZWdvcnlfaWQnID0+ICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddKSk7Cgkkb25lcm93LT5kZWxldGVsaW5rID0KCSAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2RlbGV0ZWNhdGVnb3J5JywgJHJldHVybmlkLAoJCQkgICAgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+CgkJCSAgICAgRGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJCSAgICR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKCQkJICAgICBhcnJheSAoJ2NhdGVnb3J5X2lkJyA9PiAkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXSksCgkJCSAgICAgJHRoaXMtPkxhbmcgKCdhcmV5b3VzdXJlJykpOwoKCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJG9uZXJvdyk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7CiAgICAgIH0KCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdjYXRlZ29yeXRleHQnLCAkdGhpcy0+TGFuZyAoJ2NhdGVnb3J5JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbmFtZXRleHQnLCAkdGhpcy0+TGFuZyAoJ25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwYXRodGV4dCcsICR0aGlzLT5MYW5nICgncGF0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2l0ZW1zJywgJHJvd2FycmF5KTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2l0ZW1jb3VudCcsIGNvdW50ICgkcm93YXJyYXkpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdhZGRsaW5rJywKCQkJICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2FkZGNhdGVnb3J5JywKCQkJCQkgICAgICAkcmV0dXJuaWQsCgkJCQkJICAgICAgJHRoaXMtPgoJCQkJCSAgICAgIExhbmcgKCdhZGRjYXRlZ29yeScpLAoJCQkJCSAgICAgIGFycmF5ICgpLCAnJywgZmFsc2UsCgkJCQkJICAgICAgZmFsc2UsCgkJCQkJICAgICAgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKSk7CgogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnY2F0ZWdvcnlsaXN0LnRwbCcpOwogIH0KCiAgCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0Rpc3BsYXlBZG1pblBhbmVsQ2F0ZWdvcmllc1RhYigkaWQsICRwYXJhbXMsICRyZXR1cm5pZCkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKICAgCiAgIEEgcHJpdmF0ZSBtZXRob2QgZm9yIGRpc3BsYXlpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSAKICAgZmlsZXMgdGFiIGluIHRoZSBhZG1pbiBwYW5lbAogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5QYW5lbEZpbGVzVGFiKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAvLyBnZXQgdGhlIGN1cnJlbnQgY2F0ZWdvcnkgZm9yIHRoZSBmaWx0ZXIKICAgIGlmIChpc3NldCAoJHBhcmFtc1snc3VibWl0Y2F0ZWdvcnknXSkpCiAgICAgIHsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjdXJyZW50X2NhdGVnb3J5JywKCSAgKGlzc2V0ICgkcGFyYW1zWydpbnB1dF9jYXRlZ29yeSddKSA/ICRwYXJhbXNbJ2lucHV0X2NhdGVnb3J5J10gOgoJICAgJycpKTsKICAgICAgfQogICAgJGN1cmNhdGVnb3J5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfY2F0ZWdvcnknLCcnKTsKICAgICAgICAKICAgIC8vIGdldCB0aGUgY2F0ZWdvcmllcyBmb3IgdGhlIGZpbHRlcgogICAgJGNhdGVnb3J5bGlzdCA9IGFycmF5ICgpOwogICAgJHF1ZXJ5ID0KICAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4ICgpLgogICAgICAibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBPUkRFUiBCWSB1cGxvYWRfY2F0ZWdvcnlfbmFtZSBBU0MiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlICgkcXVlcnkpOwogICAgaWYgKCEkZGJyZXN1bHQpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgMSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHRoaXMtPkxhbmcgKCdlcnJvcl9ub2NhdGVnb3JpZXMnKSk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJd2hpbGUgKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93ICgpKQoJICB7CgkgICAgaWYoICRjdXJjYXRlZ29yeSA9PSAnJyApIHsKCSAgICAgICRjdXJjYXRlZ29yeSA9ICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddOwoJICAgIH0KCSAgICAkY2F0ZWdvcnlsaXN0WyRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9uYW1lJ11dID0KCSAgICAgICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddOwoJICB9CiAgICAgIH0KCSAgCiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gY2F0ZWdvcmllcywgcHV0IGEgbWVzc2FnZSBvdXQsIGFuZAogICAgLy8gbm90aGluZyBlbHNlCiAgICBpZiggIWNvdW50KCAkY2F0ZWdvcnlsaXN0ICkgKSAKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcicsMSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25vZm9ybScsMSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5MYW5nKCdlcnJvcl9ub2NhdGVnb3JpZXMnKSk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VwbG9hZGxpc3QudHBsJyk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBzZXR1cCB0aGUgZm9ybSBwYXJ0IG9mIHRoZSB0ZW1wbGF0ZQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3RhcnRmb3JtJywKCQkJICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnY2F0ZWdvcnknLCAkdGhpcy0+TGFuZyAoJ2NhdGVnb3J5JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfY2F0ZWdvcnknLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wRG93biAoJGlkLCAiaW5wdXRfY2F0ZWdvcnkiLCAkY2F0ZWdvcnlsaXN0LCAtMSwKCQkJCQkJICAgICAgICRjdXJjYXRlZ29yeSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfc2VsZWN0JywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXRjYXRlZ29yeScsCgkJCQkJCSAgICAgJHRoaXMtPkxhbmcoJ3NlbGVjdGNhdGVnb3J5JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X2hpZGRlbicsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiAoJGlkLCAnY3VyY2F0ZWdvcnknLAoJCQkJCQkgICAgICRjdXJjYXRlZ29yeSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfYnJvd3NlJywgJHRoaXMtPkxhbmcoJ3VwbG9hZCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2lucHV0X2Jyb3dzZScsCgkJCSAgICR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQgKCRpZCwnaW5wdXRfYnJvd3NlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVwbGFjZScsICR0aGlzLT5MYW5nKCdwcm9tcHRfcmVwbGFjZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfcmVwbGFjZScsIAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCAkaWQsICdpbnB1dF9yZXBsYWNlJywgMSApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5mb19yZXBsYWNlJywKCQkJICAkdGhpcy0+TGFuZygnaW5mb19yZXBsYWNlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGh1bWJuYWlsJywgJHRoaXMtPkxhbmcoJ3RodW1ibmFpbCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2lucHV0X3RodW1ibmFpbCcsCgkJCSAgICR0aGlzLT5DcmVhdGVGaWxlVXBsb2FkSW5wdXQgKCRpZCwnaW5wdXRfdGh1bWJuYWlsJykpOwoJICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9kZXN0bmFtZScsCgkJCSAgICR0aGlzLT5MYW5nICgnZGVzdG5hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9kZXN0bmFtZScsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X2Rlc3RuYW1lJywKCQkJCQkJICAgJycsIDQwLCAyNTUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2luZm9fZGVzdG5hbWUnLAoJCQkgICAkdGhpcy0+TGFuZygnaW5mb19kZXN0bmFtZScpKTsKCSAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfc3VtbWFyeScsCgkJCSAgICR0aGlzLT5MYW5nICgnc3VtbWFyeScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3N1bW1hcnknLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9zdW1tYXJ5JywKCQkJCQkJICAgJycsIDgwLCAyNTUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2luZm9fc3VtbWFyeScsCgkJCSAgICR0aGlzLT5MYW5nKCdpbmZvX3N1bW1hcnknKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hdXRob3InLCR0aGlzLT5MYW5nKCdhdXRob3InKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdpbnB1dF9hdXRob3InLAoJCQkgICAkdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF9hdXRob3InLCAkX1NFU1NJT05bImNtc19hZG1pbl91c2VybmFtZSJdLAoJCQkJCQkgICAyMCwgMjU1KSk7CgkgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnaW5wdXRfc3VibWl0JywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCAkaWQsICdzdWJtaXR1cGxvYWQnLCAkdGhpcy0+TGFuZygndXBsb2FkJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CgkgIAogICAgJGRicmVzdWx0ID0gJyc7CiAgICAkcm93YXJyYXkgPSBhcnJheSAoKTsKICAgIGlmICgkY3VyY2F0ZWdvcnkgPT0gJycpCiAgICAgIHsKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCAoKS4KCSAgIm1vZHVsZV91cGxvYWRzIE9SREVSIEJZIHVwbG9hZF9kYXRlIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSAoJHF1ZXJ5KTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkcXVlcnkgPQoJICAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXggKCkuCgkgICJtb2R1bGVfdXBsb2FkcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IE9SREVSIEJZIHVwbG9hZF9kYXRlIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSAoJHF1ZXJ5LCBhcnJheSAoJGN1cmNhdGVnb3J5KSk7CiAgICAgIH0KCSAgCiAgICAvLyBub3cgc2V0dXAgdGhlIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAkcm93Y2xhc3MgPSAncm93MSc7CgkgIAogICAgaWYgKCRkYnJlc3VsdCkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpZHRleHQnLCR0aGlzLT5MYW5nKCduYW1lJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZXRleHQnLCR0aGlzLT5MYW5nKCduYW1lJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdW1tYXJ5dGV4dCcsJHRoaXMtPkxhbmcoJ3N1bW1hcnknKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2N0ZXh0JywkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NpemV0ZXh0JywkdGhpcy0+TGFuZygnc2l6ZWtiJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhdXRob3J0ZXh0JywkdGhpcy0+TGFuZygnYXV0aG9yJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpcHRleHQnLCR0aGlzLT5MYW5nKCdpcF9hZGRyZXNzJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkbHRleHQnLCR0aGlzLT5MYW5nKCdkb3dubG9hZHMnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Bvc3RkYXRldGV4dCcsJHRoaXMtPkxhbmcoJ2RhdGUnKSk7Cgl3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3cgKCkpCgkgIHsKCSAgICAkb25lcm93ID0gbmV3IHN0ZENsYXNzICgpOwoJICAgICRvbmVyb3ctPmlkID0gJHJvd1sndXBsb2FkX2lkJ107CgkgICAgJG9uZXJvdy0+bmFtZSA9ICRyb3dbJ3VwbG9hZF9uYW1lJ107CgkgICAgJG9uZXJvdy0+c2l6ZSA9IGludHZhbCgkcm93Wyd1cGxvYWRfc2l6ZSddIC8gMTAyNC4wICsgMC41KTsKCSAgICAkb25lcm93LT5hdXRob3IgPSAkcm93Wyd1cGxvYWRfYXV0aG9yJ107CgkgICAgJG9uZXJvdy0+aXAgPSAkcm93Wyd1cGxvYWRfaXAnXTsKCSAgICAkb25lcm93LT5zdW1tYXJ5ID0gJHJvd1sndXBsb2FkX3N1bW1hcnknXTsKCSAgICAkb25lcm93LT5kZXNjcmlwdGlvbiA9ICRyb3dbJ3VwbG9hZF9kZXNjcmlwdGlvbiddOwoJICAgICRvbmVyb3ctPmRhdGUgPSAkcm93Wyd1cGxvYWRfZGF0ZSddOwoJICAgICRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCQoJICAgIC8vIGhvdyBtYW55IHRpbWVzIGhhcyB0aGlzIGl0ZW0gYmVlbiBkb3dubG9hZGVkCgkgICAgJHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChkb3dubG9hZF9pZCkgYXMgY291bnQgRlJPTSAiLgoJICAgICAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2Fkc19kb3dubG9hZHMgV0hFUkUgZmlsZV9pZCA9ID8iOwoJICAgICRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRyb3dbJ3VwbG9hZF9pZCddICkgKTsKCSAgICAkcm93MiA9ICRkYnJlc3VsdDItPkZldGNoUm93KCk7CgkgICAgJG9uZXJvdy0+ZG93bmxvYWRzID0gMDsKCSAgICBpZiggJHJvdzIgKSB7CgkgICAgICAkb25lcm93LT5kb3dubG9hZHMgPSAkcm93MlsnY291bnQnXTsKCSAgICB9CgkJCgkgICAgJG9uZXJvdy0+ZWRpdHVybCA9CgkgICAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZWRpdHVwbG9hZCcsICRyZXR1cm5pZCwgJycsIAoJCQkJIGFycmF5ICgndXBsb2FkX2lkJyA9PiAkcm93Wyd1cGxvYWRfaWQnXSwKCQkJCQknY2F0ZWdvcnlfaWQnID0+ICRjdXJjYXRlZ29yeSksCgkJCQkgJycsIHRydWUgKTsKCgkgICAgJG9uZXJvdy0+ZWRpdGxpbmsgPQoJICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2VkaXR1cGxvYWQnLCAkcmV0dXJuaWQsCgkJCQkgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCgkJCQkJCQkJCSAgICAgICR0aGlzLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCgkJCQkgYXJyYXkgKCd1cGxvYWRfaWQnID0+ICRyb3dbJ3VwbG9hZF9pZCddLAoJCQkJCSdjYXRlZ29yeV9pZCcgPT4gJGN1cmNhdGVnb3J5KSk7CgkJCgkgICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rICgkaWQsJ2RvX2RlbGV0ZXVwbG9hZCcsJHJldHVybmlkLAoJCQkJCQkgICAgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsCgkJCQkJCQkJCQkJCSAgJHRoaXMtPkxhbmcgKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkJCQkgICAgIGFycmF5ICgndXBsb2FkX2lkJyA9PiAkcm93Wyd1cGxvYWRfaWQnXSwKCQkJCQkJCSAgICAnY2F0ZWdvcnlfaWQnID0+ICRjdXJjYXRlZ29yeSksCgkJCQkJCSAgICAgJHRoaXMtPkxhbmcgKCdhcmV5b3VzdXJlJykpOwoJICAgIGFycmF5X3B1c2ggKCRyb3dhcnJheSwgJG9uZXJvdyk7CgkgICAgKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwoJICB9CiAgICAgIH0KCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpdGVtcycsICRyb3dhcnJheSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpdGVtY291bnQnLCBjb3VudCAoJHJvd2FycmF5KSk7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCd1cGxvYWRsaXN0LnRwbCcpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9EaXNwbGF5QWRtaW5QcmVmcygkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UpCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBEaXNwbGF5IGEgZm9ybSB0byBhbGxvdyB0aGUgYWRtaW5pc3RyYXRvciB0byBlZGl0CiAgIHByZWZlcmVuY2VzIHRoYXQgYXBwbHkgdG8gdGhlIGVudGlyZSBtb2R1bGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pblByZWZzICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQsICRtZXNzYWdlID0gJycpCiAgewogICAgLy8gQ3JlYXRlRm9ybVN0YXJ0IHNldHMgdXAgYSBwcm9wZXIgZm9ybSB0YWcgdGhhdCB3aWxsIGNhdXNlIHRoZSBzdWJtaXQgdG8KICAgIC8vIHJldHVybiBjb250cm9sIHRvIHRoaXMgbW9kdWxlIGZvciBwcm9jZXNzaW5nLgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3RhcnRmb3JtJywKCQkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLAoJCQkJCQkJICAnc2F2ZV9hZG1pbl9wcmVmcycsCgkJCQkJCQkgICRyZXR1cm5pZCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kICgpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdzdWJtaXQnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnJywnJywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnY29uZmlybV9wcmVmZXJlbmNlcycpKSk7ICAgIAogICAgCiAgICAvLyBpdCdzIGdvb2QgcHJhY3RpY2UgdG8gc2V0IGV2ZW4gc3RhdGljIHRpdGxlcyB1c2luZyBzbWFydHksIHNvIGxvY2FsaXphdGlvbiBpcwogICAgLy8gZWFzaWVyLgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgndGl0bGVfbWF4X3VwbG9hZHNpemUnLAoJCQkJICAkdGhpcy0+TGFuZyAoJ3Byb21wdF9tYXhfdXBsb2Fkc2l6ZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3RpdGxlX3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnLAoJCQkJICAkdGhpcy0+TGFuZyAoJ3RpdGxlX3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV9zdWJuZXRfZXhjbHVzaW9ucycsCgkJCQkgICR0aGlzLT5MYW5nICgndGl0bGVfc3VibmV0X2V4Y2x1c2lvbnMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV9zZWN0aW9uJywKCQkJCSAgJHRoaXMtPkxhbmcgKCd0aXRsZV9tb2RfcHJlZnMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV9kdW1teV9pbmRleF9odG1sJywKCQkJCSAgJHRoaXMtPkxhbmcgKCd0aXRsZV9kdW1teV9pbmRleF9odG1sJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgndGl0bGVfZW1haWxfb25fdXBsb2FkJywKCQkJCSAgJHRoaXMtPkxhbmcgKCd0aXRsZV9lbWFpbF9vbl91cGxvYWQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV9lbmZvcmNlZXh0ZW5zaW9ucycsCgkJCSAgICR0aGlzLT5MYW5nKCd0aXRsZV9lbmZvcmNlZXh0ZW5zaW9ucycpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3RpdGxlX3JlZGlyZWN0X29uX3VwbG9hZCcsCgkJCSAgICR0aGlzLT5MYW5nKCd0aXRsZV9yZWRpcmVjdG9udXBsb2FkJykpOwoKICAgIC8vIHlvdSdsbCBvZnRlbiB3YW50IHRvIGRvIHRoaW5ncyBsaWtlIHRoaXMgdG8gcHJvdmlkZSBmZWVkYmFjazoKICAgIGlmICgkbWVzc2FnZSAhPSAnJykKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICRtZXNzYWdlKTsKICAgICAgfQogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9tYXhfdXBsb2Fkc2l6ZScsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ21heF91cGxvYWRzaXplJywKCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91cGxvYWRzaXplJywKCQkJCQkJCQkJJzEwMDAwMDAnKSwgJzEyJywgJzEyJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfdmFsaWRfdXBsb2FkZXh0ZW5zaW9ucycsCiAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICd2YWxpZF91cGxvYWRleHRlbnNpb25zJywKCSAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlICgndmFsaWRfdXBsb2FkZXh0ZW5zaW9ucycsCgkJCQkgICAgInppcCxneix0YXIiKSwgJzMwJywgJzI1NScpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9lbmZvcmNlZXh0ZW5zaW9ucycsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCAkaWQsICdpbnB1dF9lbmZvcmNlZXh0ZW5zaW9ucycsCgkJCQkJCSAgICAgICAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWZpbGVuYW1lX2V4dGVuc2lvbnMnLDEpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9zdWJuZXRfZXhjbHVzaW9ucycsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3N1Ym5ldF9leGNsdXNpb25zJywKCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N1Ym5ldF9leGNsdXNpb25zJywiIiksNTAsMjU1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9kdW1teV9pbmRleF9odG1sJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0X2R1bW15X2luZGV4X2h0bWwnLAoJCQkJCQkgICAgICAgMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9kdW1teV9pbmRleF9odG1sJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X2VtYWlsX29uX3VwbG9hZCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2VtYWlsX29uX3VwbG9hZCcsCgkJCQkJCSAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kX3VwbG9hZF9ub3RpZmljYXRpb25zX3RvJyksCgkJCQkJCSAgIDMwLCA4MCApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3JlZGlyZWN0X29uX3VwbG9hZCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3JlZGlyZWN0X29uX3VwbG9hZCcsCgkJCQkJCSAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9vbl91cGxvYWQnLCcnKSwzMCw4MCkpOwoKICAgICR1c2VydGFncyA9IGFycmF5KCAkdGhpcy0+TGFuZygnbm9uZScpID0+ICcnICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV91c2VydGFnX29udXBsb2FkJywKCQkJICAgJHRoaXMtPkxhbmcoJ3RpdGxlX3VzZXJ0YWdfb251cGxvYWQnKSk7CiAgICAkdG1wID0gJHRoaXMtPkxpc3RVc2VyVGFncygpOwogICAgJHByZWYgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcnRhZ19vbnVwbG9hZCcpOwogICAgZm9yZWFjaCggJHRtcCBhcyAkayA9PiAkdiApCiAgICAgIHsKCSR1c2VydGFnc1ska10gPSAkdjsKICAgICAgfQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnaW5wdXRfdXNlcnRhZ19vbnVwbG9hZCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dERyb3BEb3duKCRpZCwgJ2lucHV0X3VzZXJ0YWdfb251cGxvYWQnLCAkdXNlcnRhZ3MsIC0xLCAkcHJlZiApKTsKCQkJCSAgCgogICAgLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbnByZWZzLnRwbCcpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9TYXZlQWRtaW5QcmVmcygkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UpCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBTYXZlIHRoZSBwcmVmZXJlbmNlcyBhcyBzcGVjaWZpZWQgaW4gdGhlIHByZWZlcmVuY2VzIGZvcm0uCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX1NhdmVBZG1pblByZWZzICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCdtYXhfdXBsb2Fkc2l6ZScsCgkJCSAgaXNzZXQgKCRwYXJhbXNbJ21heF91cGxvYWRzaXplJ10pID8KCQkJICAkcGFyYW1zWydtYXhfdXBsb2Fkc2l6ZSddIDogJzAnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlICgndmFsaWRfdXBsb2FkZXh0ZW5zaW9ucycsCgkJCSAgaXNzZXQgKCRwYXJhbXNbJ3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSkgPwoJCQkgICRwYXJhbXNbJ3ZhbGlkX3VwbG9hZGV4dGVuc2lvbnMnXSA6ICcwJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSAoJ3N1Ym5ldF9leGNsdXNpb25zJywKCQkJICBpc3NldCAoJHBhcmFtc1snc3VibmV0X2V4Y2x1c2lvbnMnXSkgPwoJCQkgICRwYXJhbXNbJ3N1Ym5ldF9leGNsdXNpb25zJ10gOiAnMCcpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCdyZXF1aXJlZmlsZW5hbWVfZXh0ZW5zaW9ucycsCgkJCSAgaXNzZXQgKCRwYXJhbXNbJ2lucHV0X2VuZm9yY2VleHRlbnNpb25zJ10pID8KCQkJICAkcGFyYW1zWydpbnB1dF9lbmZvcmNlZXh0ZW5zaW9ucyddIDogJzAnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlICgnY3JlYXRlX2R1bW15X2luZGV4X2h0bWwnLAoJCQkgIGlzc2V0ICgkcGFyYW1zWydpbnB1dF9kdW1teV9pbmRleF9odG1sJ10pID8KCQkJICAkcGFyYW1zWydpbnB1dF9kdW1teV9pbmRleF9odG1sJ10gOiAnMCcpOwogICAgJHRoaXMtPnNldFByZWZlcmVuY2UgKCdzZW5kX3VwbG9hZF9ub3RpZmljYXRpb25zX3RvJywKCQkJICBpc3NldCAoJHBhcmFtc1snZW1haWxfb25fdXBsb2FkJ10pID8KCQkJICAkcGFyYW1zWydlbWFpbF9vbl91cGxvYWQnXSA6ICcnICk7ICAgIAogICAgJHRoaXMtPlNldFByZWZlcmVuY2UgKCdyZWRpcmVjdF9vbl91cGxvYWQnLAoJCQkgIGlzc2V0ICgkcGFyYW1zWydyZWRpcmVjdF9vbl91cGxvYWQnXSkgPwoJCQkgICRwYXJhbXNbJ3JlZGlyZWN0X29uX3VwbG9hZCddIDogJycgKTsgICAgCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSAoJ3VzZXJ0YWdfb251cGxvYWQnLAoJCQkgIGlzc2V0ICgkcGFyYW1zWydpbnB1dF91c2VydGFnX29udXBsb2FkJ10pID8KCQkJICAkcGFyYW1zWydpbnB1dF91c2VydGFnX29udXBsb2FkJ10gOiAnJyApOwkJCSAgCiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCAkaWQsICdhZG1pbl9wcmVmcycgKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UpCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCiAgIAogICBUaGlzIGlzIGEgbWV0aG9kIHRvIGRpc3BsYXkKICAgZXJyb3IgaW5mb3JtYXRpb24gb24gdGhlIGFkbWluIHNpZGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UgPSAnJykKICB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCd0aXRsZV9lcnJvcicsICR0aGlzLT5MYW5nICgnZXJyb3InKSk7CiAgICBpZiAoJG1lc3NhZ2UgIT0gJycpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7CiAgICAgIH0KICAgIGlmKCAkcmV0dXJuaWQgPT0gJycgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmsnLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLAoJCQkJCQkkdGhpcy0+TGFuZygncmV0dXJudG9tb2R1bGUnKSkpOwogICAgICB9CiAgICAKICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnZXJyb3IudHBsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0VXBsb2FkRGV0YWlscygkaWQsJHJldHVybmlkKQogICAKICAgUmV0dXJuIHRoZSBkZXRhaWxzIGFib3V0IGEgc3BlY2lmaWMgdXBsb2FkCiAgICAgIHVwbG9hZF9pZAogICAgICB1cGxvYWRfY2F0ZWdvcnlfaWQKICAgICAgdXBsb2FkX25hbWUKICAgICAgdXBsb2FkX2F1dGhvcgogICAgICB1cGxvYWRfc3VtbWFyeQogICAgICB1cGxvYWRfZGVzY3JpcHRpb24KICAgICAgdXBsb2FkX2lwCiAgICAgIHVwbG9hZF9zaXplCiAgICAgIHVwbG9hZF9kYXRlCiAgICAgIHVybAogICAgICBhYnN1cmwKICAgICAgbGluawogICBvciBhbiBhcnJheSAoRkFMU0UsRVJST1JNU0cpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0VXBsb2FkRGV0YWlscyggJGlkLCAkcmV0dXJuaWQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzCiAgICAgICAgICBXSEVSRSB1cGxvYWRfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgfQogICAgaWYoICEkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHVwbG9hZGlkJykpOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJICBpZiggISRyb3cgKQogICAgewoJICAgIHJldHVybiBhcnJheShGQUxTRSwgJGRiLT5FcnJvck1zZygpKTsKICAgIH0KCiAgICAvLyBoYXZlIGRldGFpbHMgZnJvbSB0aGUgdGFibGUsIG5vdwogICAgLy8gaGF2ZSB0byBhZGQgc29tZXRoaW5nIHN1Y2ggdGhhdCBhIGxpbmsgY2FuIGJlIGdlbmVyYXRlZAogICAgLy8gdGhhdCB3aWxsIHN0aWxsIGNvdW50IHRoZSBudW1iZXIgb2YgZG93bmxvYWRzLCBldGMKICAgICRyb3dbJ3VybCddID0gJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2dldGZpbGUnLCAkcmV0dXJuaWQsICcnLAoJCQkJICAgICBhcnJheSAoJ3VwbG9hZF9pZCcgPT4gJHJvd1sndXBsb2FkX2lkJ10pLCAnJywgdHJ1ZSk7CiAgICAkcm93WydsaW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZ2V0ZmlsZScsICRyZXR1cm5pZCwgJHJvd1sndXBsb2FkX25hbWUnXSwKCQkJCSAgICAgIGFycmF5ICgndXBsb2FkX2lkJyA9PiAkcm93Wyd1cGxvYWRfaWQnXSkpOwogICAgJHJvd1snYWJzdXJsJ10gPSAkdGhpcy0+Y21zLT5jb25maWdbJ3VwbG9hZHNfdXJsJ10uIi8iLgogICAgICAkdGhpcy0+Z2V0Q2F0ZWdvcnlQYXRoRnJvbUZpbGVJRCggJHJvd1sndXBsb2FkX2lkJ10gKS4iLyIuCiAgICAgICRyb3dbJ3VwbG9hZF9uYW1lJ107CiAgICByZXR1cm4gJHJvdzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBBdHRlbXB0VXBsb2FkKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkbWVzc2FnZSkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKICAgCiAgIFRoaXMgaXMgYSBtZXRob2QgdG8gYWN0dWFsbHkgdHJ5IHVwbG9hZGluZyB0aGUgZmlsZQogICBlbnN1cmluZyBpdCBpcyB2YWxpZCwgYW5kIHRoZW4gYWRkaW5nIHRoZSBzdHVmZiB0bwogICB0aGUgZGF0YWJhc2UuCgogICBSZXR1cm5zIGFuIGFycmF5LCBmaXJzdCBlbGVtZW50IGlzIHN1Y2Nlc3MgKHRydWUvZmFsc2UpCiAgIHNlY29uZCBlbGVtZW50IGlzIChpZiBmaXJzdCBlbGVtZW50IGlzIGZhbHNlKSBhbiBlcnJvciBtZXNzYWdlLAogICBvciB0aGUgaWQgb2YgdGhlIHVwbG9hZGVkIGZpbGUuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gQXR0ZW1wdFVwbG9hZCAoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQogIHsKICAgIC8vIGNoZWNrIGZvciB0aGUgZmlsZXR5cGVzIHBhcmFtCiAgICBpZiAoaXNzZXQoICRwYXJhbXNbJ2ZpbGVfZXh0ZW5zaW9ucyddICkgKQogICAgICB7CgkkdGhpcy0+dXBsb2FkX2V4dGVuc2lvbnMgPSAkcGFyYW1zWydmaWxlX2V4dGVuc2lvbnMnXTsKICAgICAgfQoKICAgIC8vIGNoZWNrIHRoZSBhdXRob3IKICAgIGlmICghaXNzZXQgKCRwYXJhbXNbJ2lucHV0X2F1dGhvciddKSkKICAgICAgewoJcmV0dXJuIGFycmF5KCBGQUxTRSwgJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRhdXRob3InKSApOwogICAgICB9CiAgICAKICAgIC8vIHNlZSBpZiB0aGVyZSdzIGEga2V5CiAgICAka2V5ID0gbnVsbDsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfa2V5J10gKSApCiAgICAgIHsKCSRrZXkgPSAkcGFyYW1zWydpbnB1dF9rZXknXTsKICAgICAgfQoKICAgIC8vIHZhbGlkYXRlIHRoZSB1cGxvYWQgbmFtZQogICAgJGRlc3RuYW1lID0gJF9GSUxFU1skaWQuJ2lucHV0X2Jyb3dzZSddWyduYW1lJ107CiAgICBpZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfZGVzdG5hbWUnXSkgJiYgJHBhcmFtc1snaW5wdXRfZGVzdG5hbWUnXSAhPSAnJykKICAgICAgewoJJGRlc3RuYW1lID0gdHJpbShiYXNlbmFtZSgkcGFyYW1zWydpbnB1dF9kZXN0bmFtZSddKSk7CiAgICAgIH0KCiAgICAkcmVwbGFjZV9leGlzdGluZyA9IGZhbHNlOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9yZXBsYWNlJ10pICYmICRwYXJhbXNbJ2lucHV0X3JlcGxhY2UnXSA9PSAxICkKICAgICAgewoJJHJlcGxhY2VfZXhpc3RpbmcgPSB0cnVlOwogICAgICB9CgogICAgLy8gY2hlY2sgdGhlIGRlc2NyaXB0aW9uCiAgICBpZiAoICFpc3NldCgkcGFyYW1zWydpbnB1dF9zdW1tYXJ5J10pIHx8ICRwYXJhbXNbJ2lucHV0X3N1bW1hcnknXSA9PSAnJyApCiAgICAgIHsKCS8vIHdlJ2xsIGNoZWF0LCBpZiB0aGUgc3VtbWFyeSBpcyBsZWZ0IGFzIGVtcHR5CgkvLyB3ZSdsbCB1c2UgdGhlIHVwbG9hZCBuYW1lCgkkcCA9IHN0cnBvcyggJGRlc3RuYW1lLCAnLicgKTsKCWlmKCAkcCApCgkgIHsKCSAgICAkcGFyYW1zWydpbnB1dF9zdW1tYXJ5J10gPSBzdWJzdHIoICRkZXN0bmFtZSwgMCwgJHAgKTsKCSAgfQoJZWxzZQoJICB7CgkgICAgJHBhcmFtc1snaW5wdXRfc3VtbWFyeSddID0gJGRlc3RuYW1lOwoJICB9CgkvL3JldHVybiBhcnJheSggRkFMU0UsICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkc3VtbWFyeScpICk7CiAgICAgIH0KCiAgICAvLyBjaGVjayB0aGUgY2F0ZWdvcnkKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRkYnJlc3VsdCA9ICIiOwogICAgJHJvdyA9IGFycmF5KCk7CiAgICAkY2F0ZWdvcnlfaWQgPSAwOwogICAgaWYgKGlzc2V0KCAkcGFyYW1zWydjYXRlZ29yeV9pZCddICkgKQogICAgICB7CiAgICAgICAgJGNhdGVnb3J5X2lkID0gJHBhcmFtc1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICAkcXVlcnkgPQogICAgICAgICAgIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuCiAgICAgICAgICAibW9kdWxlX3VwbG9hZHNfY2F0ZWdvcmllcyBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUgKCRxdWVyeSwgYXJyYXkgKCRjYXRlZ29yeV9pZCkpOwogICAgICB9CiAgICBlbHNlIGlmIChpc3NldCAoJHBhcmFtc1snY2F0ZWdvcnknXSkpCiAgICAgIHsKICAgICAgICAvLyBnZXQgdGhlIGNhdGVnb3J5IGluZm8gZ2l2ZW4gaXQncyBuYW1lCiAgICAgICAgJHF1ZXJ5ID0KICAgICAgICAgICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLgogICAgICAgICAgIm1vZHVsZV91cGxvYWRzX2NhdGVnb3JpZXMgV0hFUkUgdXBsb2FkX2NhdGVnb3J5X25hbWUgPSA/IjsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUgKCRxdWVyeSwgYXJyYXkgKCRwYXJhbXNbJ2NhdGVnb3J5J10pKTsKICAgICAgfQogICAgaWYgKCEkZGJyZXN1bHQpCiAgICAgIHsKCXJldHVybiBhcnJheSggRkFMU0UsICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY2F0ZWdvcnknKSApOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdyAoKTsKICAgIGlmKCAhJHJvdyApCiAgICAgIHsKCXJldHVybiBhcnJheSggRkFMU0UsICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY2F0ZWdvcnknKSApOwogICAgICB9CiAgICAkY2F0ZWdvcnlfaWQgPSAkcm93Wyd1cGxvYWRfY2F0ZWdvcnlfaWQnXTsKICAgICRjYXRlZ29yeV9uYW1lID0gJHJvd1sndXBsb2FkX2NhdGVnb3J5X25hbWUnXTsKIAogICAgLy8gbm93IGRvIHRoZSB1cGxvYWQsIGhvcGVmdWxseQogICAgLy8gZmlyc3QgdGhlIGZpbGUgaXRzZWxmLgogICAgJGRpciA9ICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10pOwogICAgJHJlc3VsdCA9CiAgICAgICR0aGlzLT5faGFuZGxlVXBsb2FkICgkZGlyLAoJCQkgICAgJHRoaXMtPkdldFByZWZlcmVuY2UgKCdtYXhfdXBsb2Fkc2l6ZScsIDEwMDAwMDApICogMTAyNCwgCgkJCSAgICAkaWQuJ2lucHV0X2Jyb3dzZScsCgkJCSAgICBmYWxzZSwKCQkJICAgICRkZXN0bmFtZSwKCQkJICAgIHRydWUsCgkJCSAgICAkcmVwbGFjZV9leGlzdGluZyk7CiAgICBpZiAoISRyZXN1bHRbMF0pCiAgICAgIHsKCXJldHVybiBhcnJheSggRkFMU0UsICRyZXN1bHRbMV0gKTsKICAgICAgfQogICAgJGRlc3RuYW1lID0gJHJlc3VsdFsxXVsnbmFtZSddOwoKCiAgICAvLyBjaGVjayBmb3IgYW4gZXhpc3RpbmcgZGF0YWJhc2UgZW50cnkKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfdXBsb2FkcyBXSEVSRSB1cGxvYWRfbmFtZSA9ID8gQU5ECgkJCXVwbG9hZF9jYXRlZ29yeV9pZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkZGVzdG5hbWUsICRjYXRlZ29yeV9pZCApICk7CiAgICBpZiggISRkYnJlc3VsdCApIAogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkdGhpcy0+TGFuZygnZXJyb3JfZGJlcnJvcicpICk7CiAgICAgIH0KICAgICRyb3cyID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoKICAgICRmaWxlaWQgPSAnJzsKICAgIGlmKCAkcmVwbGFjZV9leGlzdGluZyA9PSAwICkKICAgICAgewoJLy8gd2VyZSBub3QgYWxsb3dpbmcgb3ZlcndyaXRlCglpZiggJHJvdzIgKSAKCSAgewoJICAgIC8vIHRoaXMgaWEgcmVkdW5kYW50IGVycm9yLCBhcyBpdCBzaG91bGQgaGF2ZSBoYXBwZW5lZCBpbiB0aGUgX2hhbmRsZVVwbG9hZAoJICAgIC8vIGJ1dCBvaCB3ZWxsCgkgICAgcmV0dXJuIGFycmF5KCBGQUxTRSwgJHRoaXMtPkxhbmcoJ2Vycm9yX2ZpbGVleGlzdHMnKSApOwoJICB9CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJLy8gd2UncmUgYWxsb3dpbmcgb3ZlcndyaXRlCgkkZmlsZWlkID0gJHJvdzJbJ3VwbG9hZF9pZCddOwoJJHJlcGxhY2VfZXhpc3RpbmcgPSB0cnVlOwogICAgICB9CiAJICAgICAgIAoKICAgICMgY3JlYXRlIHRoZSB0aHVtYnMgZGlyZWN0b3J5IGlmIGl0IGlzbid0IHRoZXJlIGFscmVhZHkKICAgICR0bmRpciA9ICR0aGlzLT5fY2F0ZWdvcnlQYXRoKCRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9wYXRoJ10pLkRJUkVDVE9SWV9TRVBBUkFUT1IuJy50aHVtYnMnOwogICAgaWYoICFmaWxlX2V4aXN0cyggJHRuZGlyICkgKQogICAgICB7CgkkcmVzdWx0MiA9ICR0aGlzLT5fbWtkaXJyKCAkdG5kaXIgKTsKCWlmICgkcmVzdWx0MiA9PSBmYWxzZSkgCgkgIHsKCSAgICAkbXNnID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRjcmVhdGVkaXJlY3RvcnknKS4nOiAnLiR0bmRpcjsKCSAgICByZXR1cm4gYXJyYXkoIEZBTFNFLCAkbXNnICk7CgkgIH0KCS8vIGNyZWF0ZSBhbiBpbmRleC5odG1sIGZpbGUgKGVtcHR5KQoJaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfZHVtbXlfaW5kZXhfaHRtbCcpICkKCSAgewoJICAgIEB0b3VjaCggJHRuZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuImluZGV4Lmh0bWwiICk7CgkgIH0KICAgICAgfQoKICAgIC8vIGNyZWF0ZSBhIG5ldyB1cGxvYWQgaWQgaGVyZS4KICAgIGlmKCAkZmlsZWlkID09ICcnICkKICAgICAgewoJJG5ld2lkID0gJGRiLT5HZW5JRCAoY21zX2RiX3ByZWZpeCAoKS4ibW9kdWxlX3VwbG9hZHNfc2VxIik7CiAgICAgIH0KCiAgICAvLyBhbmQgdGhlbiBtYXliZSB0aGUgdGh1bWJuYWlsCiAgICBpZiggaXNzZXQoICRfRklMRVNbJGlkLidpbnB1dF90aHVtYm5haWwnXVsnbmFtZSddICkgJiYKCSRfRklMRVNbJGlkLidpbnB1dF90aHVtYm5haWwnXVsnbmFtZSddICE9ICcnICYmIAoJJF9GSUxFU1skaWQuJ2lucHV0X3RodW1ibmFpbCddWydzaXplJ10gPiAwKQogICAgICB7CgkkZmlkID0gJGZpbGVpZDsKCWlmKCAkZmlkID09ICcnICkKCSAgewoJICAgICRmaWQgPSAkbmV3aWQ7CgkgIH0KCSRyZXN1bHQyID0KCSAgJHRoaXMtPl9oYW5kbGVVcGxvYWQgKCR0bmRpciwkdGhpcy0+R2V0UHJlZmVyZW5jZSAoJ21heF91cGxvYWRzaXplJywgMTAwMDAwMCkgKiAxMDI0LCAKCQkJCSRpZC4naW5wdXRfdGh1bWJuYWlsJyxmYWxzZSwkZmlkLidfdGh1bWInLGZhbHNlLAoJCQkJJHJlcGxhY2VfZXhpc3RpbmcpOwoJaWYgKCEkcmVzdWx0MlswXSkKCSAgewoJICAgIC8vIHVoLW9oLCB0aGUgc2Vjb25kIHVwbG9hZCBmYWlsZWQuLi4uIG5vdyB3ZSd2ZSBnb3R0YSAKCSAgICAvLyBkZWxldGUgdGhlIGZpcnN0IGZpbGUgdG8gYXZvaWQgYW55IGNvcnJ1cHRpb24KCSAgICAvLyB0b2RvCgkgICAgdW5saW5rKCAkcmVzdWx0WzFdWydkaXInXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRyZXN1bHRbMV1bJ25hbWUnXSApOwoJICAgIHJldHVybiBhcnJheSggRkFMU0UsICRyZXN1bHQyWzFdICk7CgkgIH0KICAgICAgfQoKICAgIC8vIGFwcGFyZW50bHkgdGhlIHVwbG9hZCBzdWNjZWVkZWQsIG5vdyB3ZSBoYXZlIHRvIGxvZyBpdAogICAgJGRlc2MgPSAiIjsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZGVzY3JpcHRpb24nXSApICkKICAgICAgewoJJGRlc2MgPSAkcGFyYW1zWydpbnB1dF9kZXNjcmlwdGlvbiddOwogICAgICB9CgogICAgaWYoICRmaWxlaWQgPT0gJycgKQogICAgICB7CgkkcXVlcnkgPQoJICAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4ICgpLgoJICAibW9kdWxlX3VwbG9hZHMgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/KSI7CgkkZGJyZXN1bHQgPQoJICAkZGItPkV4ZWN1dGUgKCRxdWVyeSwKCQkJYXJyYXkgKCRuZXdpZCwKCQkJICAgICAgICRyb3dbJ3VwbG9hZF9jYXRlZ29yeV9pZCddLAoJCQkgICAgICAgJGRlc3RuYW1lLCAKCQkJICAgICAgICRwYXJhbXNbJ2lucHV0X2F1dGhvciddLAoJCQkgICAgICAgJHBhcmFtc1snaW5wdXRfc3VtbWFyeSddLAoJCQkgICAgICAgJGRlc2MsCgkJCSAgICAgICBnZXRlbnYgKCJSRU1PVEVfQUREUiIpLCAKCQkJICAgICAgICRyZXN1bHRbMV1bJ3NpemUnXSwKCQkJICAgICAgIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCAodGltZSAoKSksIiciKSwKCQkJICAgICAgICRrZXkKCQkJICAgICAgICkpOwoJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+bGFuZygnZnJpZW5kbHluYW1lJyksCgkJICAgICAgJHRoaXMtPmxhbmcoJ3VwbG9hZGVkJywgYXJyYXkoJGRlc3RuYW1lLCAkcGFyYW1zWydpbnB1dF9hdXRob3InXSkpICk7CgogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZSB1cGxvYWRzCiAgICAgICAgICAgU0VUIHVwbG9hZF9uYW1lID0gPywgdXBsb2FkX2F1dGhvciA9ID8sCiAgICAgICAgICAgICAgIHVwbG9hZF9zdW1tYXJ5ID0gPywgdXBsb2FkX2Rlc2NyaXB0aW9uID0gPywKICAgICAgICAgICAgICAgdXBsb2FkX2lwID0gPywgdXBsb2FkX3NpemUgPSA/LCB1cGxvYWRfZGF0ZSA9ID8KICAgICAgICAgICBXSEVSRSB1cGxvYWRfaWQgPSA/IjsKCSRkYnJlc3VsdCA9CgkgICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LAoJCQlhcnJheSggJGRlc3RuYW1lLAoJCQkgICAgICAgJHBhcmFtc1snaW5wdXRfYXV0aG9yJ10sCgkJCSAgICAgICAkcGFyYW1zWydpbnB1dF9zdW1tYXJ5J10sCgkJCSAgICAgICAkZGVzYywKCQkJICAgICAgIGdldGVudiggIlJFTU9URV9BRERSIiApLAoJCQkgICAgICAgJHJlc3VsdFsxXVsnc2l6ZSddLAoJCQkgICAgICAgdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksIiciKSwKCQkJICAgICAgICRmaWxlaWQgKSk7CgkkbmV3aWQgPSAkZmlsZWlkOwoJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+bGFuZygnZnJpZW5kbHluYW1lJyksCgkJICAgICAgJHRoaXMtPmxhbmcoJ3JlcGxhY2VkJywgJGRlc3RuYW1lLCAkcGFyYW1zWydpbnB1dF9hdXRob3InXSkgKTsKICAgICAgfQoKCiAgICAvLyB0aGF0IHNob3VsZCBkbyB0aGUgdHJpY2sKICAgIC8vIG5vdyBtYXliZSB3ZSdsbCBzZW5kIGFuIGVtYWlsCiAgICAkdG9fYWRkcmVzcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kX3VwbG9hZF9ub3RpZmljYXRpb25zX3RvJyk7CiAgICBpZiggJHRvX2FkZHJlc3MgJiYgJHRvX2FkZHJlc3MgIT0gJycgKQogICAgICB7CgkvLyBmaWxsIG91dCB0aGUgdGVtcGxhdGUsIGFuZCBzZW5kIGFuIGVtYWlsCgkkY21zbWFpbGVyID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCAnQ01TTWFpbGVyJyApOwoJaWYoICEkY21zbWFpbGVyICkKCSAgewoJICAgIC8vIHdlJ3JlIG5vdCBnb25uYSByZXR1cm4gYW4gZXJyb3IsIGJ1dCBwdXQKCSAgICAvLyBhIG1lc3NhZ2UgaW50byB0aGUgYWRtaW4gbG9nCgkgICAgJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksCgkJCSAgJHRoaXMtPkxhbmcoJ2Vycm9yX25vbWFpbGVybW9kdWxlJykpOwoJICB9CgllbHNlCgkgIHsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25hbWUnLCAkZGVzdG5hbWUgKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NpemUnLCAkcmVzdWx0WzFdWydzaXplJ10gKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1bW1hcnknLCAkcGFyYW1zWydpbnB1dF9zdW1tYXJ5J10gKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9uJywgJGRlc2MgKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2F1dGhvcicsICRwYXJhbXNbJ2lucHV0X2F1dGhvciddICk7CgkgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpcF9hZGRyZXNzJywgZ2V0ZW52ICgiUkVNT1RFX0FERFIiKSApOwoJICAgICRib2R5ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgndXBsb2FkX2VtYWlsdGVtcGxhdGUnKTsKCSAgICAkY21zbWFpbGVyLT5BZGRBZGRyZXNzKCAkdG9fYWRkcmVzcyApOwoJICAgICRjbXNtYWlsZXItPlNldEJvZHkoICRib2R5ICk7CgkgICAgJGNtc21haWxlci0+SXNIVE1MKHRydWUpOwoJICAgICRjbXNtYWlsZXItPlNldFN1YmplY3QoJHRoaXMtPkxhbmcoJ3VwbG9hZF9ub3RpZmljYXRpb24nKSk7CgkgICAgJGNtc21haWxlci0+U2VuZCgpOwoJICB9CiAgICAgIH0KCgogICAgLy8gdXBkYXRlIHNlYXJjaCB3b3JkcwogICAgJHNlYXJjaCA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NlYXJjaCcpOwogICAgaWYgKCRzZWFyY2ggIT0gRkFMU0UpCiAgICAgIHsKCSRzdHIgPSAkZGVzdG5hbWUuJyAnLiRwYXJhbXNbJ2lucHV0X2F1dGhvciddLicgJy4KCSAgJHBhcmFtc1snaW5wdXRfc3VtbWFyeSddLiRkZXNjOwoJJHNlYXJjaC0+QWRkV29yZHMoICR0aGlzLT5HZXROYW1lKCksICRuZXdpZCwgJ3VwbG9hZCcsICRzdHIgKTsKICAgICAgfQoKICAgIC8vIHNlbmQgYW4gZXZlbnQKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkcGFybXNbJ2NhdGVnb3J5J10gPSAkY2F0ZWdvcnlfbmFtZTsKICAgICRwYXJtc1snbmFtZSddID0gJGRlc3RuYW1lOwogICAgJHBhcm1zWydzaXplJ10gPSAkcmVzdWx0WzFdWydzaXplJ107CiAgICAkcGFybXNbJ3N1bW1hcnknXSA9ICRwYXJhbXNbJ2lucHV0X3N1bW1hcnknXTsKICAgICRwYXJtc1snZGVzY3JpcHRpb24nXSA9ICRkZXNjOwogICAgJHBhcm1zWydhdXRob3InXSA9ICRwYXJhbXNbJ2lucHV0X2F1dGhvciddOwogICAgJHBhcm1zWydpcF9hZGRyZXNzJ10gPSBnZXRlbnYoIlJFTU9URV9BRERSIik7CiAgICAkdGhpcy0+U2VuZEV2ZW50KCAiT25VcGxvYWQiLCAkcGFyYW1zICk7CgogICAgaWYoICRmaWxlaWQgPT0gJycgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIFRSVUUsICRuZXdpZCApOwogICAgICB9CiAgICByZXR1cm4gYXJyYXkoIFRSVUUsICRmaWxlaWQgKTsKICB9CgoKICBmdW5jdGlvbiBteVJlZGlyZWN0VG9UYWIoICRpZCwgJHRhYiwgJHBhcmFtcyA9ICcnICkKICB7CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgaWYoIGlzX2FycmF5KCAkcGFyYW1zICkgKQogICAgICB7CgkkcGFybXMgPSAkcGFyYW1zOwogICAgICB9CiAgICAkcGFybXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJHRhYiApOwogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRwYXJtcyApOwogIH0KCiAgZnVuY3Rpb24gbXlSZWRpcmVjdCggJGlkLCAkYWN0aW9uLCAkcGFyYW1zID0gJycgKQogIHsKICAgIHVuc2V0KCAkcGFyYW1zWydhY3Rpb24nXSApOwogICAgJHRoaXMtPlJlZGlyZWN0KCAkaWQsICRhY3Rpb24sICcnLCAkcGFyYW1zICk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX2hhbmRsZVVwbG9hZCggJGRlc3REaXIsICRtYXhGaWxlU2l6ZSwgJGZpZWxkTmFtZSwgJG5hbWVDYWxsYmFjICkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIFRoaXMgbWV0aG9kIGhhbmRsZXMgdmFsaWRhdGluZyB0aGUgdXBsb2FkIHBhcmFtZXRlcnMsIGFuZCBjb3B5aW5nCiAgIHRoZSBmaWxlIGZyb20gaXQncyB0ZW1wb3JhcnkgbG9jYXRpb24gdG8gaXQncyBwZXJtYW5lbnQgbG9jYXRpb24uCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX2hhbmRsZVVwbG9hZCAoJGRlc3REaXIsICRtYXhGaWxlU2l6ZSA9CgkJCSAgZmFsc2UsICRmaWVsZE5hbWUgPSAnX3VwbG9hZCcsICRuYW1lQ2FsbGJhY2sgPSBmYWxzZSwKCQkJICAkZGVzdG5hbWUgPSAnJywkZW5mb3JjZWV4dGVuc2lvbiA9IHRydWUsCgkJCSAgJHJlcGxhY2VfZXhpc3RpbmcgPSBmYWxzZSkKICB7CiAgICAvL21ha2Ugc3VyZSBzb21ldGhpbmcgaXMgdGhlcmUKICAgIGlmICghaXNzZXQgKCRfRklMRVNbJGZpZWxkTmFtZV0pIHx8ICFpc3NldCAoJF9GSUxFUykKCXx8ICFpc19hcnJheSAoJF9GSUxFU1skZmllbGROYW1lXSkgfHwgISRfRklMRVNbJGZpZWxkTmFtZV1bJ25hbWUnXSkKICAgICAgewoJcmV0dXJuIGFycmF5IChmYWxzZSwgJHRoaXMtPkxhbmcoJ2Vycm9yX25vZmlsZXN1cGxvYWRlZCcpKTsKICAgICAgfQoKICAgIC8vbm9ybWFsaXplIHRoZSBmaWxlIHZhcmlhYmxlCiAgICAkZmlsZSA9ICRfRklMRVNbJGZpZWxkTmFtZV07CiAgICBpZiAoIWlzc2V0ICgkZmlsZVsndHlwZSddKSkKICAgICAgJGZpbGVbJ3R5cGUnXSA9ICcnOwogICAgaWYgKCFpc3NldCAoJGZpbGVbJ3NpemUnXSkpCiAgICAgICRmaWxlWydzaXplJ10gPSAnJzsKICAgIGlmICghaXNzZXQgKCRmaWxlWyd0bXBfbmFtZSddKSkKICAgICAgJGZpbGVbJ3RtcF9uYW1lJ10gPSAnJzsKICAgICRmaWxlWyduYW1lJ10gPQogICAgICBwcmVnX3JlcGxhY2UoJy9bXmEtekEtWjAtOVwuXCRcJVwnXGBcLVxAXHtcfVx+XCFcI1woXClcJlxfXF5dLycsICcnLAogICAgICAgc3RyX3JlcGxhY2UgKGFycmF5ICgnICcsICclMjAnKSwgYXJyYXkgKCdfJywgJ18nKSwgJGZpbGVbJ25hbWUnXSkpOwoKICAgIC8vIHZhbGlkYXRlIHRoZSBmaWxlbmFtZQogICAgaWYgKCEkdGhpcy0+X2lzVmFsaWRGaWxlbmFtZSAoJGZpbGVbJ25hbWUnXSkpCiAgICAgIHsKCXJldHVybiBhcnJheSAoZmFsc2UsICR0aGlzLT5MYW5nICgnZXJyb3JfaW52YWxpZHVwbG9hZGZpbGVuYW1lJywkZmlsZVsnbmFtZSddKSk7CiAgICAgIH0KCiAgICAvL3dhcyBpdCB0byBiaWc/CiAgICBpZiAoJG1heEZpbGVTaXplICYmICgkZmlsZVsnc2l6ZSddID4gKCRtYXhGaWxlU2l6ZSAqIDEwMjQpKSkKICAgICAgcmV0dXJuIGFycmF5IChmYWxzZSwgJHRoaXMtPkxhbmcgKCdlcnJvcl9maWxldG9vbGFyZ2UnKSk7CgogICAgLy9ub3JtYWxpemUgZGVzdERpcgogICAgaWYgKHN0cmxlbiAoJGRlc3REaXIpID4gMCAmJiAkZGVzdERpcltzdHJsZW4gKCRkZXN0RGlyKSAtIDFdICE9ICIvIikKICAgICAgJGRlc3REaXIgPSAkZGVzdERpci4nLyc7CgogICAgLy8gZ2V0IHRoZSBkZXN0aW5hdGlvbiBuYW1lCiAgICBpZiggJGRlc3RuYW1lID09ICcnICkgewogICAgICAkZGVzdG5hbWUgPSAkZmlsZVsnbmFtZSddOwogICAgfQogICAgCiAgICAvL3Nob3VsZCB3ZSBjaGFuZ2UgdGhlIGZpbGVuYW1lIHZpYSBhIGNhbGxiYWNrPwogICAgaWYgKCRuYW1lQ2FsbGJhY2spCiAgICAgIHsKCSRkZXN0bmFtZSA9CgkgIGNhbGxfdXNlcl9mdW5jX2FycmF5ICgkbmFtZUNhbGxiYWNrLCBhcnJheSAoJGZpbGUsICRkZXN0RGlyKSk7CiAgICAgIH0KCiAgICBpZiggJGVuZm9yY2VleHRlbnNpb24gPT0gdHJ1ZSAmJiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWZpbGVuYW1lX2V4dGVuc2lvbnMnLDEpKQogICAgICB7CgkvLyBtYWtlIHN1cmUgaXQgaGFzIGFuIGV4dGVuc2lvbgoJLy8gaWYgaXQgZG9lc24ndCBoYXZlIG9uZSwgd2UgZ2l2ZSBpdCBvbmUgKHRoZSBvbmUgb2ZmIHRoZSBpbnB1dCBmaWxlKQoJaWYoIHN0cnBvcygkZGVzdG5hbWUsJy4nKSA9PSBmYWxzZSApCgkgIHsKCSAgICBpZiggKCRwID0gc3RycG9zKCAkZmlsZVsnbmFtZSddLCAnLicgKSApICE9IGZhbHNlICkKCSAgICAgIHsKCQkkZGVzdG5hbWUgPSAkZGVzdG5hbWUgLiBzdWJzdHIoICRmaWxlWyduYW1lJ10sICRwICk7CgkgICAgICB9CgkgIH0KICAgICAgfQoKICAgIC8vIGFuZCBjbGVhbiBpdCB1cAogICAgJGRlc3RuYW1lID0gCiAgICAgIHByZWdfcmVwbGFjZSgnL1teYS16QS1aMC05XC5cJFwlXCdcYFwtXEBce1x9XH5cIVwjXChcKVwmXF9cXl0vJywgJycsCgkJICAgc3RyX3JlcGxhY2UgKGFycmF5ICgnICcsICclMjAnKSwgYXJyYXkgKCdfJywgJ18nKSwgJGRlc3RuYW1lKSk7CgogICAgaWYoICRyZXBsYWNlX2V4aXN0aW5nID09IGZhbHNlICkKICAgICAgewoJaWYoIGZpbGVfZXhpc3RzKCAkZGVzdERpci4kZGVzdG5hbWUgKSAmJiAkcmVwbGFjZV9leGlzdGluZyA9PSBmYWxzZSApIHsKCSAgcmV0dXJuIGFycmF5KCBmYWxzZSwgJHRoaXMtPkxhbmcoICdlcnJvcl9maWxlZXhpc3RzJywgJGRlc3REaXIuJGRlc3RuYW1lICkpOwoJfQogICAgICB9CgogICAgLy9hbmQgbm93IHRoZSBiaWcgbW9tZW50CiAgICBpZiAoIUBjb3B5ICgkZmlsZVsndG1wX25hbWUnXSwgJGRlc3REaXIuJGRlc3RuYW1lKSkKICAgICAgewoJcmV0dXJuIGFycmF5IChmYWxzZSwKCQkgICAgICAkdGhpcy0+TGFuZyAoJ2Vycm9yX2NvdWxkbm90d3JpdGUnKS4KCQkgICAgICAnOiZuYnNwJy4kZmlsZVsnbmFtZSddLiIgLT4gIi4kZGVzdERpci4iICIuCgkJICAgICAgJHRoaXMtPkxhbmcgKCdlcnJvcl9wZXJtaXNzaW9uZGVuaWVkJykpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCXJldHVybiBhcnJheSAodHJ1ZSwgYXJyYXkoJ25hbWUnID0+ICRkZXN0bmFtZSwgJ3NpemUnID0+ICRmaWxlWydzaXplJ10sCgkJCQkgICdkaXInID0+ICRkZXN0RGlyICkpOwogICAgICB9CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2NhbkRpcmVjdG9yeSgkY2F0ZWdvcnlfaWQsICRkaXIgKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgQSB1dGlsaXR5IHRvIGluc2VydCByZWNvcmRzIGludG8gdGhlIHVwbG9hZHMgZGF0YWJhc2UKICAgZm9yIGFsbCBmaWxlcyB0aGF0IGN1cnJlbnRseSBleGlzdCBpbiBhIGRpcmVjdG9yeS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBTY2FuRGlyZWN0b3J5KCRjYXRlZ29yeV9pZCwgJGRpciApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJGRlc2MgPSAiUHJlLWV4aXN0aW5nIGZpbGUiOwoKICAgICRmaWxlcyA9ICR0aGlzLT5fc2NhbmRpciggJGRpciApOwogICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhZV9kdW1teV9pbmRleF9odG1sJykgKQogICAgICB7CglAdG91Y2goICRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4iaW5kZXguaHRtbCIgKTsKICAgICAgfQogICAgZm9yZWFjaCggJGZpbGVzIGFzICRmaWxlICkgewogICAgICAvLyBpZ25vcmUgZGlyZWN0b3JpZXMgLiBhbmQgLi4KICAgICAgaWYoICRmaWxlID09ICIuIiB8fCAkZmlsZSA9PSAiLi4iICkgewoJICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIC8vIGlnbm9yZSBhbnkgZGlyZWN0b3JpZXMKICAgICAgJHNyY3AgPSAkZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGZpbGU7CiAgICAgIGlmKCBpc19kaXIoICRzcmNwICkgKSB7CgkgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgLy8gZ290IHRoZSBmaWxlLCBub3cgbmVlZCBpdCdzIHNpemUKICAgICAgJHNpemUgPSBmaWxlc2l6ZSgkc3JjcCk7CgogICAgICAvLyBub3cgd2UgbmVlZCB0byBtYXliZSByZW5hbWUgdGhlIGZpbGUuLi4KICAgICAgLy8gY3V6IGl0IG1heSBoYXZlIHNwYWNlcyBpbiBpdCwgYW5kIGh0dHAgbWF5IG5vdCBsaWtlIHRoYXQKICAgICAgLy8gd2UgdXNlIGFuIChvcHRpb25hbCkgY291bnRlciB0byBtYWtlIHN1cmUgdGhhdCB3ZQogICAgICAvLyBjYW4gaGF2ZSBudW1lcm91cyBmaWxlcyB3aXRoIHNpbWlsYXIgbmFtZXMKICAgICAgJHBvc3RmaXggPSAiIjsKICAgICAgd2hpbGUoICRwb3N0Zml4IDwgMTAwICkKCXsKCSAgJGRlc3RmaWxlID0gc3RyX3JlcGxhY2UgKGFycmF5ICgnICcsICclMjAnKSwgYXJyYXkgKCdfJywgJ18nKSwgJGZpbGUgKTsKCSAgaWYoICRwb3N0Zml4ICE9ICIiICkKCSAgICB7CgkgICAgICAkZGVzdGZpbGUgLj0gIl8iIC4gJHBvc3RmaXg7CgkgICAgfQoKCSAgaWYoICRkZXN0ZmlsZSAhPSAkZmlsZSApCgkgICAgewoJICAgICAgJGRlc3RwID0gJGRpci5ESVJFQ1RPUllfU0VQQVJBVE9SLiRkZXN0ZmlsZTsKCSAgICAgIAoJICAgICAgLy8geWVwLCB3ZSBnb3R0YSByZW5hbWUgaXQKCSAgICAgIC8vIGJ1dCBtYWtlIHN1cmUgdGhlIGZpbGUgZG9lc24ndCBhbHJlYWR5IGV4aXN0IGZpcnN0CgkgICAgICBpZiggZmlsZV9leGlzdHMoICRkZXN0cCApICkKCQl7CgkJICAvLyB1aC1vaCBpdCBleGlzdHMKCQkgIC8vIGluY3JlbWVudCB0aGUgcG9zdGZpeAoJCSAgaWYoICRwb3N0Zml4ID09ICIiICkKCQkgICAgewoJCSAgICAgICRwb3N0Zml4ID0gMTsKCQkgICAgfQoJCSAgZWxzZQoJCSAgICB7CgkJICAgICAgJHBvc3RmaXgrKzsKCQkgICAgfQoJCSAgY29udGludWU7CgkJfQoJICAgICAgCgkgICAgICByZW5hbWUoICRzcmNwLCAkZGVzdHAgKTsKCSAgICAgICRmaWxlID0gJGRlc3RmaWxlOwoJICAgIH0KCgkgIGJyZWFrOyAvLyBnZXQgb3V0IG9mIHRoaXMgd2hpbGUgc3RhdGVtZW50Cgl9CgogICAgICBpZiggJHBvc3RmaXggPj0gMTAwICkKCXsKCSAgLy8gZm9yIHNvbWUgb2RkIHJlYXNvbiwgd2UgY291bGQgbm90IGZpbmQgYSByZWFzb25hYmxlCgkgIC8vIGZpbGVuYW1lIHRvIHJlbmFtZSB0by4KCSAgLy8gd2UnbGwganVzdCBza2lwIHRoaXMgZmlsZQoJICBjb250aW51ZTsKCX0KCiAgICAgIC8vIG5leHQgY2hlY2sgdG8gbWFrZSBzdXJlIGl0cyBub3QgYWxyZWFkeSBpbiB0aGUgZGF0YWJhc2UKICAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMgV0hFUkUKICAgICAgICAgICAgdXBsb2FkX25hbWUgPSA/IEFORCB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IjsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRmaWxlLCAkY2F0ZWdvcnlfaWQpICk7CiAgICAgIGlmKCAhJGRicmVzdWx0ICkgewogICAgICAgIGVjaG8gJGRiLT5FcnJvck1zZygpLiI8YnIvPiI7CglyZXR1cm47CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICAgICBpZiggJHJvdyApIHsKICAgICAgICAgIC8vIGZpbGUgZXhpc3RzCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgIH0gCgogICAgICAvLyBhbmQgYWRkIGl0IHRvIHRoZSBkYXRhYmFzZQogICAgICAkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV91cGxvYWRzIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8sbnVsbCkiOwogICAgICAkdXNlcmlkID0gZ2V0X3VzZXJpZCgpOwogICAgICAkdXNlcm5hbWUgPSAkX1NFU1NJT05bImNtc19hZG1pbl91c2VybmFtZSJdOwogICAgICAkbmV3aWQgPSAkZGItPkdlbklEIChjbXNfZGJfcHJlZml4ICgpLiJtb2R1bGVfdXBsb2Fkc19zZXEiKTsKICAgICAgJHBhcm1zID0JYXJyYXkoICRuZXdpZCwgCgkJICAgICAgICRjYXRlZ29yeV9pZCwKCQkgICAgICAgJGZpbGUsIAoJCSAgICAgICAkdXNlcm5hbWUsIAoJCSAgICAgICAkZGVzYywgCgkJICAgICAgICIiLCAKCQkgICAgICAgImxvY2FsaG9zdCIsIAoJCSAgICAgICAkc2l6ZSwKCQkgICAgICAgdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksIiciKSApOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSwgJHBhcm1zICk7CiAgICAgIGlmKCAhJGRicmVzdWx0ICkgewoJZWNobyAkZGItPkVycm9yTXNnKCkuIjxici8+IjsKCXJldHVybjsKICAgICAgfQogICAgfQogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNlbmRGaWxlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQogICAKICAgVGhpcyBtZXRob2QgYWN0dWFsbHkgc2VuZHMgdGhlIHJlcXVlc3RlZCBmaWxlIHRvIHRoZQogICB1c2VyLgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFNlbmRGaWxlICgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFNtYXJ0U2NhbkRpcmVjdG9yeSgkY2F0ZWdvcnlfaWQsICRkaXIgKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQoKICAgQSBtZXRob2QgdG8gcGVyZm9ybSBhIHNjYW4gZGlyZWN0b3J5IGlmIHRoZSBjb3VudCBvZiB0aGUKICAgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBtYXRjaCB0aGUgY291bnQgb2YgdGhlIGZpbGVzCiAgIGluIHRoZSBkYXRhYmFzZQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFNtYXJ0U2NhbkRpcmVjdG9yeSgkY2F0ZWdvcnlfaWQsICRkaXIgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICJTRUxFQ1QgQ09VTlQoKikgQVMgY291bnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3VwbG9hZHMKICAgICAgICAgICAgICBXSEVSRSB1cGxvYWRfY2F0ZWdvcnlfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkY2F0ZWdvcnlfaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CiAgICAgICAgZWNobyAkZGItPkVycm9yTXNnKCkuIjxici8+IjsKCXJldHVybjsKICAgICAgfQogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICRyb3djb3VudCA9ICRyb3dbJ2NvdW50J107CgogICAgLy8gZ2V0IHRoZSBudW1iZXIgb2YgZmlsZXMKICAgICRmaWxlcyA9ICR0aGlzLT5fc2NhbmRpciggJGRpciApOwogICAgJGNvdW50ID0gMDsKICAgIGZvcmVhY2goICRmaWxlcyBhcyAkZmlsZSApCiAgICAgIHsKCS8vIGlnbm9yZSBkaXJlY3RvcmllcyAuIGFuZCAuLgoJaWYoICRmaWxlID09ICIuIiB8fCAkZmlsZSA9PSAiLi4iICkgewoJICBjb250aW51ZTsKCX0KCgkvLyBpZ25vcmUgYW55IGRpcmVjdG9yaWVzCgkkc3JjcCA9ICRkaXIuRElSRUNUT1JZX1NFUEFSQVRPUi4kZmlsZTsKCWlmKCBpc19kaXIoICRzcmNwICkgKSB7CgkgIGNvbnRpbnVlOwoJfQoKCSRjb3VudCsrOwogICAgICB9CgogICAgaWYoICRjb3VudCAhPSAkcm93Y291bnQgKQogICAgICB7CgkkdGhpcy0+U2NhbkRpcmVjdG9yeSggJGNhdGVnb3J5X2lkLCAkZGlyICk7CiAgICAgIH0KICB9Cgp9CgojIHZpbTp0cz0yIHN3PTIgbm9ldAo/Pgo=]]></data>
	</file>
</module>
