<?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>SEOTools</name>
	<version>1.5</version>
  <mincmsversion>1.6.0</mincmsversion>
	<help><![CDATA[PGgzPldhcyB0dXQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZSBTRU8gVG9vbHMgaGVsZmVuIElobmVuLCBJaHJlIFNFTyAoU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24sIFN1Y2htYXNjaGluZW5vcHRpbWllcnVuZykgaW4gZGVuIEdyaWZmIHp1IGJla29tbWVuLiBEYXMgTW9kdWwgZiZ1dW1sO2d0IHZlcnNjaGllZGVuZSBTRU8tRiZhdW1sO2hpZ2tlaXRlbiB6dSBDTVNNUyBoaW56dSB1bmQgd2FybnQgU2llLCBmYWxscyBTaWUgaXJnZW5kZXR3YXMgU0VPLWJlem9nZW5lcyAmdXVtbDtiZXJzZWhlbiBoYWJlbi4gQWt0dWVsbCB3ZXJkZW4gZGllIGZvbGdlbmRlbiBGZWF0dXJlcyB1bnRlcnN0JnV1bWw7dHp0OjwvcD4KPHVsPgo8bGk+LSBhdXRvbWF0aXNjaGUgRXJ6ZXVndW5nIHZvbiBNZXRhLVRhZ3MgaW0gU3RhbmRhcmQtSFRNTC1Gb3JtYXQsIG5hY2ggZGVyIER1YmxpbiBDb3JlLVNwZXppZmlrYXRpb24gdW5kIE9wZW5HcmFwaDwvbGk+CjxsaT4tIGF1dG9tYXRpc2NoZSBFeHRyYWt0aW9uIHZvbiBLZXl3b3JkcyBhdXMgSWhyZW4gU2VpdGVuLCBkaWUgenVtIFNlaXRlbnRpdGVsIHVuZCBkZW4gTWV0YS1UYWdzIGhpbnp1Z2VmJnV1bWw7Z3Qgd2VyZGVuPC9saT4KPGxpPi0gRmVzdGxlZ2VuIG1pdCBlaW5lbSBLbGljaywgb2IgYmVzdGltbXRlIFNlaXRlbiB2b24gU3VjaG1hc2NoaW5lbiBpbmRpemllcnQgd2VyZGVuIHNvbGxlbiBvZGVyIG5pY2h0PC9saT4KPGxpPi0gRXJ6ZXVndW5nIGVpbmVyIHNpdGVtYXAueG1sLURhdGVpIG1pdCBJaHJlbiBTZWl0ZW4gdyZhdW1sO2hyZW5kIFNpZSBkaWUgdm9sbGUgS29udHJvbGxlIGRhciZ1dW1sO2JlciBoYWJlbiwgd2llIGRpZSBQcmlvcml0JmF1bWw7dCBlaW56ZWxuZXIgU2VpdGVuIGJld2VydGV0IHdlcmRlbiBzb2xsPC9saT4KPGxpPi0gRXJ6ZXVndW5nIGVpbmVyIHJvYm90cy50eHQtRGF0ZWkgbWl0IGRlciBNJm91bWw7Z2xpY2hrZWl0LCBleHBsaXppdCBkZW4gWnVncmlmZiBhdWYgU2VpdGVuLCBkaWUgbmljaHQgaW5kaXppZXJ0IHdlcmRlbiBzb2xsZW4sIHp1IHZlcmJpZXRlbjwvbGk+CjxsaT4tIEF1c2dhYmUgdm9uIFdhcm51bmdlbiwgd2VubiBtZWhyZXJlIFNlaXRlbiBkZW4gZ2xlaWNoZW4gVGl0ZWwgb2RlciBkaWUgZ2xlaWNoZSBCZXNjaHJlaWJ1bmcgaGFiZW48L2xpPgo8bGk+LSBBdXNnYWJlIHZvbiBXYXJudW5nZW4gd2VubiBzZWhyIGt1cnplIFNlaXRlbmJlc2NocmVpYnVuZ2VuIGdlZnVuZGVuIHd1cmRlbjwvbGk+CjxsaT4tIEF1dG9tYXRpc2NoZXMgRWluc2VuZGVuIGRlciBha3R1YWxpc2llcnRlbiBTaXRlbWFwLURhdGVpIHp1IEdvb2dsZSwgd2VubiBJbmhhbHRlIGdlJmF1bWw7bmRlcnQgd2VyZGVuPC9saT4gCjwvdWw+CjxoMz5XaWUgd2lyZCBkYXMgTW9kdWwgdmVyd2VuZGV0PzwvaDM+CjxwPiZPdW1sO2ZmbmVuIFNpZSB6dW4mYXVtbDtjaHN0IGFsbGUgVGVtcGxhdGVzLCBhdWYgZGVuZW4gU2llIFNFTyBUb29scyB2ZXJ3ZW5kZW4gbSZvdW1sO2NodGVuLiBFbnRmZXJuZW4gU2llIGRhcyBrb21wbGV0dGUgJmx0O3RpdGxlJmd0Oy1UYWcgdW5kIGRhcyB7bWV0YWRhdGF9LVRhZyAoYXVjaCB3ZW5uIGRhIHN0ZWh0LCBkYSZzemxpZzsgU2llIGxldHp0ZXJlcyBuaWUgZW50ZmVybmVuIHNvbGx0ZW4pIHVuZCBlcnNldHplbiBTaWUgYmVpZGUgZHVyY2ggZGFzIFRhZzwvcD4KPHByZT4Ke1NFT1Rvb2xzfQo8L3ByZT48YnIgLz4KPHA+RiZ1dW1sO2dlbiBTaWUgYWxzIG4mYXVtbDtjaHN0ZXMgYW0gRW5kZSBJaHJlcyBUZW1wbGF0ZXMgKG5hY2ggZGVtIHNjaGxpZSZzemxpZztlbmRlbiAmbHQ7L2JvZHkmZ3Q7LVRhZykgZGVuIGZvbGdlbmRlbiBDb2RlIGVpbjo8L3A+CjxwcmU+CntjYXB0dXJlfXtjb250ZW50IGJsb2NrPSJTZWl0ZW5iZXNjaHJlaWJ1bmciIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0KPC9wcmU+PGJyIC8+CjxwPkluIGRpZXNlcyBGZWxkIHdlcmRlbiBTaWUgc3AmYXVtbDt0ZXIgZWluZSBrdXJ6ZSBTZWl0ZW5iZXNjaHJlaWJ1bmcgKGVpbiBvZGVyIHp3ZWkgUyZhdW1sO3R6ZSkgZWluZ2ViZW4sIGRpZSBpbiBkZW4gRXJnZWJuaXNzZW4gZGVyIFN1Y2htYXNjaGluZW4gYW5nZXplaWd0IHdpcmQgdW5kIHdlbm4gei5CLiBqZW1hbmQgZGVuIExpbmsgenUgSWhyZXIgU2VpdGUgYmVpIEZhY2Vib29rIHRlaWx0LjwvcD4KPHA+UnVmZW4gU2llIG51biBkaWUgTW9kdWwtQWRtaW5pc3RyYXRpb24gYXVmIHVuZCBmJnV1bWw7bGxlbiBTaWUgYXVmIGRlbiBFaW5zdGVsbHVuZ3MtVGFicyBhbGxlIEluZm9ybWF0aW9uZW4gZWluLCBkaWUgZiZ1dW1sO3IgSWhyZSBTZWl0ZSByZWxldmFudCBzaW5kLiBVbnRlciAiTmFtZSBkZXMgU2VpdGVuYmVzY2hyZWlidW5ncy1Db250ZW50YmxvY2siIHRyYWdlbiBTaWUgZGVuIE5hbWVuIGRlcyBzb2ViZW4gaW0gVGVtcGxhdGUgYW5nZWxlZ3RlbiBDb250ZW50LUJsb2NrcyAoIlNlaXRlbmJlc2NocmVpYnVuZyIgaW4gdW5zZXJlbSBCZWlzcGllbCkgZWluLiBEZXIgVGFiICJTRU8tV2FybnVuZ2VuIiBiZW5hY2hpY2h0aWd0IFNpZSBhdXRvbWF0aXNjaCwgd2VubiBpcmdlbmRlaW5lIEVpbnN0ZWxsdW5nIGdlZnVuZGVuIHd1cmRlLCBkaWUgbmljaHQgb3B0aW1hbCBpc3QuCkF1JnN6bGlnO2VyZGVtIHNvbGx0ZW4gU2llIGluIEVydyZhdW1sO2d1bmcgemllaGVuLCBJaHJlIFNlaXRlIGJlaSBHb29nbGUgV2VibWFzdGVyIFRvb2xzIGFuenVtZWxkZW4uIFcmYXVtbDtobGVuIFNpZSBkb3J0ICJNZXRhIHRhZyB2YWxpZGF0aW9uIiB1bmQgZiZ1dW1sO2dlbiBTaWUgZGVuIEJlc3QmYXVtbDt0aWd1bmdzY29kZSwgZGVuIFNpZSBkb3J0IGVyaGFsdGVuLCBpbiBkYXMgRmVsZCAiQmVzdCZhdW1sO3RpZ3VuZ3Njb2RlIGYmdXVtbDtyIGRpZSBTZWl0ZW52ZXJpZml6aWVydW5nIiBlaW4gKG51ciBkZW4gbGFuZ2VuIENvZGUgYXVzIFphaGxlbiB1bmQgQnVjaHN0YWJlbiwgbmljaHQgZGFzIGtvbXBsZXR0ZSBNZXRhLVRhZykgdW0gYXV0b21hdGlzY2ggenUgYmVzdCZhdW1sO3RpZ2VuLCBkYSZzemxpZzsgU2llIHRhdHMmYXVtbDtjaGxpY2ggZGVyIEluaGFiZXIgSWhyZXIgU2VpdGUgc2luZC48L3A+CjxwPlNvYmFsZCBhbGxlcyBlaW5nZXJpY2h0ZXQgaXN0LCBzY2hhdWVuIFNpZSBhdWYgZGFzICJTRU8tV2FybnVuZ2VuIi1UYWIgdW5kIGJlaGViZW4gU2llIGFsbGUgUHJvYmxlbWUsIGRpZSBJaG5lbiBkb3J0IGFuZ2V6ZWlndCB3ZXJkZW4uIERlbmtlbiBTaWUgdW5iZWRpbmd0IGRhcmFuLCBhdWYgamVkZXIgU2VpdGUsIGRpZSBTaWUgdW50ZXIgIkluaGFsdGUvU2VpdGVuIiBiZWFyYmVpdGVuLCBlaW5lIGt1cnplICh1bmQgZWluZGV1dGlnZSkgQmVzY2hyZWlidW5nIGlucyBGZWxkICJTZWl0ZW5iZXNjaHJlaWJ1bmciIHVudGVuIGF1ZiBkZW0gU2VpdGVuYmVhcmJlaXR1bmdzLUZvcm11bGFyIGVpbnp1Z2ViZW4uPC9wPgo8cD5XZW5uIFNpZSBJaHJlIGVpZ2VuZW4gS2V5d29yZHMgZmVzdGxlZ2VuIChhbnN0ZWxsZSBkZXIgYXV0b21hdGlzY2ggZ2VuZXJpZXJ0ZW4gS2V5d29yZHMpIG9kZXIgZGVuIE9wZW5HcmFwaC1UeXAgYmVzdGltbXRlciBTZWl0ZW4gJmF1bWw7bmRlcm4gbSZvdW1sO2NodGVuLCBiZXN1Y2hlbiBTaWUgZGVuIFRhYiAiU2VpdGVuZWluc3RlbGx1bmdlbiIgYXVmIGRlbSBTaWUgZWluZSBMaXN0ZSBhbGxlciBpbSBTeXN0ZW0gdm9yaGFuZGVuZW4gU2VpdGVuIHNlaGVuLiBEb3J0IGsmb3VtbDtubmVuIFNpZSBhdWNoIGRpZSBQcmlvcml0JmF1bWw7dGVuIGRlciBTZWl0ZW4gZiZ1dW1sO3IgZGllIFhNTC1TaXRlbWFwICZhdW1sO25kZXJuIChkaWUgYW5kZXJuZmFsbHMgYXV0b21hdGlzY2ggYmVyZWNobmV0IHdpcmQpIHVtIGZlc3R6dWxlZ2VuLCBkYSZzemxpZzsgYmVzdGltbXRlIFNlaXRlbiBhbHMgd2ljaHRpZ2VyCmVpbmdlc3R1ZnQgd2VyZGVuIHNvbGxlbiBhbHMgYW5kZXJlIGJlaSBTdWNobWFzY2hpbmVuLVRyZWZmZXJuLCBvZGVyIHdlbm4gU2llIGVpbnplbG5lIFNlaXRlbiB2b24gZGVyIEluZGl6aWVydW5nIGR1cmNoIFN1Y2htYXNjaGluZW4gYXVzc2NobGllJnN6bGlnO2VuIG0mb3VtbDtjaHRlbi48L3A+CjxwPlNFTyBUb29scyBmJnV1bWw7Z3QgYXUmc3psaWc7ZXJkZW0gZWluZW4gVmVyd2VpcyBhdWYgZGFzIEJpbGQsIGRhcyBhbHMgSGF1cHRiaWxkIGYmdXVtbDtyIElocmUgU2VpdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsICh3aWNodGlnIGYmdXVtbDtyIExpbmtzLCBkaWUgYmVpIEZhY2Vib29rIGdldGVpbHQgd2VyZGVuKSB3ZW5uIFNpZSBlaW4gIkJpbGQiIGYmdXVtbDtyIGRpZSBTZWl0ZSBhdWYgZGVtIE9wdGlvbnMtVGFiIElocmVyIFNlaXRlIGZlc3RsZWdlbi4gV2VubiBTaWUgT3BlbkdyYXBoIHZlcndlbmRlbiwgZXJzZXR6dCBkaWVzZXMgQmlsZCBhdSZzemxpZztlcmRlbSBkYXMgU3RhbmRhcmQtQmlsZApmJnV1bWw7ciBPcGVuR3JhcGgtU2VpdGVuIGRhcyBTaWUgaW4gZGVuIEVpbnN0ZWxsdW5nZW4gdm9uIFNFTyBUb29scyBmZXN0Z2VsZWd0IGhhYmVuLiBBY2h0ZW4gU2llIGRhcmF1ZiwgZGEmc3psaWc7IFNpZSBkaWVzZSBCaWxkZXIgaW4gSWhyIC91cGxvYWRzL2ltYWdlcyAtIFZlcnplaWNobmlzIGhvY2hsYWRlbiwgZGFtaXQgc2llIHZvbiBDTVNNUyBlcmthbm50IHdlcmRlbi48L3A+IAo8aDM+S2FubiBpY2ggU21hcnR5LVZhcmlhYmxlbiB2ZXJ3ZW5kZW4/PC9oMz4KPHA+SW4gZGVuIEVpbnN0ZWxsdW5ncy1GZWxkZXJuIDxpPlNlaXRlbnRpdGVsPC9pPiwgPGk+U2VpdGVudGl0ZWwgZiZ1dW1sO3IgZGllIE1ldGEtRGF0ZW48L2k+LCA8aT5UZXh0IGYmdXVtbDtyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGUgQmVzY2hyZWlidW5nZW48L2k+IHVuZCA8aT5adXMmYXVtbDt0emxpY2hlIE1ldGEtVGFnczwvaT4gayZvdW1sO25uZW4gYWxsZSBhdWYgZGVyIFNlaXRlIHZlcndlbmRldGVuIFNtYXJ0eS1UYWdzIHVuZCBVRFRzIHZlcndlbmRldCB3ZXJkZW4uIEdlYmVuIFNpZSA8Y29kZT57ZGVidWd9PC9jb2RlPiBlaW4sIHVtIGVpbmUgTGlzdGUgYWxsZXIgenVyIFZlcmYmdXVtbDtndW5nIHN0ZWhlbmRlbiBUYWdzIHp1IHNlaGVuLjwvcD4KPGgzPldlbGNoZSBTbWFydHktVmFyaWFibGVuIHdlcmRlbiB2b24gU0VPVG9vbHMgZGVmaW5pZXJ0PzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEVpbmUga29tbWFnZXRyZW5udGUgTGlzdGUgYWxsZXIgZiZ1dW1sO3IgZGllIFNlaXRlIGdlc2V0enRlbiBLZXl3b3JkcyAoZWluc2NobGllJnN6bGlnO2xpY2ggZGVyIFN0YW5kYXJkLUtleXdvcmRzKTxiciAvPgo8Y29kZT57JHRpdGxlX2tleXdvcmRzfTwvY29kZT46IEVpbmUgbGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIGFsbGVyIGYmdXVtbDtyIGRpZSBTZWl0ZSBnZXNldHp0ZW4gS2V5d29yZHMgKGVpbnNjaGxpZSZzemxpZztsaWNoIGRlciBTdGFuZGFyZC1LZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyRkZWZhdWx0X2tleXdvcmRzfTwvY29kZT46IEVpbmUgbGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIGFsbGVyIFN0YW5kYXJkLUtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBmJnV1bWw7ciBkaWUgU2VpdGUgZ2VzZXR6dGVuIEtleXdvcmRzIChvaG5lIGRpZSBTdGFuZGFyZC1LZXl3b3JkcykKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEhlbm5pbmcgU2NoYWVmZXIgPGEgaHJlZj0ibWFpbHRvOmhlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tIj4mbHQ7aGVubmluZy5zY2hhZWZlckBnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPjxoMz5QYXJhbWV0ZXI8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gc2hvd2Jhc2U9InRydWUiIC0gU2V0emVuIFNpZSBkaWVzZW4gUGFyYW1ldGVyIGF1ZiA8Y29kZT5mYWxzZTwvY29kZT4sIHVtIGRhcyAmcXVvdDtiYXNlIGhyZWYmcXVvdDstVGFnIG5pY2h0IGFuemVpZ2VuIHp1IGxhc3Nlbi48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEhlbm5pbmcgU2NoYWVmZXIgJmx0O2luZm9Ac2NoYWVmZXItaW5mb3JtYXRpay5iaXomZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbiA6IDEuNTxiciAvPjxiciAvPiZBdW1sO25kZXJ1bmdzdmVybGF1Zjo8YnIgLz48dWw+CjxsaT5WZXJzaW9uIDEuMiAtIDA2LiBKYW51YXIgMjAxMS4gVmVyc2NoaWVkZW5lIEJ1Z2ZpeGVzIHVuZCBFcndlaXRlcnVuZ2VuLjwvbGk+CjxsaT5WZXJzaW9uIDEuMSAtIDAyLiBOb3ZlbWJlciAyMDEwLiBWZXJzY2hpZWRlbmUgQnVnZml4ZXMuPC9saT4KPGxpPlZlcnNpb24gMS4wIC0gMjQuIEF1Z3VzdCAyMDEwLiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Hilft bei der allgemeinen SEO, erzeugt XML-Sitemaps und umfangreiche Meta-Beschreibungen]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpCgl7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCX0KCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCgogICBDb2RlIGZvciBTRU9Ub29scyAiY2hhbmdlc2V0dGluZ3MiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gUmVnZW5lcmF0ZSBTaXRlbWFwIGFuZCByb2JvdHMudHh0CmlmIChpc3NldCgkX1BPU1RbJ2RvX3JlZ2VuZXJhdGUnXSkpIHsKCSR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgPT0gdHJ1ZSk7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCd0cnVlJykgPT0gJ3RydWUnKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVJvYm90c1RYVCgpOwogICAgfQoJJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiTWFudWFsbHkgcmVnZW5lcmF0ZWQgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQiKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2l0ZW1hcF9yZWdlbmVyYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7Cn0JCgkKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9tZXRhX3NldHRpbmdzJ10pKSB7CQoJCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywkX1BPU1RbJ21ldGFfc3RhbmRhcmQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCRfUE9TVFsnbWV0YV9kdWJsaW5jb3JlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGgnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJF9QT1NUWydhZGRpdGlvbmFsX21ldGFfdGFncyddKTsKCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJF9QT1NUWydtZXRhX3B1Ymxpc2hlciddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCRfUE9TVFsnbWV0YV9jb250cmlidXRvciddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywkX1BPU1RbJ21ldGFfY29weXJpZ2h0J10pOwoKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCRfUE9TVFsnbWV0YV9sb2NhdGlvbiddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywkX1BPU1RbJ21ldGFfcmVnaW9uJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJF9QT1NUWydtZXRhX2xhdGl0dWRlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCRfUE9TVFsnbWV0YV9sb25naXR1ZGUnXSk7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2FkbWlucyddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10pOwoKJHRoaXMtPnNldFByZWZlcmVuY2UoJ3RpdGxlJywkX1BPU1RbJ3RpdGxlJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJF9QT1NUWyd0aXRsZV9tZXRhJ10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCRfUE9TVFsnZGVzY3JpcHRpb25fYmxvY2snXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG8nXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywkX1BPU1RbJ2RlZmF1bHRfa2V5d29yZHMnXSk7CgokdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgTWV0YSBzZXR0aW5ncyIpOwokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwp9CgppZiAoaXNzZXQoJF9QT1NUWydzYXZlX3NpdGVtYXBfc2V0dGluZ3MnXSkpIHsKCiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJF9QT1NUWydjcmVhdGVfc2l0ZW1hcCddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJF9QT1NUWydwdXNoX3NpdGVtYXAnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywkX1BPU1RbJ2NyZWF0ZV9yb2JvdHMnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCRfUE9TVFsndmVyaWZpY2F0aW9uJ10pOwoKJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIFNpdGVtYXAgc2V0dGluZ3MiKTsKJHRoaXMtPlJlZGlyZWN0KCR0aGlzLT5pZCwgJ2RlZmF1bHRhZG1pbicsICcnLCBBcnJheSgnbWVzc2FnZSc9PidzZXR0aW5nc191cGRhdGVkJywndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKfQoKaWYgKGlzc2V0KCRfUE9TVFsnc2F2ZV9rZXl3b3JkX3NldHRpbmdzJ10pKSB7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCRfUE9TVFsna2V5d29yZF9taW5sZW5ndGgnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsJF9QT1NUWydrZXl3b3JkX3RpdGxlX3dlaWdodCddKTsKJHRoaXMtPnNldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0J10pOwokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfY29udGVudF93ZWlnaHQnXSk7CiR0aGlzLT5zZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnXSk7CgokdGhpcy0+c2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywkX1BPU1RbJ2tleXdvcmRfZXhjbHVkZSddKTsKCgokdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJFZGl0ZWQgS2V5d29yZCBzZXR0aW5ncyIpOwokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4na2V5d29yZHNldHRpbmdzJykpOwp9CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgU0VPVG9vbHMgImRlZmF1bHQiIGFjdGlvbgoKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gR2V0IHBhZ2UgZGF0YQpnbG9iYWwgJGdDbXM7CgppZiAoJGdDbXMtPnNtYXJ0eSkgewoJJHRwbF92YXJzID0gJGdDbXMtPnNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsKfWVsc2V7CgkkdHBsX3ZhcnMgPSBjbXNtcygpLT5nZXRTbWFydHkoKS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsKfQoKJHBhcnRzID0gZXhwbG9kZSgnLicsJHRwbF92YXJzWydjb250ZW50X29iaiddLT5JZEhpZXJhcmNoeSgpKTsKJHBhZ2VfaWQgPSAkcGFydHNbY291bnQoJHBhcnRzKSAtIDFdOwoKJGhtID0mICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CmlmIChpc19pbnQoJHBhZ2VfaWQpKSB7CiAgJGN1cm5vZGUgPSYgJGhtLT5nZXROb2RlQnlJZCgkcGFnZV9pZCk7Cn1lbHNlewogICRjdXJub2RlID0mICRobS0+Z2V0Tm9kZUJ5QWxpYXMoJGdDbXMtPnZhcmlhYmxlc1sncGFnZV9uYW1lJ10pOwp9CiRjdXJjb250ZW50ID0mICRjdXJub2RlLT5HZXRDb250ZW50KCk7CiRwYWdlX3VybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsKCiRtb2RpZmllZF9kYXRlID0gJGN1cmNvbnRlbnQtPmdldE1vZGlmaWVkRGF0ZSgpOwokbW9kaWZpZWRfZGF0ZSA9IGRhdGUoJ1ktbS1kXFRIOmk6c1AnLCRtb2RpZmllZF9kYXRlKTsKCi8vIEtleXdvcmQgZ2VuZXJhdG9yCgoka2V5d29yZHMgPSBleHBsb2RlKCcgJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJycpKTsKCi8vIFYgMS4xMCsKaWYgKCR0aGlzLT5kYikgewogICRkYiA9JiAkdGhpcy0+ZGI7Cn1lbHNleyAgICAgICAgCiAgJGRiID0mICRnQ21zLT5kYjsKfQoKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZV9pZDsKJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcGFnZV9pbmZvID0gJHJlc3VsdC0+ZmV0Y2hSb3coKTsKCmlmICgkcGFnZV9pbmZvWydrZXl3b3JkcyddICE9ICIiKSB7Cgkkb3RoZXJfa2V5d29yZHMgPSBhcnJheV9mbGlwKGV4cGxvZGUoJyAnLCRwYWdlX2luZm9bJ2tleXdvcmRzJ10pKTsKfWVsc2V7Cgkkb3RoZXJfa2V5d29yZHMgPSAkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRwYWdlX2lkKTsKfQoKJHNlb19rZXl3b3JkcyA9IGltcGxvZGUoJywgJyxhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGtleXdvcmRzLCBhcnJheV9mbGlwKCRvdGhlcl9rZXl3b3JkcykpKSk7CiRzbWFydHktPmFzc2lnbignc2VvX2tleXdvcmRzJywgJHNlb19rZXl3b3Jkcyk7CiR0aXRsZV9rZXl3b3JkcyA9IGltcGxvZGUoJyAnLGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgka2V5d29yZHMsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpKTsKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9rZXl3b3JkcycsICR0aXRsZV9rZXl3b3Jkcyk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdF9rZXl3b3JkcycsIGltcGxvZGUoJyAnLCAka2V5d29yZHMpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlX2tleXdvcmRzJywgaW1wbG9kZSgnICcsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpOwoKLy8gUGFnZSBkZXNjcmlwdGlvbgoKJGRlc2NyaXB0aW9uX2lkID0gc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSk7CiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPmdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSk7CgppZiAoKCRkZXNjcmlwdGlvbiA9PSAiIikgJiYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywnZmFsc2UnKSA9PSAndHJ1ZScpKSB7CiAgJGt3ID0gYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpOwogICRsYXN0X2tleXdvcmQgPSBhcnJheV9wb3AoJGt3KTsKICAka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7CiAgJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3trZXl3b3Jkc30nLCRrZXl3b3JkcywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJycpKTsKICAkZGVzY3JpcHRpb24gPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPm1OYW1lLCRkZXNjcmlwdGlvbik7CiAgJGRlc2NyaXB0aW9uID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRkZXNjcmlwdGlvbik7Cn0KCi8vIFNob3cgYmFzZT8KaWYgKCRwYXJhbXNbJ3Nob3diYXNlJ10gIT0gJ2ZhbHNlJykgewoJZWNobyAiPGJhc2UgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvJyAvPlxuIjsKfQoKLy8gUGFnZSB0aXRsZQokdGl0bGUgPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwge3NpdGVuYW1lfSAtIHtzZW9fa2V5d29yZHN9Jyk7CiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCR0aXRsZSk7CiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddLCR0aXRsZSk7CiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2VvX2tleXdvcmRzfScsJHRpdGxlX2tleXdvcmRzLCR0aXRsZSk7CiR0aXRsZSA9ICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGl0bGUpOwoKJG1ldGFfdGl0bGUgPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJ3t0aXRsZX0gfCB7c2l0ZW5hbWV9Jyk7CiRtZXRhX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJG1ldGFfdGl0bGUpOwokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddLCRtZXRhX3RpdGxlKTsKJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkbWV0YV90aXRsZSk7CiRtZXRhX3RpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRtZXRhX3RpdGxlKTsKCiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9Jyk7CiRvcGVuZ3JhcGhfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkb3BlbmdyYXBoX3RpdGxlKTsKJG9wZW5ncmFwaF90aXRsZSA9ICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkb3BlbmdyYXBoX3RpdGxlKTsKCmVjaG8gIjx0aXRsZT4iLiR0aXRsZS4iPC90aXRsZT5cbiI7CgovLyBNRVRBIHRhZ3MgZm9yIGNvbnRlbnQgdHlwZSBldGMuCmVjaG8gIjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIuJGdDbXMtPmNvbmZpZ1snZGVmYXVsdF9lbmNvZGluZyddLiInIC8+XG4iOwppZiAoKCRwYWdlX2luZm9bJ2luZGV4YWJsZSddID09ICIiKSB8fCAoJHBhZ2VfaW5mb1snaW5kZXhhYmxlJ10gPT0gIjEiKSkgewoJZWNobyAiPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdpbmRleCwgZm9sbG93JyAvPlxuIjsKfWVsc2V7CgllY2hvICI8bWV0YSBuYW1lPSdyb2JvdHMnIGNvbnRlbnQ9J25vaW5kZXgnIC8+XG4iOwp9CgppZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpICE9ICcnKSB7CgllY2hvICI8bWV0YSBuYW1lPSdnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpLiInIC8+XG4iOwp9CgovLyBTdGFuZGFyZCBNRVRBIHRhZ3MKaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywndHJ1ZScpID09ICd0cnVlJykgewoJZWNobyAiPG1ldGEgbmFtZT0ndGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsKCWVjaG8gIjxtZXRhIG5hbWU9J2Rlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0na2V5d29yZHMnIGNvbnRlbnQ9JyRzZW9fa2V5d29yZHMnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nbGFzdHVwZGF0ZScgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0ncmV2aXNlZCcgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLiInIC8+XG4iOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJykgIT0gIiIpIHsKICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBsYWNlbmFtZScgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOwogICAgfQogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J2dlby5yZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsKICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBvc2l0aW9uJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIjsiLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgICBlY2hvICI8bWV0YSBuYW1lPSdJQ0JNJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIiwgIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsKICAgIH0gICAgCn0KCmlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSAhPSAnJykgewoJZWNobyAkdGhpcy0+cHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJykpOwkKfQoKLy8gRHVibGluQ29yZSBNRVRBIHRhZ3MKaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCdmYWxzZScpID09ICd0cnVlJykgewogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuREMnIGhyZWY9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJyAvPlxuIjsKICAgIGVjaG8gIjxsaW5rIHJlbD0nc2NoZW1hLkRDVEVSTVMnIGhyZWY9J2h0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8nIC8+XG4iOwogICAgZWNobyAiPG1ldGEgbmFtZT0nREMudHlwZScgY29udGVudD0nVGV4dCcgc2NoZW1lPSdEQ1RFUk1TLkRDTUlUeXBlJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmZvcm1hdCcgY29udGVudD0ndGV4dC9odG1sJyBzY2hlbWU9J0RDVEVSTVMuSU1UJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnJlbGF0aW9uJyBjb250ZW50PSdodHRwOi8vZHVibGluY29yZS5vcmcvJyBzY2hlbWU9J0RDVEVSTVMuVVJJJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnB1Ymxpc2hlcicgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmNvbnRyaWJ1dG9yJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJykuIicgLz5cbiI7ICAgIAogICAgZWNobyAiPG1ldGEgbmFtZT0nREMubGFuZ3VhZ2UnIGNvbnRlbnQ9JyIuJGdDbXMtPnNpdGVwcmVmc1snZnJvbnRlbmRsYW5nJ10uIicgc2NoZW1lPSdEQ1RFUk1TLlJGQzMwNjYnIC8+XG4iOyAgICAKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnJpZ2h0cycgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcnKS4iJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnRpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5kZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmRhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyBzY2hlbWU9J0RDVEVSTVMuVzNDRFRGJyAvPlxuIjsKICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmlkZW50aWZpZXInIGNvbnRlbnQ9JyRwYWdlX3VybCcgc2NoZW1lPSdEQ1RFUk1TLlVSSScgLz5cbiI7CQp9CgovLyBPcGVuR3JhcGggTUVUQSB0YWdzCmlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLCdmYWxzZScpID09ICd0cnVlJykgewogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnRpdGxlJyBjb250ZW50PSckb3BlbmdyYXBoX3RpdGxlJyAvPlxuIjsKICAgIGlmICgkcGFnZV9pbmZvWydvZ3R5cGUnXSA9PSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLiInIC8+XG4iOwogICAgfWVsc2V7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0eXBlJyBjb250ZW50PSciLiRwYWdlX2luZm9bJ29ndHlwZSddLiInIC8+XG4iOwogICAgfQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnVybCcgY29udGVudD0nJHBhZ2VfdXJsJyAvPlxuIjsKICAgIAogICAgaWYgKCgkY3VyY29udGVudC0+bVByb3BlcnRpZXMtPm1Qcm9wZXJ0eVZhbHVlc1snaW1hZ2UnXSAhPSAtMSkgJiYgKCRjdXJjb250ZW50LT5tUHJvcGVydGllcy0+bVByb3BlcnR5VmFsdWVzWydpbWFnZSddICE9ICIiKSkgIHsKICAgIAkkaW1hZ2UgPSAkY3VyY29udGVudC0+bVByb3BlcnRpZXMtPm1Qcm9wZXJ0eVZhbHVlc1snaW1hZ2UnXTsKICAgIH1lbHNlewogICAgCSRpbWFnZSA9ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOwogICAgfQogICAgCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2UnIGNvbnRlbnQ9JyIuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyRpbWFnZScgLz5cbiI7CiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJGdDbXMtPnNpdGVwcmVmc1snc2l0ZW5hbWUnXSkuIicgLz5cbiI7ICAgIAogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmRlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpICE9ICIiKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdmYjphcHBfaWQnIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykuIicgLz5cbiI7CiAgICB9ZWxzZXsKICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykuIicgLz5cbiI7CiAgICB9CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9jYWxpdHknIGNvbnRlbnQ9JyIuJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKS4iJyAvPlxuIjsKICAgIH0KICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCcnKSAhPSAiIikgewogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6cmVnaW9uJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLiInIC8+XG4iOwogICAgfQogICAgaWYgKCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpICE9ICIiKSAmJiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykgIT0gIiIpKSB7CiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsYXRpdHVkZScgY29udGVudD0nIi4kdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiInIC8+XG4iOwogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9uZ2l0dWRlJyBjb250ZW50PSciLiR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOwogICAgfSAgICAgICAgICAgCn0KCi8vIEltYWdlLUxpbmsKCmlmICgoJGN1cmNvbnRlbnQtPmdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykgIT0gLTEpICYmICgkY3VyY29udGVudC0+Z2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKSAhPSAiIikpICB7CgllY2hvICI8bGluayByZWw9J2ltYWdlX3NyYycgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvdXBsb2Fkcy9pbWFnZXMvIi4kY3VyY29udGVudC0+Z2V0UHJvcGVydHlWYWx1ZSgnaW1hZ2UnKS4iJyAvPiI7Cn0KCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkKICAgIHsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgfQoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJkZWZhdWx0YWRtaW4iIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gRG8gdGhlIGFjdGlvbgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAndG9nZ2xlX2luZGV4JykgewoJLy8gViAxLjEwKwoJaWYgKCR0aGlzLT5kYikgewoJICAkZGIgPSYgJHRoaXMtPmRiOwoJfWVsc2V7ICAgICAgICAKCSAgJGRiID0mICRnQ21zLT5kYjsKCX0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsKICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7CiAgICBpZiAoJGluZm9bJ2luZGV4YWJsZSddID09ICIxIikgewogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOwogICAgfWVsc2V7CiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgaW5kZXhhYmxlID0gMCBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpbmRleGFibGUgPSAxJzsKICAgIH0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywndHJ1ZScpID09ICd0cnVlJykgewogICAgICAgICR0aGlzLT5jcmVhdGVSb2JvdHNUWFQoKTsKICAgIH0KICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCd0cnVlJykgPT0gJ3RydWUnKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJ3RydWUnKSA9PSB0cnVlKTsKICAgIH0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsKfSAgIAoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3NldF9wcmlvcml0eScpIHsKCS8vIFYgMS4xMCsKCWlmICgkdGhpcy0+ZGIpIHsKCSAgJGRiID0mICR0aGlzLT5kYjsKCX1lbHNleyAgICAgICAgCgkgICRkYiA9JiAkZ0Ntcy0+ZGI7Cgl9ICAgIAogICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddLicgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddOyAgICAKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwogICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSA9PSAndHJ1ZScpIHsKICAgICAgICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywndHJ1ZScpID09IHRydWUpOwogICAgfQp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfcHJpb3JpdHknKSB7CgkvLyBWIDEuMTArCglpZiAoJHRoaXMtPmRiKSB7CgkgICRkYiA9JiAkdGhpcy0+ZGI7Cgl9ZWxzZXsgICAgICAgIAoJICAkZGIgPSYgJGdDbXMtPmRiOwoJfSAgICAKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgcHJpb3JpdHkgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107ICAgIAogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkX0dFVFsndGFiJ10gPSAncGFnZWRlc2NyaXB0aW9ucyc7CiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywndHJ1ZScpID09ICd0cnVlJykgewogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgPT0gdHJ1ZSk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnd2hhdCddKSAmJiAkX0dFVFsnd2hhdCddID09ICdyZXNldF9vZ3R5cGUnKSB7CgkvLyBWIDEuMTArCglpZiAoJHRoaXMtPmRiKSB7CgkgICRkYiA9JiAkdGhpcy0+ZGI7Cgl9ZWxzZXsgICAgICAgIAoJICAkZGIgPSYgJGdDbXMtPmRiOwoJfSAgICAKICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOyAgICAKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOwp9CgppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfa2V5d29yZHMnKSB7CgkvLyBWIDEuMTArCglpZiAoJHRoaXMtPmRiKSB7CgkgICRkYiA9JiAkdGhpcy0+ZGI7Cgl9ZWxzZXsgICAgICAgIAoJICAkZGIgPSYgJGdDbXMtPmRiOwoJfSAgIAogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzIFNFVCBrZXl3b3JkcyA9IE5VTEwgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsgICAgCiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfb2d0eXBlJykgewogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfb2d0eXBlJywgJHRoaXMtPnJldHVybmlkLCBBcnJheSgnY29udGVudF9pZCc9PiRfR0VUWydjb250ZW50X2lkJ10pKTsKfQoKaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfa2V5d29yZHMnKSB7CiAgICBlY2hvICR0aGlzLT5SZWRpcmVjdChudWxsLCAnZWRpdF9rZXl3b3JkcycsICR0aGlzLT5yZXR1cm5pZCwgQXJyYXkoJ2NvbnRlbnRfaWQnPT4kX0dFVFsnY29udGVudF9pZCddKSk7Cn0KICAgIAogICAgCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2hlYWRlcnMnLCR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Nlb2FsZXJ0cycsJHRoaXMtPkxhbmcoJ3RpdGxlX3Nlb2FsZXJ0cycpKS4KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BhZ2VkZXNjcmlwdGlvbnMnLCR0aGlzLT5MYW5nKCd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAncGFnZWRlc2NyaXB0aW9ucycpKS4gIAogICAgJHRoaXMtPlNldFRhYkhlYWRlcignbWV0YXNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfbWV0YXNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAnbWV0YXNldHRpbmdzJykpLgogICAgJHRoaXMtPlNldFRhYkhlYWRlcignc2l0ZW1hcHNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfc2l0ZW1hcHNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAnc2l0ZW1hcHNldHRpbmdzJykpLgogICAgJHRoaXMtPlNldFRhYkhlYWRlcigna2V5d29yZHNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZHNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAna2V5d29yZHNldHRpbmdzJykpLgogICAgJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWInLCR0aGlzLT5FbmRUYWIoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2Zvb3RlcnMnLCR0aGlzLT5FbmRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3Nlb2FsZXJ0c190YWInLCR0aGlzLT5TdGFydFRhYignc2VvYWxlcnRzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3BhZ2VkZXNjcmlwdGlvbnNfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ3BhZ2VkZXNjcmlwdGlvbnMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfbWV0YXNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdtZXRhc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfc2l0ZW1hcHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdzaXRlbWFwc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfa2V5d29yZHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdrZXl3b3Jkc2V0dGluZ3MnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfc2VjdGlvbicsJ2RlZmF1bHRhZG1pbicpOwoKaWYgKGlzc2V0KCRfR0VUWydtZXNzYWdlJ10pKSB7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+c2hvd01lc3NhZ2UoJHRoaXMtPmxhbmcoJF9HRVRbJ21lc3NhZ2UnXSkpKTsKfQoKLyogU0VPIEFsZXJ0cyBUYWIgKi8KCiRhbGVydHMgID0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c191cmdlbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX3VyZ2VudCcpKTsKCiR1cmdlbnRfYWxlcnRzID0gJHRoaXMtPmdldFVyZ2VudEFsZXJ0cygpOwoKaWYgKGNvdW50KCR1cmdlbnRfYWxlcnRzKSA9PSAwKSB7CiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsKfWVsc2V7CiAgJGdyb3VwcyA9IEFycmF5KCk7CiAgZm9yZWFjaCAoJHVyZ2VudF9hbGVydHMgYXMgJGFsZXJ0KSB7ICAgICAgICAgIAogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7ICAgIAogIH0gICAgCiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCA9PiAkZ2FsZXJ0cykgewogIAkkY291bnQgPSBjb3VudCgkZ2FsZXJ0cyk7IAogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA+IDIwKSB7CiAgICAgICAgJHBhcnRzID0gYXJyYXlfY2h1bmsoJGdhbGVydHMsIDIwKTsKICAgICAgICAkZ2FsZXJ0cyA9ICRwYXJ0c1swXTsKICAgICAgICAkY291bnQgPSAiPiAyMCI7CiAgICB9CiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdhbGVydHNbMF1bJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRnYWxlcnRzWzBdWydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgICB9ZWxzZXsKICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOwogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdyb3VwX3RpdGxlLic8L2I+IFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQobnVsbCkiIG9uQ2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwndXJnZW50X2dyb3VwXycuJGdyb3VwLidcJykuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJyI+Jy4kdGhpcy0+bGFuZygndmlld19hbGwnKS4nPC9hPl08YnIgLz48YnIgLz4nOwogICAgICAkYWxlcnRzIC49ICc8ZGl2IGlkPSJ1cmdlbnRfZ3JvdXBfJy4kZ3JvdXAuJyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzBweDsgZGlzcGxheTogbm9uZTsiPic7CiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgewogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvTm90aWZpY2F0aW9ucy8xLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgICB9CiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7CiAgICB9CiAgfQp9CgokYWxlcnRzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOyAKCiRhbGVydHMgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19pbXBvcnRhbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX2ltcG9ydGFudCcpKTsKCiRpbXBvcnRhbnRfYWxlcnRzID0gJHRoaXMtPmdldEltcG9ydGFudEFsZXJ0cygpOwppZiAoY291bnQoJGltcG9ydGFudF9hbGVydHMpID09IDApIHsKICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gJy4kdGhpcy0+bGFuZygnbm90aGluZ190b19iZV9maXhlZCcpLic8YnIgLz48YnIgLz4nOwp9ZWxzZXsKICAkZ3JvdXBzID0gQXJyYXkoKTsKICBmb3JlYWNoICgkaW1wb3J0YW50X2FsZXJ0cyBhcyAkYWxlcnQpIHsgICAgICAgICAgCiAgICAkZ3JvdXBzWyRhbGVydFsnZ3JvdXAnXV1bXSA9ICRhbGVydDsgICAgCiAgfSAgICAKICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwID0+ICRnYWxlcnRzKSB7CiAgICAkY291bnQgPSBjb3VudCgkZ2FsZXJ0cyk7IAogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA+IDIwKSB7CiAgICAgICAgJHBhcnRzID0gYXJyYXlfY2h1bmsoJGdhbGVydHMsIDIwKTsKICAgICAgICAkZ2FsZXJ0cyA9ICRwYXJ0c1swXTsKICAgICAgICAkY291bnQgPSAiPiAyMCI7CiAgICB9CiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsKICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdhbGVydHNbMF1bJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRnYWxlcnRzWzBdWydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7CiAgICB9ZWxzZXsKICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOwogICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMi5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGdyb3VwX3RpdGxlLic8L2I+IFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQobnVsbCkiIG9uQ2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW1wb3J0YW50X2dyb3VwXycuJGdyb3VwLidcJykuc3R5bGUuZGlzcGxheSA9IFwnYmxvY2tcJyI+Jy4kdGhpcy0+bGFuZygndmlld19hbGwnKS4nPC9hPl08YnIgLz48YnIgLz4nOwogICAgICAkYWxlcnRzIC49ICc8ZGl2IGlkPSJpbXBvcnRhbnRfZ3JvdXBfJy4kZ3JvdXAuJyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzBweDsgZGlzcGxheTogbm9uZTsiPic7CiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgewogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvTm90aWZpY2F0aW9ucy8yLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kYWxlcnRbJ21lc3NhZ2UnXS4nPC9iPiBbJy5pbXBsb2RlKCcgfCAnLCRhbGVydFsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOwogICAgICB9CiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7CiAgICB9CiAgfQp9CgokYWxlcnRzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOwoKJGFsZXJ0cyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWxlcnRzX25vdGljZXMnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX25vdGljZXMnKSk7Cgokbm90aWNlX2FsZXJ0cyA9ICR0aGlzLT5nZXROb3RpY2VBbGVydHMoKTsKaWYgKGNvdW50KCRub3RpY2VfYWxlcnRzKSA9PSAwKSB7CiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsKfWVsc2V7CiAgZm9yZWFjaCAoJG5vdGljZV9hbGVydHMgYXMgJGFsZXJ0KSB7CiAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMy5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsKICB9ICAKfQoKJGFsZXJ0cyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCgoKLyogUGFnZSBzZXR0aW5ncyBUYWIgKi8KCiRwYWdlc2V0dGluZ3MgID0gJzx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4nOwokcGFnZXNldHRpbmdzIC49ICc8dHI+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3BhZ2VfaWQnKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygncGFnZV9uYW1lJykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3ByaW9yaXR5JykuJzwvdGg+JzsKJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ29nX3R5cGUnKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygna2V5d29yZHMnKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb24nKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygnaW5kZXgnKS4nPC90aD4nOwokcGFnZXNldHRpbmdzIC49ICc8L3RyPic7CgovLyBWIDEuMTArCmlmICgkdGhpcy0+ZGIpIHsKICAgCSRkYiA9JiAkdGhpcy0+ZGI7Cn1lbHNleyAgICAgICAgCiAgICAkZGIgPSYgJGdDbXMtPmRiOwp9CgokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsKJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiRqID0gMDsKd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewkJCQkKCQogICAgJHByZWZpeCA9ICIiOwogICAgJGF1dG9fcHJpb3JpdHkgPSA4MDsKICAgIGZvciAoJGkgPSAwOyAkaSA8IHN1YnN0cl9jb3VudCgkcGFnZVsnaGllcmFyY2h5J10sJy4nKTsgJGkrKykgewogICAgICAgICRwcmVmaXggLj0gJyZyYXF1bzsgJzsKICAgICAgICAkYXV0b19wcmlvcml0eSAgPSAkYXV0b19wcmlvcml0eSAvIDI7CiAgICB9CiAgICBpZiAoJHBhZ2VbJ2RlZmF1bHRfY29udGVudCddID09IDEpIHsKICAgICAgICAkYXV0b19wcmlvcml0eSA9IDEwMDsKICAgIH0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwYWdlWydjb250ZW50X2lkJ10uJyBBTkQgcHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyInOyAgICAgICAgIAogICAgJHJlc3VsdDEgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkZGVzYyA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOyAgIAogICAgJGRlc2NyaXB0aW9uID0gJGRlc2NbJ2NvbnRlbnQnXTsKCiAgICAka3cgPSBhcnJheV9mbGlwKCR0aGlzLT5nZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICAgCiAgICAkZGVzY3JpcHRpb25fYXV0byA9IGZhbHNlOwogICAgaWYgKCgkZGVzY3JpcHRpb24gPT0gIiIpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJ2ZhbHNlJykgPT0gJ3RydWUnKSkgewogICAgCSRsYXN0X2tleXdvcmQgPSBhcnJheV9wb3AoJGt3KTsKICAgIAkka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7CiAgICAJJGRlc2NyaXB0aW9uID0gJHRoaXMtPmxhbmcoJ2F1dG9fZ2VuZXJhdGVkJykuIjogIi5zdHJfcmVwbGFjZSgne2tleXdvcmRzfScsJGtleXdvcmRzLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnJykpOwogICAgCSRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkcGFnZVsnY29udGVudF9uYW1lJ10sJGRlc2NyaXB0aW9uKTsKICAgIAkkZGVzY3JpcHRpb25fYXV0byA9IHRydWU7CiAgICB9CiAgICAKICAgICRkZWZhdWx0X29ndHlwZSA9ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJyk7CgogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddOwogICAgJHJlc3VsdDIgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICAkaW5mbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOyAgICAgICAKICAgICAgICAKICAgICRwcmlvcml0eSA9ICcoYXV0bykgJy4kYXV0b19wcmlvcml0eS4nJSAnOwogICAgJG9ndHlwZSA9ICcoZGVmYXVsdCkgJy4kZGVmYXVsdF9vZ3R5cGUuJyAnLiR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOyAgICAKICAgICRrZXl3b3JkcyA9ICcoYXV0bykgJy5jb3VudCgka3cpLicgJy4kdGhpcy0+Y3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsIGltcGxvZGUoJywgJywka3cpLic7ICcuJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSk7CiAgICAkaW5kZXhhYmxlID0gJ3RydWUnOwogICAgaWYgKCRpbmZvWydjb250ZW50X2lkJ10gIT0gIiIpIHsKICAgICAgICBpZiAoJGluZm9bJ3ByaW9yaXR5J10gIT0gMCkgewogICAgICAgICAgJHByaW9yaXR5ID0gJzxiPicuJGluZm9bJ3ByaW9yaXR5J10gLiAnJSAnLiR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X3ByaW9yaXR5IiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKSAuICc8L2I+JzsKICAgICAgICAgICRhdXRvX3ByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107CiAgICAgICAgfQogICAgICAgIGlmICgkaW5mb1snb2d0eXBlJ10gIT0gIiIpIHsKICAgICAgICAgICRvZ3R5cGUgPSAnPGI+Jy4kaW5mb1snb2d0eXBlJ10gLiAnICcgLiAkdGhpcy0+Y3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMvaW1nL3Jlc2V0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygncmVzZXRfdG9fZGVmYXVsdCcpLCBBcnJheSgid2hhdCI9PiJyZXNldF9vZ3R5cGUiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOwogICAgICAgIH0KICAgICAgICBpZiAoJGluZm9bJ2tleXdvcmRzJ10gIT0gIiIpIHsKICAgICAgICAgICAgJGtleXdvcmRzID0gJzxiPicuY291bnQoZXhwbG9kZSgnICcsJGluZm9bJ2tleXdvcmRzJ10pKSAuICR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKSAuICR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29scy9pbWcvZWRpdC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvYj4nOwogICAgICAgIH0KICAgICAgICBpZiAoJGluZm9bJ2luZGV4YWJsZSddID09IDApIHsgICAgICAgIAogICAgICAgICAgJGluZGV4YWJsZSA9ICdmYWxzZSc7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkdXBkb3duICA9ICR0aGlzLT5jcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdkZWNyZWFzZV9wcmlvcml0eScpLCBBcnJheSgnd2hhdCc9PidzZXRfcHJpb3JpdHknLCdwcmlvcml0eSc9PiRhdXRvX3ByaW9yaXR5LTEwLCdjb250ZW50X2lkJz0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOwogICAgJHVwZG93biAuPSAkdGhpcy0+Y3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vYXJyb3ctdS5naWYiIGJvcmRlcj0iMCIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnaW5jcmVhc2VfcHJpb3JpdHknKSwgQXJyYXkoJ3doYXQnPT4nc2V0X3ByaW9yaXR5JywncHJpb3JpdHknPT4kYXV0b19wcmlvcml0eSsxMCwnY29udGVudF9pZCc9PiRwYWdlWydjb250ZW50X2lkJ10pKTsKICAgIAogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRyIGNsYXNzPSJyb3cnLigkaiAlIDIgKyAxKS4nIj4nOwogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nPC90ZD4nOwogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHByZWZpeCAuJyAnLiRwYWdlWydjb250ZW50X25hbWUnXS4nPC90ZD4nOwogICAgaWYgKCRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQnIHx8ICRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQyJyApIHsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHVwZG93bi4nICcuJHByaW9yaXR5Lic8L3RkPic7CiAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRvZ3R5cGUuJzwvdGQ+JzsKICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJGtleXdvcmRzLic8L3RkPic7CiAgICAgIGlmICgkZGVzY3JpcHRpb24gIT0gIiIpIHsKICAgICAgICBpZiAoJGRlc2NyaXB0aW9uX2F1dG8pIHsKICAgICAgCSAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIHRpdGxlPSInLnN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKS4nIiAvPjwvdGQ+JzsKICAgICAgICB9CiAgICAgIH1lbHNlewogICAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD48YSBocmVmPSJlZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7CiAgICAgIH0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHRoaXMtPmNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtLycuJGluZGV4YWJsZS4nLmdpZiIgLz4nLCAkdGhpcy0+bGFuZygndG9nZ2xlJyksIEFycmF5KCd3aGF0Jz0+J3RvZ2dsZV9pbmRleCcsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvdGQ+JzsKICAgIH1lbHNlewogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIAkkcGFnZXNldHRpbmdzIC49ICc8dGQ+LS0tPC90ZD4nOwogICAgCSRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4tLS08L3RkPic7CiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsKICAgIH0KICAgICRwYWdlc2V0dGluZ3MgLj0gJzwvdHI+JzsKICAgICRqKys7CiAgICAKfQoKJHBhZ2VzZXR0aW5ncyAuPSAnPC90YWJsZT4nOwoKLyogU0VPIFNldHRpbmdzIFRhYiAqLwoKLy8gR2V0IGltYWdlIGZpbGVzIGZyb20gL3VwbG9hZHMvaW1hZ2VzCiRmaWxlc19saXN0ID0gQXJyYXkoJHRoaXMtPmxhbmcoJ25vbmUnKT0+IiIpOwokZHAgPSBvcGVuZGlyKCRnQ21zLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvdXBsb2Fkcy9pbWFnZXMnKTsKd2hpbGUgKCRmaWxlID0gcmVhZGRpcigkZHApKSB7ICAKICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5naWYnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5wbmcnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGcnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsKICAgIH0KICAgIGlmIChzdHJwb3Moc3Vic3RyKCRmaWxlLCAtNSksJy5qcGVnJykgIT09IGZhbHNlKSB7CiAgICAgICAgJGZpbGVzX2xpc3RbJGZpbGVdID0gJGZpbGU7CiAgICB9Cn0KY2xvc2VkaXIoJGRwKTsKCiRzZXR0aW5ncyAgPSAkdGhpcy0+Y3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOwoKLyogUGFnZSBUaXRsZSAqLwokc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ3RpdGxlX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd0aXRsZV90aXRsZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV90aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICd0aXRsZV9tZXRhJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndGl0bGVfbWV0YV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVzY3JpcHRpb25fYmxvY2snLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsJ2ZhbHNlJykpIC4gJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYXV0b190aXRsZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCdUaGlzIHBhZ2UgY292ZXJzIHRoZSB0b3BpY3Mge2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9hdXRvX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX3RpdGxlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ2RlZmF1bHRfa2V5d29yZHMnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9rZXl3b3JkcycsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZWZhdWx0X2tleXdvcmRzX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIE1FVEEgVHlwZXMgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX3R5cGUnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV90eXBlJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9zdGFuZGFyZCcpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX3N0YW5kYXJkJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsJ3RydWUnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9kdWJsaW5jb3JlJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywnZmFsc2UnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX29wZW5ncmFwaCcpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX29wZW5ncmFwaCcsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywnZmFsc2UnKSkgLiAnPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIE1FVEEgRGVmYXVsdHMgKi8KJHNldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX2RlZmF1bHRzJywgJHRoaXMtPkxhbmcoJ3RpdGxlX21ldGFfZGVmYXVsdHMnKSk7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX3B1Ymxpc2hlcicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9jb250cmlidXRvcicpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2NvbnRyaWJ1dG9yJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9jb250cmlidXRvcl9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9jb3B5cmlnaHQnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9jb3B5cmlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCcoQykgJy5kYXRlKCdZJykuJy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4nKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9jb3B5cmlnaHRfaGVscCcpLic8L3A+PGJyIC8+JzsKCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij48Yj4nLiR0aGlzLT5sYW5nKCdtZXRhX2xvY2F0aW9uX2Rlc2NyaXB0aW9uJykuJzwvYj48L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb24nKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sb2NhdGlvbicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb25faGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfcmVnaW9uJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfcmVnaW9uJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyksIDUsIDUpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9yZWdpb25faGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbGF0aXR1ZGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9sYXRpdHVkZScsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbGF0aXR1ZGVfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbG9uZ2l0dWRlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlX2hlbHAnKS4nPC9wPjxiciAvPic7Cgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nKS4nPC9iPjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90eXBlJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90eXBlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScpLic6PC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0RHJvcGRvd24obnVsbCwgJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywgJGZpbGVzX2xpc3QsIG51bGwsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2ltYWdlX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hZG1pbnNfaGVscCcpLic8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJykuJzo8L3A+JzsKJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRFbmQoKTsKCi8qIEFkZGl0aW9uYWwgTWV0YSBUYWdzICovCiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAnYWRkaXRpb25hbF9tZXRhJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJykpOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnKS4nOjwvcD4nOwokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSwgJ2FkZGl0aW9uYWxfbWV0YV90YWdzJykuJyAnLiR0aGlzLT5sYW5nKCdhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJykuJzwvcD4nOwokc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX21ldGFfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7CiRzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOyAKCiRzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9kZXNjcmlwdGlvbl9jb250ZW50Jyk7CgovKiBTSVRFTUFQIFNldHRpbmdzICovCgokc3NldHRpbmdzICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdzaXRlbWFwX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nKSk7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdjcmVhdGVfc2l0ZW1hcF90aXRsZScpIC4gJzogJyAuICR0aGlzLT5jcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdjcmVhdGVfc2l0ZW1hcCcsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywnZmFsc2UnKSkgLiAnPC9wPic7CmlmIChpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgewogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAncHVzaF9zaXRlbWFwJywgJ3RydWUnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywnZmFsc2UnKSkgLiAnPC9wPic7Cn1lbHNlewogICRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdwdXNoX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+TGFuZygnbm9fdXJsX2ZvcGVuJykgLiAnPC9wPic7Cn0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Y3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3JvYm90cycsICd0cnVlJywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCdmYWxzZScpKSAuICc8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCd2ZXJpZmljYXRpb25fdGl0bGUnKS4nOjwvcD4nOwokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ3ZlcmlmaWNhdGlvbicsICR0aGlzLT5nZXRQcmVmZXJlbmNlKCd2ZXJpZmljYXRpb24nLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygndmVyaWZpY2F0aW9uX2hlbHAnKS4nPC9wPic7CiRzc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnc2F2ZV9zaXRlbWFwX3NldHRpbmdzJywgJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOwoKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOyAKCiRzc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsKJHNzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAncmVnZW5lcmF0ZV9zaXRlbWFwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKTsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+JzsKJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ2RvX3JlZ2VuZXJhdGUnLCAkdGhpcy0+bGFuZygnYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKS4nPC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7CiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmxhbmcoJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJykuJzwvcD4nOwokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOwokc3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7Cgokc3NldHRpbmdzIC49ICc8YnIgLz48YnIgLz4nLiR0aGlzLT5sYW5nKCdoZWxwX3NpdGVtYXBfcm9ib3RzJyk7CgovKiBLRVlXT1JEIFNldHRpbmdzICovCgoka3NldHRpbmdzICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX3dlaWdodF9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3JkX3dlaWdodCcpKTsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmxlbmd0aF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9taW5sZW5ndGgnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9taW5sZW5ndGhfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF90aXRsZV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCcpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCcxJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnKS4nPC9wPic7CiRrc2V0dGluZ3MgLj0gJHRoaXMtPmNyZWF0ZUZpZWxkc2V0RW5kKCk7Cgoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdrZXl3b3JkX2V4Y2x1ZGVfZGVzY3JpcHRpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfa2V5d29yZF9leGNsdWRlJykpOwoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV90aXRsZScpLic6PC9wPic7CiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnJyksICdrZXl3b3JkX2V4Y2x1ZGUnKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV9oZWxwJykuJzwvcD4nOwoka3NldHRpbmdzIC49ICR0aGlzLT5jcmVhdGVGaWVsZHNldEVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NhdmVfa2V5d29yZF9zZXR0aW5ncycsICR0aGlzLT5sYW5nKCdzYXZlJykpLic8L3A+JzsKJGtzZXR0aW5ncyAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOwoKJGtzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9rZXl3b3JkX2dlbmVyYXRvcicpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWxlcnRzJywkYWxlcnRzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlc2V0dGluZ3MnLCRwYWdlc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21ldGFfZm9ybScsJHNldHRpbmdzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzaXRlbWFwX2Zvcm0nLCRzc2V0dGluZ3MpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2tleXdvcmRfZm9ybScsJGtzZXR0aW5ncyk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJlZGl0bWV0YSIgYWRtaW4gYWN0aW9uCiAgIAogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQogICAKICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4KICAgCiovCgovLyBWIDEuMTArCmlmICgkdGhpcy0+ZGIpIHsKICAkZGIgPSYgJHRoaXMtPmRiOwp9ZWxzZXsgICAgICAgIAogICRkYiA9JiAkZ0Ntcy0+ZGI7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3NldF9rZXl3b3JkcyddKSkgewoJaWYgKCRfUE9TVFsna2V5d29yZHMnXSAhPSAiIikgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzIFNFVCBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXS4iLCBrZXl3b3JkcyA9ICciLiRfUE9TVFsna2V5d29yZHMnXS4iJywgaW5kZXhhYmxlID0gMSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBrZXl3b3JkcyA9ICciLiRfUE9TVFsna2V5d29yZHMnXS4iJyI7Cgl9ZWxzZXsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMgU0VUIGtleXdvcmRzID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsKCX0JCQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CQoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7Cn0KCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsKJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7CgppZiAoJGluZm9bJ2tleXdvcmRzJ10gPT0gIiIpIHsKCSRpbmZvWydrZXl3b3JkcyddID0gc3RydG9sb3dlcihpbXBsb2RlKCcgJyxhcnJheV9mbGlwKCR0aGlzLT5nZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJF9HRVRbJ2NvbnRlbnRfaWQnXSkpKSk7Cn0KCiRvdXRwdXQgID0gJHRoaXMtPmNyZWF0ZUZvcm1TdGFydChudWxsLCAnZWRpdF9rZXl3b3JkcycpOwokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVJbnB1dEhpZGRlbihudWxsLCAnY29udGVudF9pZCcsICRfR0VUWydjb250ZW50X2lkJ10pOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2VudGVyX25ld19rZXl3b3JkcycpLic6PC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZVRleHRBcmVhKGZhbHNlLCBudWxsLCAkaW5mb1sna2V5d29yZHMnXSwgJ2tleXdvcmRzJykuJyAnLiR0aGlzLT5sYW5nKCdoZWxwX25ld19rZXl3b3JkcycpLic8L3A+JzsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+JzsKJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NldF9rZXl3b3JkcycsJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOwoKJG91dHB1dCAuPSAkdGhpcy0+Y3JlYXRlRm9ybUVuZCgpOwoKZWNobyAkb3V0cHV0OwoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KCiAgIENvZGUgZm9yIFNFT1Rvb2xzICJlZGl0bWV0YSIgYWRtaW4gYWN0aW9uCiAgIAogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQogICAKICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4KICAgCiovCgovLyBWIDEuMTArCmlmICgkdGhpcy0+ZGIpIHsKICAkZGIgPSYgJHRoaXMtPmRiOwp9ZWxzZXsgICAgICAgIAogICRkYiA9JiAkZ0Ntcy0+ZGI7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3NldF9vZ3R5cGUnXSkpIHsKCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzIFNFVCBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXS4iLCBvZ3R5cGUgPSAnIi4kX1BPU1RbJ29nX3R5cGUnXS4iJywgaW5kZXhhYmxlID0gMSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBvZ3R5cGUgPSAnIi4kX1BPU1RbJ29nX3R5cGUnXS4iJyI7Cgl9ZWxzZXsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMgU0VUIG9ndHlwZSA9IE5VTEwgV0hFUkUgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ107Cgl9CgkKCWVjaG8gJHF1ZXJ5OwoJCgkkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCSR0aGlzLT5yZWRpcmVjdChudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgQXJyYXkoJ3RhYic9PidwYWdlZGVzY3JpcHRpb25zJykpOwp9CgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107CiRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOwoKJG91dHB1dCAgPSAkdGhpcy0+Y3JlYXRlRm9ybVN0YXJ0KG51bGwsICdlZGl0X29ndHlwZScpOwokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVJbnB1dEhpZGRlbihudWxsLCAnY29udGVudF9pZCcsICRfR0VUWydjb250ZW50X2lkJ10pOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOwokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVJbnB1dFRleHQobnVsbCwgJ29nX3R5cGUnLCAkaW5mb1snb2d0eXBlJ10sIDMwLCAzMCkuJyAnLiR0aGlzLT5sYW5nKCdoZWxwX25ld19vZ3R5cGUnKS4nPC9wPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfb3BlbmdyYXBoJykuJzxiciAvPjxiciAvPic7CiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7Cgokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7CgplY2hvICRvdXRwdXQ7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/img/edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDQAHiaSPRwAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAImSURBVHjajZPPaxNBFMe/O9tuaJMY7NbUqrVNVeoPVESqB+2pBxFBD3r3Ip78Lzx48aA0WpGi4EnBg0UptIeK0Jh6UKIhmKRG0f5MqjFNm7o7uzvrzJoNqUm0A495zLzPd95j3pNs24YkSbsAdHCT8e+V4/aNM6xyIgT4Oq5pWsEwDMs0Tbue8Xs7HA7f5rE93IjgnMfLGZzgcFTXdcL9ijgHwRgDpRSqqmIp9QxrsaeQfYdR+v4KkjZ/WUQL6+fBb7gICCEO5ApYluUItNAI1tLTaGkfQCB0DIUvUSQnRrJN1QUK2N2FiCzLTprs5yQMK4W2faeQz3yEIlH4t2yHT90dqBFwSxC+eJ2tTEMxEgj0noG++BhKq4SvsSS0dX2lVFo9uUGgun7h0x8RsMJLBPaehzZ/D0Qx0ezrhteeQ3j0w7U7Y5k0afRf2eRzlBYmyvAwSLMBWuzB8tR7qIPXIWAn07pwagzFhSiCh86BLo1AVmzoxW4Ov8O2C0PwdOyvxDb9Dc9En4CtJmBKO7AYH8LWoAIt34XC2yQ6L96F7O/cEF+TQfz1Axw8fRWe2SmkRyOIjeeRnowhePZGDVxXYObzMmjiBUJHB+D19iEbz6Dv0k142nudn3G/umEJiU853Lo/jP4DIfj3HMHglYdobdvZcDiqBcRQSI/G57CJ5bQqbzJbDIUAGW+aX+7F/2Aeu853y+mX8jB14c84k00IoAznODv7G84tFQol4BT4AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/img/reset.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDDghTfTcdgAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHjapVNdSBRRGD1zZ8bZHcfFn1VWDSNMpYSUBCGCMivJHgyMkiAwfCroIZBSiFAixLeIChaiIlAhf4IoKkhEgh4KJetF1/xF3XSUTVubcdydud1xZRmjJOiDw8yd+53zffd8c4H/DM65uHq/sv9QiXxYN1S2IYDCYk8RinAAS/qidaff3zFwC7WAaHFihKMRUOIU8KXKGUnJERD3OHh5DoIcZJiFKX1GuneZtNZcOd/SWfUFpZHdlPE5EZzgFFglAWUpIYyQFARx9CZgBGaUtWsC5QfrC/0ptQMX654U0hlpjt9ynkx1x0xwhXwdwdjYKKYYJsdGuen5OU/IpaRmpGbKZFLrtYpyy92iQnIG30x1xcmia4svv0NhqLjxLG+hfcZDu4NltGOgTkcOTsU7sKLbmr3OMB5YCekVZcUn1+h7eN1FQvuHoXnhrxTbXsvREwUWVAxRIwkcsRVXbHM2p0Bi+XZkncOF9Hw+LU5GjGzHsePuao+L1TQSoWnf7U/6pssxy083pjTce33UTi9jcDOkMXhRifwjjdLNro81tHOwhHYN7aTNTwu+sb09G0eIshIn6pMbzlbvb/Up+XjUp/Ym8ImUbpQWOdlVzCcpOsL6KMJrgxCEAnS/CDxgm8Ox0lVofnx9b5OUoOGnMQVF9oJadLN35jPng2FOgxd+wIxko6dn8dXLlvUzjKzFphDgZ9P2qSVZecs5dv6qqWGd02HAhoYor8KgFiYmpLW2tpD/3V3zMmOFN7Sdf/Klh3i+qxCl1xpxO1tCkPDsItgeExCdKalv0c+Wn5yTib2LcZHsyib0eXKRu+14/3gtxS0pAsfjn+IXjhPiCXMAIGsAAAAASUVORK5CYII=]]></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/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFTyBUb29scyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFTyBUb29scyB3dXJkZSBpbnN0YWxsaWVydC4gQml0dGUgbGVzZW4gU2llIGRpZSBNb2R1bGhpbGZlIHVtIHp1IGVyZmFocmVuLCB3aWUgZGFzIE1vZHVsIGJlbnV0enQgd2lyZC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFTyBUb29scyB3dXJkZSBkZWluc3RhbGxpZXJ0LiBEZW5rZW4gU2llIGRhcmFuLCBkYSZzemxpZzsgYXVmIElocmVuIFNlaXRlbiBudW4ga2VpbmUgTWV0YS1JbmZvcm1hdGlvbmVuIG1laHIgYW5nZXplaWd0IHdlcmRlbiEnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ00mb3VtbDtjaHRlbiBTaWUgU0VPIFRvb2xzIHdpcmtsaWNoIGRlaW5zdGFsbGllcmVuPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBkZWluc3RhbGxpZXJ0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bHZlcnNpb24gJXMgaW5zdGFsbGllcnQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VpbmlnZSBUb29scyBkaWUgYmVpIGRlciBTdWNobWFzY2hpbmVub3B0aW1pZXJ1bmcgaGVsZmVuIHVuZCBTaWUgYXVmIHN1Ym9wdGltYWxlIEVpbnN0ZWxsdW5nZW4gaGlud2Vpc2VuLic7CgokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXIhJzsKJGxhbmRbJ2FkbWluX3RpdGxlJ10gPSAnU0VPIFRvb2xzIEFkbWluc3RyYXRpb24nOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0hpbGZ0IGJlaSBkZXIgYWxsZ2VtZWluZW4gU0VPLCBlcnpldWd0IFhNTC1TaXRlbWFwcyB1bmQgdW1mYW5ncmVpY2hlIE1ldGEtQmVzY2hyZWlidW5nZW4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnWnVncmlmZiB2ZXJ3ZWlnZXJ0LiBCaXR0ZSBwciZ1dW1sO2ZlbiBTaWUgSWhyZSBCZXJlY2h0aWd1bmdlbi4nOwokbGFuZ1snU0VPQWxlcnRzJ10gPSAnU0VPLVdhcm51bmdlbic7CiRsYW5nWydQYWdlZGVzY3JpcHRpb25zJ10gPSAnU2VpdGVuZWluc3RlbGx1bmdlbic7CiRsYW5nWydTaXRlbWFwJ10gPSAnU2l0ZW1hcCc7CiRsYW5nWydTRU9TZXR0aW5ncyddID0gJ1NFTy1FaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3RpdGxlX3Nlb2FsZXJ0cyddID0gJ1NFTy1XYXJudW5nZW4nOwokbGFuZ1sndGl0bGVfcGFnZWRlc2NyaXB0aW9ucyddID0gJ1NlaXRlbmVpbnN0ZWxsdW5nZW4nOwokbGFuZ1sndGl0bGVfc2l0ZW1hcCddID0gJ1NpdGVtYXAnOwokbGFuZ1sndGl0bGVfc2Vvc2V0dGluZ3MnXSA9ICdTRU8tRWluc3RlbGx1bmdlbic7CgokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YS1UYWctR2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfY3JlYXRlX3N0YW5kYXJkJ10gPSAnU3RhbmRhcmQtTWV0YXRhZ3MgZXJ6ZXVnZW4nOwokbGFuZ1snbWV0YV9jcmVhdGVfZHVibGluY29yZSddID0gJ0R1YmxpbiBDb3JlLU1ldGF0YWdzIGVyemV1Z2VuJzsKJGxhbmdbJ21ldGFfY3JlYXRlX29wZW5ncmFwaCddID0gJ09wZW5HcmFwaC1NZXRhdGFncyBlcnpldWdlbiAoei5CLiBmJnV1bWw7ciBkZW4gRmFjZWJvb2stR2VmJmF1bWw7bGx0LW1pci1CdXR0b24pJzsKCiRsYW5nWyd0aXRsZV9tZXRhX2RlZmF1bHRzJ10gPSAnTUVUQS1UYWctV2VydGUnOwokbGFuZ1snbWV0YV9wdWJsaXNoZXInXSA9ICdIZXJhdXNnZWJlciBkZXIgU2VpdGUnOwokbGFuZ1snbWV0YV9wdWJsaXNoZXJfaGVscCddID0gJygmVXVtbDtibGljaGVyd2Vpc2UgaGFuZGVsdCBlcyBzaWNoIHVtIGRpZSBGaXJtYSBmJnV1bWw7ciBkaWUgU2llIGRpZSBTZWl0ZSBlcnN0ZWxsZW4pJzsKJGxhbmdbJ21ldGFfY29udHJpYnV0b3InXSA9ICdNaXR3aXJrZW5kZSBkZXIgU2VpdGUnOwokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKCZVdW1sO2JsaWNoZXJ3ZWlzZSBzaW5kIFNpZSBkYXMsIG9kZXIgYmVsaWViaWdlIGFuZGVyZSBJbmhhbHRzLUF1dG9yZW4pJzsKJGxhbmdbJ21ldGFfY29weXJpZ2h0J10gPSAnQ29weXJpZ2h0IGRlciBTZWl0ZSc7CiRsYW5nWydtZXRhX2NvcHlyaWdodF9oZWxwJ10gPSAnKElyZ2VuZHdhcyBpbiBkZXIgRm9ybSAiKEMpIElocmUgRmlybWEuIEFsbGUgUmVjaHRlIHZvcmJlaGFsdGVuIiknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ1dlbm4gSWhyZSBXZWJzZWl0ZSBlaW5lIEVudGl0JmF1bWw7dCBiZWhhbmRlbHQgZGllIGF1ZiBlaW5lciBLYXJ0ZSBsb2thbGlzaWVydCB3ZXJkZW4ga2Fubiwgc29sbHRlbiBTaWUgb3B0aW9uYWwgZGllIGZvbGdlbmRlbiBXZXJ0ZSBlaW50cmFnZW46JzsKJGxhbmdbJ21ldGFfbG9jYXRpb24nXSA9ICdPcnQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbG9jYXRpb25faGVscCddID0gJyhOb3JtYWxlcndlaXNlIGlzdCBkaWVzIGRlciBOYW1lIGRlcyBPcnRzLCBhbiBkZW0gSWhyZSBGaXJtYSBzaXR6dCknOwokbGFuZ1snbWV0YV9yZWdpb24nXSA9ICdSZWdpb24gSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfcmVnaW9uX2hlbHAnXSA9ICcoR2ViZW4gU2llIHouQi4gIkRFLUJXIiBlaW4gZiZ1dW1sO3IgZWluZSBFbnRpdCZhdW1sO3QsIGRpZSBpbiBCYWRlbi1XJnV1bWw7cnR0ZW1iZXJnLCBEZXV0c2NobGFuZCwgc2l0enQuKSc7CiRsYW5nWydtZXRhX2xhdGl0dWRlJ10gPSAnQnJlaXRlbmdyYWQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbGF0aXR1ZGVfaGVscCddID0gJyhHZWJlbiBTaWUgZGllIERlemltYWxrb29yZGluYXRlIGRlcyBCcmVpdGVuZ3JhZHMgSWhyZXIgRW50aXQmYXVtbDt0IGVpbiknOwokbGFuZ1snbWV0YV9sb25naXR1ZGUnXSA9ICdMJmF1bWw7bmdlbmdyYWQgSWhyZXIgRW50aXQmYXVtbDt0JzsKJGxhbmdbJ21ldGFfbG9uZ2l0dWRlX2hlbHAnXSA9ICcoR2ViZW4gU2llIGRpZSBEZXppbWFsa29vcmRpbmF0ZSBkZXMgTCZhdW1sO25nZW5ncmFkcyBJaHJlciBFbnRpdCZhdW1sO3QgZWluKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9kZXNjcmlwdGlvbiddID0gJ1dlbm4gU2llIE9wZW5HcmFwaC1NZXRhdGFncyBlcnpldWdlbiBsYXNzZW4sIGYmdXVtbDtsbGVuIFNpZSBiaXR0ZSBkaWUgZm9sZ2VuZGVuIFdlcnRlIGF1czonOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSA9ICdPcGVuR3JhcGgtU2VpdGVudGl0ZWwnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCddID0gJyhTaWUgayZvdW1sO25uZW4gaGllciBhbGxlIFNtYXJ0eS1UYWdzIHZlcndlbmRlbiwgdW0gZGVuIHRhdHMmYXVtbDtjaGxpY2hlbiBTZWl0ZW50aXRlbCBhbnplaWdlbiB6dSBsYXNzZW4pJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSA9ICdTdGFuZGFyZCBPcGVuR3JhcGgtU2VpdGVudHlwJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCddID0gJyhEZXIgU3RhbmRhcmQtU2VpdGVudHlwIGYmdXVtbDtyIE9wZW5HcmFwaCwga2FubiBmJnV1bWw7ciBqZWRlIFNlaXRlICZ1dW1sO2JlcnNjaHJpZWJlbiB3ZXJkZW4uIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+SGllcjwvYT4gZmluZGVuIFNpZSBlaW5lIExpc3RlIGVybGF1YnRlciBXZXJ0ZSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnXSA9ICdPcGVuR3JhcGgtU2VpdGVubmFtZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZV9oZWxwJ10gPSAnKEVpbmUga3VyemUgVmVyc2lvbiBJaHJlcyBTZWl0ZW5uYW1lbnMsIHouQi4gIklocmUgRmlybWEiLCBtYXguIDI1IFplaWNoZW4pJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10gPSAnU3RhbmRhcmQtT3BlbkdyYXBoLUJpbGQnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCddID0gJyhXJmF1bWw7aGxlbiBTaWUgZWluIEJpbGQgYXVzIElocmVtIC91cGxvYWRzL2ltYWdlcyBWZXJ6ZWljaG5pcyBhdXMgdW0gZXMgYWxzIFN0YW5kYXJkIGYmdXVtbDtyIE9wZW5HcmFwaC1TZWl0ZW4genUgdmVyd2VuZGVuKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vay1TZWl0ZW5hZG1pbmlzdHJhdG9yZW4nOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnXSA9ICcoRWluZSBrb21tYWdldHJlbm50ZSBMaXN0ZSB2b24gRmFjZWJvb2stS29udG8tSURzIGRpZSBpbiBkZXIgTGFnZSBzaW5kLCBkaWUgU3RyZWFtcyBJaHJlciBTZWl0ZW4genUgYmVhcmJlaXRlbiknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nXSA9ICdGYWNlYm9vay1BbndlbmR1bmcnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb25faGVscCddID0gJyhEaWUgSUQgZWluZXIgRmFjZWJvb2stQW53ZW5kdW5nLCBkaWUgaW4gZGVyIExhZ2UgaXN0LCBkaWUgU3RyZWFtcyBJaHJlciBTZWl0ZW4genUgYmVhcmJlaXRlbiknOwoKJGxhbmdbJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnU2VpdGVudGl0ZWwsIEJlc2NocmVpYnVuZyB1bmQgS2V5d29yZHMnOwokbGFuZ1sndGl0bGVfdGl0bGUnXSA9ICdTZWl0ZW50aXRlbCc7CiRsYW5nWyd0aXRsZV90aXRsZV9oZWxwJ10gPSAnKERlciBTZWl0ZW50aXRlbCB3aWUgZXIgaW4gZGVyIEJyb3dzZXItVGl0ZWx6ZWlsZSBlcnNjaGVpbmVuIHNvbGwuIFNpZSBrJm91bWw7bm5lbiBkaWUgVGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gdW5kIGFsbGUgU21hcnR5LVRhZ3Mgc293aWUgVURUcyBiZW51dHplbiknOwokbGFuZ1sndGl0bGVfbWV0YV90aXRsZSddID0gJ1NlaXRlbnRpdGVsIGYmdXVtbDtyIGRpZSBNZXRhLURhdGVuJzsKJGxhbmdbJ3RpdGxlX21ldGFfaGVscCddID0gJyhEZXIgU2VpdGVudGl0ZWwsIHdpZSBlciBpbiBkZW4gTWV0YS1UaXRlbC1UYWdzIGVyc2NoZWluZW4gc29sbC4gU2llIGsmb3VtbDtubmVuIGRpZSBUYWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSB1bmQgYWxsZSBTbWFydHktVGFncyBzb3dpZSBVRFRzIGJlbnV0emVuKSc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja190aXRsZSddID0gJ05hbWUgZGVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2Nrcyc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja19oZWxwJ10gPSAnKERlciBOYW1lIElocmVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2Nrcy4gVW50ZW4gZmluZGVuIFNpZSBlaW5lIEVya2wmYXVtbDtydW5nIGhpZXJ6dSknOwokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzLCBkaWUgYXVmIGplZGVyIFNlaXRlIGVyc2NoZWluZW4gc29sbGVuJzsKJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfaGVscCddID0gJyhFaW5lIExlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSB2b24gS2V5d29yZHMgZGllIFNpZSBhdWYgamVkZXIgU2VpdGUgZWluYmluZGVuIGxhc3NlbiBtJm91bWw7Y2h0ZW4pJzsKCiRsYW5nWyd0aXRsZV9zaXRlbWFwX2Rlc2NyaXB0aW9uJ10gPSAnR29vZ2xlLVNpdGVtYXAgdW5kIENyYXdsZXItRWluc3RlbGx1bmdlbic7CiRsYW5nWydjcmVhdGVfc2l0ZW1hcF90aXRsZSddID0gJ0VpbmUgR29vZ2xlLVNpdGVtYXAgaW0gWE1MLUZvcm1hdCBlcnpldWdlbionOwokbGFuZ1sncHVzaF9zaXRlbWFwX3RpdGxlJ10gPSAnRGllIFNpdGVtYXAgYXV0b21hdGlzY2ggYmVpICZhdW1sO25kZXJ1bmdlbiBhbSBTZWl0ZW5pbmhhbHQgenUgR29vZ2xlIHNlbmRlbic7CiRsYW5nWydjcmVhdGVfcm9ib3RzX3RpdGxlJ10gPSAnRWluZSByb2JvdHMudHh0IC0gRGF0ZWkgZXJ6ZXVnZW4qJzsKJGxhbmdbJ3ZlcmlmaWNhdGlvbl90aXRsZSddID0gJ0Jlc3QmYXVtbDt0aWd1bmdzY29kZSBmJnV1bWw7ciBkaWUgU2VpdGVudmVyaWZpemllcnVuZyc7CiRsYW5nWyd2ZXJpZmljYXRpb25faGVscCddID0gJyhEZXIgQmVzdCZhdW1sO3RpZ3VuZ3Njb2RlLCBkZW4gU2llIHZvbiBkZW4gR29vZ2xlIFdlYm1hc3RlciBUb29scyBlcmhhbHRlbi4gTnVyIGRlbiBIYXNoLCBuaWNodCBkYXMga29tcGxldHRlIE1ldGEtVGFnKSc7CgokbGFuZ1sndGl0bGVfYWxlcnRzX3VyZ2VudCddID0gJ011c3Mgc29mb3J0IGJlaG9iZW4gd2VyZGVuJzsKJGxhbmdbJ3RpdGxlX2FsZXJ0c19pbXBvcnRhbnQnXSA9IHV0ZjhfZW5jb2RlKCdTb2xsdGUgc2NobmVsbHN0bfZnbGljaCBiZWhvYmVuIHdlcmRlbicpOwokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9IHV0ZjhfZW5jb2RlKCdLYW5uIHVudGVyIFVtc3TkbmRlbiBiZWhvYmVuIHdlcmRlbicpOwokbGFuZ1snbm90aGluZ190b19iZV9maXhlZCddID0gdXRmOF9lbmNvZGUoJ0luIGRpZXNlciBLYXRlZ29yaWUgbfxzc2VuIFNpZSBrZWluZSBBa3Rpb25lbiB2b3JuZWhtZW4nKTsKCiRsYW5nWydzYXZlJ10gPSAnRWluc3RlbGx1bmdlbiBzcGVpY2hlcm4nOwokbGFuZ1snbm9uZSddID0gJyhuaWNodCBhdXNnZXcmYXVtbDtobHQpJzsKJGxhbmdbJ3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdEaWUgU0VPLUVpbnN0ZWxsdW5nZW4gd3VyZGVuIGVyZm9sZ3JlaWNoIGFrdHVhbGlzaWVydC4nOwokbGFuZ1sncHJvYmxlbV9hbGVydCddID0gJ2hhdCBlcmhlYmxpY2hlIFByb2JsZW1lIG1pdCBJaHJlciBTRU8gZmVzdGdlc3RlbGx0LiAlcyc7CiRsYW5nWydwcm9ibGVtX2xpbmtfdGl0bGUnXSA9ICdadW0gQmVoZWJlbiBoaWVyIGtsaWNrZW4nOwoKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb25fY29udGVudCddID0gJzxiPkFubGVpdHVuZyBmJnV1bWw7ciBkZW4gIlNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2NrIjo8L2I+PGJyIC8+VW0gZGlyZWt0IGJlaW0gQmVhcmJlaXRlbiBlaW5lciBTZWl0ZSBlaW5lIFNlaXRlbmJlc2NocmVpYnVuZyBlaW5nZWJlbiB6dSBrJm91bWw7bm5lbiBtJnV1bWw7c3NlbiBTaWUgZGVuIGZvbGdlbmRlbiBDb2RlIGlyZ2VuZHdvIGluIGFsbCBJaHJlIFRlbXBsYXRlcyBlaW5iaW5kZW46PGJyIC8+PGJyIC8+PHByZT57Y2FwdHVyZX17Y29udGVudCBibG9jaz0iTWV0YS1CZXNjaHJlaWJ1bmciIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5TZXR6ZW4gU2llIGRhbm4gZGVuIFdlcnQgZiZ1dW1sO3IgZGVuICJOYW1lbiBkZXMgU2VpdGVuYmVzY2hyZWlidW5ncy1Db250ZW50YmxvY2tzIiBhdWYgIk1ldGEtQmVzY2hyZWlidW5nIi4gQWx0ZXJuYXRpdiBrJm91bWw7bm5lbiBTaWUgYXVjaCBkaWUgT3B0aW9uICJBdXRvbWF0aXNjaGUgU2VpdGVuYmVzY2hyZWlidW5nIGVyemV1Z2VuIiBha3RpdmllcmVuLiBEaWVzZSBPcHRpb24gbGVpc3RldCB6d2FyIG5pY2h0IHNvIHZpZWwsIGlzdCBhYmVyIGJlc3NlciBhbHMgZ2FyIG5pY2h0cy4nOwokbGFuZ1snaGVscF9zaXRlbWFwX3JvYm90cyddID0gJyopIFVtIGRpZSBhdXRvbWF0aXNjaGUgRXJ6ZXVndW5nIGVpbmVyIFNpdGVtYXAtIHVuZCBSb2JvdHMtRGF0ZWkgenUgdmVyd2VuZGVuIG11JnN6bGlnOyBkYXMgU3RhbW12ZXJ6ZWljaG5pcyBJaHJlciBDTVNNUy1JbnN0YWxsYXRpb24gZiZ1dW1sO3IgZGVuIFdlYnNlcnZlciBiZXNjaHJlaWJiYXIgc2Vpbi4gRmFsbHMgU2llIGJlcmVpdHMgZWluZSBzaXRlbWFwLnhtbCB1bmQvb2RlciByb2JvdHMudHh0LURhdGVpIGhhYmVuIG0mdXVtbDtzc2VuIGJlaWRlIGYmdXVtbDtyIGRlbiBXZWJzZXJ2ZXIgYmVzY2hyZWliYmFyIHNlaW4uJzsKCiRsYW5nWyd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJ10gPSAnVmVyd2VuZGVuIFNpZSBtaW5kZXN0ZW5zIGVudHdlZGVyIGRpZSBTdGFuZGFyZC1NZXRhLVRhZ3Mgb2RlciBEdWJsaW4gQ29yZSBNZXRhLVRhZ3MnOwokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdTaWUgc29sbHRlbiBkZW4gU3RhbmRhcmQtTWV0YS1HZW5lcmF0b3IgaW1tZXIgYWt0aXZpZXJlbic7CiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnXSA9ICdEaWUgU2VpdGUgPGk+JXM8L2k+IGJlc2l0enQga2VpbmUgTWV0YS1CZXNjaHJlaWJ1bmcnOwokbGFuZ1snbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCddID0gJ0RpZSBNZXRhLUJlc2NocmVpYnVuZyBkZXIgU2VpdGUgPGk+JXM8L2k+IGlzdCBzZWhyIGt1cnogKCA8IDc1IFplaWNoZW4pJzsKJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdEaWUgU2VpdGVuIDxpPiVzPC9pPiB1bmQgPGk+JXM8L2k+IGhhYmVuIGRlbiBnbGVpY2hlbiBUaXRlbCc7CiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnRGllIFNlaXRlbiA8aT4lczwvaT4gdW5kIDxpPiVzPC9pPiBoYWJlbiBkaWUgZ2xlaWNoZSBNZXRhLUJlc2NocmVpYnVuZyc7CiRsYW5nWydwcm92aWRlX2FuX2F1dGhvciddID0gJ1NpZSBzb2xsdGVuIGRlbiBOYW1lbiBkZXMgU2VpdGVuaGVyYXVzZ2ViZXJzIGVpbnRyYWdlbic7CiRsYW5nWydzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snXSA9ICdTZXR6ZW4gU2llIGVpbmVuIENvbnRlbnQtQmxvY2sgZiZ1dW1sO3IgTWV0YS1CZXNjaHJlaWJ1bmdlbiBhdWYnOwokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBa3RpdmllcmVuIFNpZSBkYXMgIlByZXR0eSBVUkxzIi1GZWF0dXJlIHZvbiBDTVNNUyc7CiRsYW5nWydwcmV0dHlfdXJsc19oZWxwJ10gPSAnPGEgaHJlZj0iaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL1VzZXJfSGFuZGJvb2svSW5zdGFsbGF0aW9uL09wdGlvbmFsX1NldHRpbmdzIiB0YXJnZXQ9Il9ibGFuayI+SGlsZmUgZXJoYWx0ZW48L2E+JzsKJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdMYXNzZW4gU2llIGF1dG9tYXRpc2NoIGVpbmUgR29vZ2xlLVhNTC1TaXRlbWFwIGVyc3RlbGxlbic7CiRsYW5nWydhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJ10gPSAnTGFzc2VuIFNpZSBJaHJlIFhNTC1TaXRlbWFwIGF1dG9tYXRpc2NoIHp1IEdvb2dsZSBob2NobGFkZW4nOwokbGFuZ1snY3JlYXRlX3JvYm90cyddID0gJ0xhc3NlbiBTaWUgYXV0b21hdGlzY2ggZWluZSByb2JvdHMudHh0LURhdGVpIGVyc3RlbGxlbic7CiRsYW5nWydzaXRlbWFwX25vdF93cml0ZWFibGUnXSA9ICdJaHJlIHNpdGVtYXAueG1sIC0gRGF0ZWkgaXN0IG5pY2h0IGJlc2NocmVpYmJhcic7CiRsYW5nWydjaG1vZF9zaXRlbWFwJ10gPSAnU2V0emVuIFNpZSBJaHJlIC9zaXRlbWFwLnhtbCAtIERhdGVpIGF1ZiBiZXNjaHJlaWJiYXIgZiZ1dW1sO3IgZGVuIFdlYnNlcnZlcic7CiRsYW5nWydyb2JvdHNfbm90X3dyaXRlYWJsZSddID0gJ0locmUgcm9ib3RzLnR4dCAtIERhdGVpIGlzdCBuaWNodCBiZXNjaHJlaWJiYXInOwokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1NpZSBoYWJlbiBrZWluZSBPcGVuR3JhcGgtQWRtaW5pc3RyYXRpb25zYW53ZW5kdW5nIGJ6dy4gQWRtaW5pc3RyYXRvcmVuLUxpc3RlIGZlc3RnZWxlZ3QuJzsKJGxhbmdbJ25vX29wZW5ncmFwaF90eXBlJ10gPSAnU2llIGhhYmVuIGRlbiBTdGFuZGFyZC1PcGVuR3JhcGgtU2VpdGVudHlwIG5pY2h0IGZlc3RnZWxlZ3QuJzsKJGxhbmdbJ25vX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ1NpZSBoYWJlbiBkZW4gT3BlbkdyYXBoLVNlaXRlbm5hbWVuIG5pY2h0IGZlc3RnZWxlZ3QnOwokbGFuZ1snbm9fb3BlbmdyYXBoX2ltYWdlJ10gPSAnU2llIGhhYmVuIGtlaW4gT3BlbkdyYXBoLVN0YW5kYXJkYmlsZCBmZXN0Z2VsZWd0JzsKJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldHplbiBTaWUgSWhyZSAvcm9ib3RzLnR4dCAtIERhdGVpIGF1ZiBiZXNjaHJlaWJiYXIgZiZ1dW1sO3IgZGVuIFdlYnNlcnZlcic7CiRsYW5nWydlZGl0X3BhZ2UnXSA9ICclcyBiZWFyYmVpdGVuJzsKJGxhbmdbJ2VkaXRfcGFnZV90b19maXgnXSA9ICdLbGlja2VuIFNpZSBoaWVyIHp1bSBCZWFyYmVpdGVuIGRlciBTZWl0ZSB1bmQgQmVoZWJlbiBkZXMgUHJvYmxlbXMnOwokbGFuZ1sndmlzaXRfc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIGJlYXJiZWl0ZW4nOwoKJGxhbmdbJ3BhZ2VfaWQnXSA9ICdJRCc7CiRsYW5nWydwYWdlX25hbWUnXSA9ICdTZWl0ZW5uYW1lJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnU2l0ZW1hcC1Qcmlvcml0JmF1bWw7dCc7CiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoLVR5cCc7CiRsYW5nWydrZXl3b3JkcyddID0gJyMgS2V5d29yZHMnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNjaHJlaWJ1bmcnOwokbGFuZ1snaW5kZXgnXSA9ICdJbmRpemllcmJhcic7CgokbGFuZ1snY2xpY2tfdG9fYWRkX2Rlc2NyaXB0aW9uJ10gPSAnSGllciBrbGlja2VuIHVtIGVpbmUgU2VpdGVuYmVzY2hyZWlidW5nIGhpbnp1enVmJnV1bWw7Z2VuJzsKJGxhbmdbJ3RvZ2dsZSddID0gJ3Vtc2NoYWx0ZW4nOwokbGFuZ1sncmVzZXQnXSA9ICd6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydyZXNldF90b19kZWZhdWx0J10gPSAnRGllc2VuIFdlcnQgYXVmIGRlbiBTdGFuZGFyZCB6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRGllc2VuIFdlcnQgYmVhcmJlaXRlbic7CgokbGFuZ1snaGVscF9vcGVuZ3JhcGgnXSA9ICc8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPkhpZXI8L2E+IGZpbmRlbiBTaWUgZWluZSBMaXN0ZSBlcmxhdWJ0ZXIgV2VydGUnOwokbGFuZ1snZW50ZXJfbmV3X29ndHlwZSddID0gJ0dlYmVuIFNpZSBkZW4gbmV1ZW4gV2VydCBmJnV1bWw7ciBkZW4gT3BlbkdyYXBoLVR5cCBkaWVzZXIgU2VpdGUgZWluJzsKJGxhbmdbJ2hlbHBfbmV3X29ndHlwZSddID0gJ0xhc3NlbiBTaWUgZGFzIEZlbGQgbGVlciwgdW0genVyIFN0YW5kYXJkLUVpbnN0ZWxsdW5nIHp1ciZ1dW1sO2NrenVrZWhyZW4nOwoKJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0dlYmVuIFNpZSBkaWUgbmV1ZW4gS2V5d29yZHMgZiZ1dW1sO3IgZGllc2UgU2VpdGUgZWluJzsKJGxhbmdbJ2hlbHBfbmV3X2tleXdvcmRzJ10gPSAnTGVlcnplaWNoZW4tZ2V0cmVubnRlIExpc3RlIHZvbiBLZXl3b3Jkcy4gTGFzc2VuIFNpZSBkYXMgRmVsZCBsZWVyLCB1bSB6dXIgU3RhbmRhcmQtRWluc3RlbGx1bmcgenVyJnV1bWw7Y2t6dWtlaHJlbic7CgokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXaXIgaGFiZW4gJXMgT3BlbkdyYXBoLWJlem9nZW5lIFByb2JsZW1lIGZlc3RnZXN0ZWxsdCc7CiRsYW5nWydncm91cHRpdGxlX3N5c3RlbSddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBtaXQgSWhyZXIgU3lzdGVta29uZmlndXJhdGlvbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV9wYWdlcyddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBhdWYgSWhyZW4gSW5oYWx0c3NlaXRlbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV9zZXR0aW5ncyddID0gJ1dpciBoYWJlbiAlcyBQcm9ibGVtZSBtaXQgSWhyZW4gU0VPLUVpbnN0ZWxsdW5nZW4gZmVzdGdlc3RlbGx0JzsKJGxhbmdbJ2dyb3VwdGl0bGVfZGVzY3JpcHRpb25zJ10gPSAnV2lyIGhhYmVuICVzIFByb2JsZW1lIG1pdCBJaHJlbiBTZWl0ZW5iZXNjaHJlaWJ1bmdlbiBmZXN0Z2VzdGVsbHQnOwokbGFuZ1snZ3JvdXB0aXRsZV90aXRsZXMnXSA9ICdXaXIgaGFiZW4gJXMgUHJvYmxlbWUgbWl0IElocmVuIFNlaXRlbnRpdGVsbiBmZXN0Z2VzdGVsbHQnOwoKJGxhbmdbJ3ZpZXdfYWxsJ10gPSAnQWxsZSBhbnplaWdlbic7CgokbGFuZ1sndGl0bGVfbWV0YXNldHRpbmdzJ10gPSAnU2VpdGVudGl0ZWwgdW5kIE1ldGEtSW5mb3JtYXRpb25lbic7CiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlci1FaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ3RpdGxlX2tleXdvcmRzZXR0aW5ncyddID0gJ0tleXdvcmQtR2VuZXJhdG9yJzsKCiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJ10gPSAnRWluZSBhdXRvbWF0aXNjaGUgU2VpdGVuYmVzY2hyZWlidW5nIGVyemV1Z2VuIHdvIGtlaW5lIHZvcmdlZ2ViZW4gaXN0JzsKJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnXSA9ICdUZXh0IGYmdXVtbDtyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGUgQmVzY2hyZWlidW5nZW4nOwokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19oZWxwJ10gPSAnKFNpZSA8Yj5tJnV1bWw7c3NlbjwvYj4gZGFzIHtrZXl3b3Jkc30tVGFnIGhpZXIgdmVyd2VuZGVuLCBvcHRpb25hbCBpc3QgZGFzIHt0aXRsZX0tVGFnKSc7CgokbGFuZ1snc2V0X3VwX2F1dG9fZGVzY3JpcHRpb24nXSA9ICdTZXR6ZW4gU2llIGRlbiBHZW5lcmF0b3IgZvxyIGF1dG9tYXRpc2NoZSBCZXNjaHJlaWJ1bmdlbiBhdWYgdW5kIHN0ZWxsZW4gU2llIHNpY2hlciwgZGEmc3psaWc7IGRlciBUZXh0IGRhcyBUYWcge2tleXdvcmRzfSBlbnRoJmF1bWw7bHQnOwokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aXNjaCBlcnpldWd0JzsKJGxhbmdbJ2FuZCddID0gJ3VuZCc7CgokbGFuZ1sndGl0bGVfa2V5d29yZF93ZWlnaHQnXSA9ICdLZXl3b3JkLUdld2ljaHRzZWluc3RlbGx1bmdlbic7CiRsYW5nWydrZXl3b3JkX21pbmxlbmd0aF90aXRsZSddID0gJ01pbmRlc3RsJmF1bWw7bmdlIGYmdXVtbDtyIEtleXdvcmRzJzsKJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnXSA9ICcoRGllIE1pbmRlc3RsJmF1bWw7bmdlIGYmdXVtbDtyIGVpbiBXb3J0LCBkYW1pdCBlcyBhbHMgS2V5d29yZCBpbiBGcmFnZSBrb21tdCknOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdHZXdpY2h0IGRlciBXb3J0ZSBpbSBTZWl0ZW50aXRlbCc7CiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF9oZWxwJ10gPSAnKERhcyBHZXdpY2h0IGRlciBXb3J0ZSBpbSBTZWl0ZW50aXRlbC4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwokbGFuZ1sna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnXSA9ICdHZXdpY2h0IGRlciBXb3J0ZSBpbiBkZXIgU2VpdGVuYmVzY2hyZWlidW5nJzsKJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnXSA9ICcoRGFzIEdld2ljaHQgZGVyIFdvcnRlIGluIGRlciBTZWl0ZW5iZXNjaHJlaWJ1bmcuIEplIGgmb3VtbDtoZXIgZGFzIEdld2ljaHQgZWluZXMgV29ydGVzLCBkZXN0byBoJnVtbDtoZXIgZGllIFdhaHJzY2hlaW5saWNoa2VpdCwgZGEmc3psaWc7IGVzIHp1bSBLZXl3b3JkIHdpcmQpJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnR2V3aWNodCBkZXIgV29ydGUgaW4gSW5oYWx0cy0mVXVtbDtiZXJzY2hyaWZ0ZW4nOwokbGFuZ1sna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCddID0gJyhEYXMgR2V3aWNodCBkZXIgV29ydGUgendpc2NoZW4gZGVuIFRhZ3MgJmx0O2gxJmd0OyBiaXMgJmx0O2g2Jmd0Oy4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF90aXRsZSddID0gJ0dld2ljaHQgdm9uIFdvcnRlbiBpbSByZWluZW4gSW5oYWx0JzsKJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfaGVscCddID0gJyhEYXMgR2V3aWNodCBkZXIgV29ydGUgaW5uZXJoYWxiIGRlcyByZWluZW4gSW5oYWx0cy4gSmUgaCZvdW1sO2hlciBkYXMgR2V3aWNodCBlaW5lcyBXb3J0ZXMsIGRlc3RvIGgmdW1sO2hlciBkaWUgV2FocnNjaGVpbmxpY2hrZWl0LCBkYSZzemxpZzsgZXMgenVtIEtleXdvcmQgd2lyZCknOwoKJGxhbmdbJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfdGl0bGUnXSA9ICdNaW5kZXN0LUdlc2FtdGdld2ljaHQgZiZ1dW1sO3IgZWluIEtleXdvcmQnOwokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF9oZWxwJ10gPSAnKERhcyBNaW5kZXN0LUdlc2FtdGdld2ljaHQgZWluZXMgV29ydGVzLCBkYW1pdCBlcyB6dW0gS2V5d29yZCB3aXJkLiBEaWVzZXIgV2VydCBzb2xsdGUgZ3Imb3VtbDsmc3psaWc7ZXIgYWxzIGRlciBoJm91bWw7Y2hzdGUgV2VydCB2b24gb2JlbiBzZWluLiBKZSBrbGVpbmVyIGRpZXNlIFphaGwsIGRlc3RvIG1laHIgS2V5d29yZHMgZXJoYWx0ZW4gU2llKSc7CgokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIGF1ZiBkaWVzZXIgU2VpdGUgYmVlaW5mbHVzc2VuIGtlaW5lIEtleXdvcmRzLCBkaWUgU2llIG1hbnVlbGwgdm9yZ2ViZW4uIEV4cGVyaW1lbnRpZXJlbiBTaWUgbWl0IHZlcnNjaGllZGVuZW4gV2VydGVuLCB1bSBkYXMgT3B0aW11bSBmJnV1bWw7ciBJaHJlIFNlaXRlIHp1IGVycmVpY2hlbi4nOwoKJGxhbmdbJ3RpdGxlX2tleXdvcmRfZXhjbHVkZSddID0gJ0tleXdvcmQtQXVzc2NobHUmc3psaWc7bGlzdGUnOwokbGFuZ1sna2V5d29yZF9leGNsdWRlX3RpdGxlJ10gPSAnV29ydGUsIGRpZSBuaWUgYWxzIEtleXdvcmQgaW4gRnJhZ2Uga29tbWVuJzsKJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV9oZWxwJ10gPSAnKEdlYmVuIFNpZSBlaW5lIExlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSB2b24gV29ydGVuIGFuLCBkaWUgbmllIGluIGRlbiBLZXl3b3JkLUxpc3RlbiBhdWZ0YXVjaGVuIHNvbGx0ZW4pJzsKCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ1ByaW9yaXTkdCB1bSAxMCUgZXJo9mhlbic7CiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ1ByaW9yaXTkdCB1bSAxMCUgdmVycmluZ2Vybic7CgokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiU2l0ZW1hcCB1bmQgcm9ib3RzLnR4dCBuZXUgZXJ6ZXVnZW4iOwokbGFuZ1snYnV0dG9uX3JlZ2VuZXJhdGVfc2l0ZW1hcCddID0gIlNpdGVtYXAgdW5kIHJvYm90cy50eHQgamV0enQgbmV1IGVyemV1Z2VuIjsKJGxhbmdbJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSB1dGY4X2VuY29kZSgiSW5zYmVzb25kZXJlIG5hY2ggZ3L232VyZW4gxG5kZXJ1bmdlbiBkZXIgU2VpdGVuc3RydWt0dXIga2FubiBlcyBzaW5udm9sbCBzZWluLCBkaWUgU2l0ZW1hcCB1bmQgZGllIHJvYm90cy50eHQgRGF0ZWkgbmV1IHp1IGVyemV1Z2VuLiIpOwokbGFuZ1snc2l0ZW1hcF9yZWdlbmVyYXRlZCddID0gIkRpZSBTaXRlbWFwIHVuZCBkaWUgcm9ib3RzLnR4dCAtIERhdGVpIHd1cmRlbiBlcmZvbGdyZWljaCBuZXUgZXJzdGVsbHQuIjsKCiRsYW5nWydpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJ10gPSAiQmVpIGRlciBJbnN0YWxsYXRpb24gaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW46IERpZSBEYXRlbmJhbmstVGFiZWxsZSBrb25udGUgbmljaHQgYW5nZWxlZ3Qgd2VyZGVuLiI7CiRsYW5nWydub191cmxfZm9wZW4nXSA9ICJOaWNodCBtJm91bWw7Z2xpY2gsIGRhIGFsbG93X3VybF9mb3BlbiBpbiBkZXIgUEhQLUtvbmZpZ3VyYXRpb24gbmljaHQgYXVmICZxdW90O29uJnF1b3Q7IGdlc2V0enQgd3VyZGUuIjsKJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSB1dGY4X2VuY29kZSgiWnVz5HR6bGljaGUgTUVUQS1UYWdzIik7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZSddID0gIldlaXRlcmUgTWV0YS1UYWdzLCBkaWUgZWluZ2VmJnV1bWw7Z3Qgd2VyZGVuIHNvbGxlbiI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiR2ViZW4gU2llIGhpZXIgd2VpdGVyZSBNRVRBLVRhZ3MgZWluLCBkaWUgaW4gZGVuIFNlaXRlbmtvcGYgZWluZ2VidW5kZW4gd2VyZGVuIHNvbGxlbi4gU2llIGsmb3VtbDtubmVuIGFsbGUgU21hcnR5LVZhcmlhYmxlbiB2ZXJ3ZW5kZW4uIjsKCiRsYW5nWydoZWxwX3Nob3diYXNlJ10gPSAiU2V0emVuIFNpZSBkaWVzZW4gUGFyYW1ldGVyIGF1ZiA8Y29kZT5mYWxzZTwvY29kZT4sIHVtIGRhcyAmcXVvdDtiYXNlIGhyZWYmcXVvdDstVGFnIG5pY2h0IGFuemVpZ2VuIHp1IGxhc3Nlbi4iOwoKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4yIC0gMDYuIEphbnVhciAyMDExLiBWZXJzY2hpZWRlbmUgQnVnZml4ZXMgdW5kIEVyd2VpdGVydW5nZW4uPC9saT4KPGxpPlZlcnNpb24gMS4xIC0gMDIuIE5vdmVtYmVyIDIwMTAuIFZlcnNjaGllZGVuZSBCdWdmaXhlcy48L2xpPgo8bGk+VmVyc2lvbiAxLjAgLSAyNC4gQXVndXN0IDIwMTAuIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8L3VsPic7CgokbGFuZ1snaGVscCddID0gJzxoMz5XYXMgdHV0IGRpZXNlcyBNb2R1bD88L2gzPgo8cD5EaWUgU0VPIFRvb2xzIGhlbGZlbiBJaG5lbiwgSWhyZSBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uLCBTdWNobWFzY2hpbmVub3B0aW1pZXJ1bmcpIGluIGRlbiBHcmlmZiB6dSBiZWtvbW1lbi4gRGFzIE1vZHVsIGYmdXVtbDtndCB2ZXJzY2hpZWRlbmUgU0VPLUYmYXVtbDtoaWdrZWl0ZW4genUgQ01TTVMgaGluenUgdW5kIHdhcm50IFNpZSwgZmFsbHMgU2llIGlyZ2VuZGV0d2FzIFNFTy1iZXpvZ2VuZXMgJnV1bWw7YmVyc2VoZW4gaGFiZW4uIEFrdHVlbGwgd2VyZGVuIGRpZSBmb2xnZW5kZW4gRmVhdHVyZXMgdW50ZXJzdCZ1dW1sO3R6dDo8L3A+Cjx1bD4KPGxpPi0gYXV0b21hdGlzY2hlIEVyemV1Z3VuZyB2b24gTWV0YS1UYWdzIGltIFN0YW5kYXJkLUhUTUwtRm9ybWF0LCBuYWNoIGRlciBEdWJsaW4gQ29yZS1TcGV6aWZpa2F0aW9uIHVuZCBPcGVuR3JhcGg8L2xpPgo8bGk+LSBhdXRvbWF0aXNjaGUgRXh0cmFrdGlvbiB2b24gS2V5d29yZHMgYXVzIElocmVuIFNlaXRlbiwgZGllIHp1bSBTZWl0ZW50aXRlbCB1bmQgZGVuIE1ldGEtVGFncyBoaW56dWdlZiZ1dW1sO2d0IHdlcmRlbjwvbGk+CjxsaT4tIEZlc3RsZWdlbiBtaXQgZWluZW0gS2xpY2ssIG9iIGJlc3RpbW10ZSBTZWl0ZW4gdm9uIFN1Y2htYXNjaGluZW4gaW5kaXppZXJ0IHdlcmRlbiBzb2xsZW4gb2RlciBuaWNodDwvbGk+CjxsaT4tIEVyemV1Z3VuZyBlaW5lciBzaXRlbWFwLnhtbC1EYXRlaSBtaXQgSWhyZW4gU2VpdGVuIHcmYXVtbDtocmVuZCBTaWUgZGllIHZvbGxlIEtvbnRyb2xsZSBkYXImdXVtbDtiZXIgaGFiZW4sIHdpZSBkaWUgUHJpb3JpdCZhdW1sO3QgZWluemVsbmVyIFNlaXRlbiBiZXdlcnRldCB3ZXJkZW4gc29sbDwvbGk+CjxsaT4tIEVyemV1Z3VuZyBlaW5lciByb2JvdHMudHh0LURhdGVpIG1pdCBkZXIgTSZvdW1sO2dsaWNoa2VpdCwgZXhwbGl6aXQgZGVuIFp1Z3JpZmYgYXVmIFNlaXRlbiwgZGllIG5pY2h0IGluZGl6aWVydCB3ZXJkZW4gc29sbGVuLCB6dSB2ZXJiaWV0ZW48L2xpPgo8bGk+LSBBdXNnYWJlIHZvbiBXYXJudW5nZW4sIHdlbm4gbWVocmVyZSBTZWl0ZW4gZGVuIGdsZWljaGVuIFRpdGVsIG9kZXIgZGllIGdsZWljaGUgQmVzY2hyZWlidW5nIGhhYmVuPC9saT4KPGxpPi0gQXVzZ2FiZSB2b24gV2FybnVuZ2VuIHdlbm4gc2VociBrdXJ6ZSBTZWl0ZW5iZXNjaHJlaWJ1bmdlbiBnZWZ1bmRlbiB3dXJkZW48L2xpPgo8bGk+LSBBdXRvbWF0aXNjaGVzIEVpbnNlbmRlbiBkZXIgYWt0dWFsaXNpZXJ0ZW4gU2l0ZW1hcC1EYXRlaSB6dSBHb29nbGUsIHdlbm4gSW5oYWx0ZSBnZSZhdW1sO25kZXJ0IHdlcmRlbjwvbGk+IAo8L3VsPgo8aDM+V2llIHdpcmQgZGFzIE1vZHVsIHZlcndlbmRldD88L2gzPgo8cD4mT3VtbDtmZm5lbiBTaWUgenVuJmF1bWw7Y2hzdCBhbGxlIFRlbXBsYXRlcywgYXVmIGRlbmVuIFNpZSBTRU8gVG9vbHMgdmVyd2VuZGVuIG0mb3VtbDtjaHRlbi4gRW50ZmVybmVuIFNpZSBkYXMga29tcGxldHRlICZsdDt0aXRsZSZndDstVGFnIHVuZCBkYXMge21ldGFkYXRhfS1UYWcgKGF1Y2ggd2VubiBkYSBzdGVodCwgZGEmc3psaWc7IFNpZSBsZXR6dGVyZXMgbmllIGVudGZlcm5lbiBzb2xsdGVuKSB1bmQgZXJzZXR6ZW4gU2llIGJlaWRlIGR1cmNoIGRhcyBUYWc8L3A+CjxwcmU+CntTRU9Ub29sc30KPC9wcmU+PGJyIC8+CjxwPkYmdXVtbDtnZW4gU2llIGFscyBuJmF1bWw7Y2hzdGVzIGFtIEVuZGUgSWhyZXMgVGVtcGxhdGVzIChuYWNoIGRlbSBzY2hsaWUmc3psaWc7ZW5kZW4gJmx0Oy9ib2R5Jmd0Oy1UYWcpIGRlbiBmb2xnZW5kZW4gQ29kZSBlaW46PC9wPgo8cHJlPgp7Y2FwdHVyZX17Y29udGVudCBibG9jaz0iU2VpdGVuYmVzY2hyZWlidW5nIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9CjwvcHJlPjxiciAvPgo8cD5JbiBkaWVzZXMgRmVsZCB3ZXJkZW4gU2llIHNwJmF1bWw7dGVyIGVpbmUga3VyemUgU2VpdGVuYmVzY2hyZWlidW5nIChlaW4gb2RlciB6d2VpIFMmYXVtbDt0emUpIGVpbmdlYmVuLCBkaWUgaW4gZGVuIEVyZ2Vibmlzc2VuIGRlciBTdWNobWFzY2hpbmVuIGFuZ2V6ZWlndCB3aXJkIHVuZCB3ZW5uIHouQi4gamVtYW5kIGRlbiBMaW5rIHp1IElocmVyIFNlaXRlIGJlaSBGYWNlYm9vayB0ZWlsdC48L3A+CjxwPlJ1ZmVuIFNpZSBudW4gZGllIE1vZHVsLUFkbWluaXN0cmF0aW9uIGF1ZiB1bmQgZiZ1dW1sO2xsZW4gU2llIGF1ZiBkZW4gRWluc3RlbGx1bmdzLVRhYnMgYWxsZSBJbmZvcm1hdGlvbmVuIGVpbiwgZGllIGYmdXVtbDtyIElocmUgU2VpdGUgcmVsZXZhbnQgc2luZC4gVW50ZXIgIk5hbWUgZGVzIFNlaXRlbmJlc2NocmVpYnVuZ3MtQ29udGVudGJsb2NrIiB0cmFnZW4gU2llIGRlbiBOYW1lbiBkZXMgc29lYmVuIGltIFRlbXBsYXRlIGFuZ2VsZWd0ZW4gQ29udGVudC1CbG9ja3MgKCJTZWl0ZW5iZXNjaHJlaWJ1bmciIGluIHVuc2VyZW0gQmVpc3BpZWwpIGVpbi4gRGVyIFRhYiAiU0VPLVdhcm51bmdlbiIgYmVuYWNoaWNodGlndCBTaWUgYXV0b21hdGlzY2gsIHdlbm4gaXJnZW5kZWluZSBFaW5zdGVsbHVuZyBnZWZ1bmRlbiB3dXJkZSwgZGllIG5pY2h0IG9wdGltYWwgaXN0LgpBdSZzemxpZztlcmRlbSBzb2xsdGVuIFNpZSBpbiBFcncmYXVtbDtndW5nIHppZWhlbiwgSWhyZSBTZWl0ZSBiZWkgR29vZ2xlIFdlYm1hc3RlciBUb29scyBhbnp1bWVsZGVuLiBXJmF1bWw7aGxlbiBTaWUgZG9ydCAiTWV0YSB0YWcgdmFsaWRhdGlvbiIgdW5kIGYmdXVtbDtnZW4gU2llIGRlbiBCZXN0JmF1bWw7dGlndW5nc2NvZGUsIGRlbiBTaWUgZG9ydCBlcmhhbHRlbiwgaW4gZGFzIEZlbGQgIkJlc3QmYXVtbDt0aWd1bmdzY29kZSBmJnV1bWw7ciBkaWUgU2VpdGVudmVyaWZpemllcnVuZyIgZWluIChudXIgZGVuIGxhbmdlbiBDb2RlIGF1cyBaYWhsZW4gdW5kIEJ1Y2hzdGFiZW4sIG5pY2h0IGRhcyBrb21wbGV0dGUgTWV0YS1UYWcpIHVtIGF1dG9tYXRpc2NoIHp1IGJlc3QmYXVtbDt0aWdlbiwgZGEmc3psaWc7IFNpZSB0YXRzJmF1bWw7Y2hsaWNoIGRlciBJbmhhYmVyIElocmVyIFNlaXRlIHNpbmQuPC9wPgo8cD5Tb2JhbGQgYWxsZXMgZWluZ2VyaWNodGV0IGlzdCwgc2NoYXVlbiBTaWUgYXVmIGRhcyAiU0VPLVdhcm51bmdlbiItVGFiIHVuZCBiZWhlYmVuIFNpZSBhbGxlIFByb2JsZW1lLCBkaWUgSWhuZW4gZG9ydCBhbmdlemVpZ3Qgd2VyZGVuLiBEZW5rZW4gU2llIHVuYmVkaW5ndCBkYXJhbiwgYXVmIGplZGVyIFNlaXRlLCBkaWUgU2llIHVudGVyICJJbmhhbHRlL1NlaXRlbiIgYmVhcmJlaXRlbiwgZWluZSBrdXJ6ZSAodW5kIGVpbmRldXRpZ2UpIEJlc2NocmVpYnVuZyBpbnMgRmVsZCAiU2VpdGVuYmVzY2hyZWlidW5nIiB1bnRlbiBhdWYgZGVtIFNlaXRlbmJlYXJiZWl0dW5ncy1Gb3JtdWxhciBlaW56dWdlYmVuLjwvcD4KPHA+V2VubiBTaWUgSWhyZSBlaWdlbmVuIEtleXdvcmRzIGZlc3RsZWdlbiAoYW5zdGVsbGUgZGVyIGF1dG9tYXRpc2NoIGdlbmVyaWVydGVuIEtleXdvcmRzKSBvZGVyIGRlbiBPcGVuR3JhcGgtVHlwIGJlc3RpbW10ZXIgU2VpdGVuICZhdW1sO25kZXJuIG0mb3VtbDtjaHRlbiwgYmVzdWNoZW4gU2llIGRlbiBUYWIgIlNlaXRlbmVpbnN0ZWxsdW5nZW4iIGF1ZiBkZW0gU2llIGVpbmUgTGlzdGUgYWxsZXIgaW0gU3lzdGVtIHZvcmhhbmRlbmVuIFNlaXRlbiBzZWhlbi4gRG9ydCBrJm91bWw7bm5lbiBTaWUgYXVjaCBkaWUgUHJpb3JpdCZhdW1sO3RlbiBkZXIgU2VpdGVuIGYmdXVtbDtyIGRpZSBYTUwtU2l0ZW1hcCAmYXVtbDtuZGVybiAoZGllIGFuZGVybmZhbGxzIGF1dG9tYXRpc2NoIGJlcmVjaG5ldCB3aXJkKSB1bSBmZXN0enVsZWdlbiwgZGEmc3psaWc7IGJlc3RpbW10ZSBTZWl0ZW4gYWxzIHdpY2h0aWdlcgplaW5nZXN0dWZ0IHdlcmRlbiBzb2xsZW4gYWxzIGFuZGVyZSBiZWkgU3VjaG1hc2NoaW5lbi1UcmVmZmVybiwgb2RlciB3ZW5uIFNpZSBlaW56ZWxuZSBTZWl0ZW4gdm9uIGRlciBJbmRpemllcnVuZyBkdXJjaCBTdWNobWFzY2hpbmVuIGF1c3NjaGxpZSZzemxpZztlbiBtJm91bWw7Y2h0ZW4uPC9wPgo8cD5TRU8gVG9vbHMgZiZ1dW1sO2d0IGF1JnN6bGlnO2VyZGVtIGVpbmVuIFZlcndlaXMgYXVmIGRhcyBCaWxkLCBkYXMgYWxzIEhhdXB0YmlsZCBmJnV1bWw7ciBJaHJlIFNlaXRlIHZlcndlbmRldCB3ZXJkZW4gc29sbCAod2ljaHRpZyBmJnV1bWw7ciBMaW5rcywgZGllIGJlaSBGYWNlYm9vayBnZXRlaWx0IHdlcmRlbikgd2VubiBTaWUgZWluICJCaWxkIiBmJnV1bWw7ciBkaWUgU2VpdGUgYXVmIGRlbSBPcHRpb25zLVRhYiBJaHJlciBTZWl0ZSBmZXN0bGVnZW4uIFdlbm4gU2llIE9wZW5HcmFwaCB2ZXJ3ZW5kZW4sIGVyc2V0enQgZGllc2VzIEJpbGQgYXUmc3psaWc7ZXJkZW0gZGFzIFN0YW5kYXJkLUJpbGQKZiZ1dW1sO3IgT3BlbkdyYXBoLVNlaXRlbiBkYXMgU2llIGluIGRlbiBFaW5zdGVsbHVuZ2VuIHZvbiBTRU8gVG9vbHMgZmVzdGdlbGVndCBoYWJlbi4gQWNodGVuIFNpZSBkYXJhdWYsIGRhJnN6bGlnOyBTaWUgZGllc2UgQmlsZGVyIGluIElociAvdXBsb2Fkcy9pbWFnZXMgLSBWZXJ6ZWljaG5pcyBob2NobGFkZW4sIGRhbWl0IHNpZSB2b24gQ01TTVMgZXJrYW5udCB3ZXJkZW4uPC9wPiAKPGgzPkthbm4gaWNoIFNtYXJ0eS1WYXJpYWJsZW4gdmVyd2VuZGVuPzwvaDM+CjxwPkluIGRlbiBFaW5zdGVsbHVuZ3MtRmVsZGVybiA8aT5TZWl0ZW50aXRlbDwvaT4sIDxpPlNlaXRlbnRpdGVsIGYmdXVtbDtyIGRpZSBNZXRhLURhdGVuPC9pPiwgPGk+VGV4dCBmJnV1bWw7ciBhdXRvbWF0aXNjaCBnZW5lcmllcnRlIEJlc2NocmVpYnVuZ2VuPC9pPiB1bmQgPGk+WnVzJmF1bWw7dHpsaWNoZSBNZXRhLVRhZ3M8L2k+IGsmb3VtbDtubmVuIGFsbGUgYXVmIGRlciBTZWl0ZSB2ZXJ3ZW5kZXRlbiBTbWFydHktVGFncyB1bmQgVURUcyB2ZXJ3ZW5kZXQgd2VyZGVuLiBHZWJlbiBTaWUgPGNvZGU+e2RlYnVnfTwvY29kZT4gZWluLCB1bSBlaW5lIExpc3RlIGFsbGVyIHp1ciBWZXJmJnV1bWw7Z3VuZyBzdGVoZW5kZW4gVGFncyB6dSBzZWhlbi48L3A+CjxoMz5XZWxjaGUgU21hcnR5LVZhcmlhYmxlbiB3ZXJkZW4gdm9uIFNFT1Rvb2xzIGRlZmluaWVydD88L2gzPgo8Y29kZT57JHNlb19rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGtvbW1hZ2V0cmVubnRlIExpc3RlIGFsbGVyIGYmdXVtbDtyIGRpZSBTZWl0ZSBnZXNldHp0ZW4gS2V5d29yZHMgKGVpbnNjaGxpZSZzemxpZztsaWNoIGRlciBTdGFuZGFyZC1LZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBmJnV1bWw7ciBkaWUgU2VpdGUgZ2VzZXR6dGVuIEtleXdvcmRzIChlaW5zY2hsaWUmc3psaWc7bGljaCBkZXIgU3RhbmRhcmQtS2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBFaW5lIGxlZXJ6ZWljaGVuLWdldHJlbm50ZSBMaXN0ZSBhbGxlciBTdGFuZGFyZC1LZXl3b3JkczxiciAvPgo8Y29kZT57JHBhZ2Vfa2V5d29yZHN9PC9jb2RlPjogRWluZSBsZWVyemVpY2hlbi1nZXRyZW5udGUgTGlzdGUgYWxsZXIgZiZ1dW1sO3IgZGllIFNlaXRlIGdlc2V0enRlbiBLZXl3b3JkcyAob2huZSBkaWUgU3RhbmRhcmQtS2V5d29yZHMpCjxoMz5TdXBwb3J0PC9oMz4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMC0yMDExLCBIZW5uaW5nIFNjaGFlZmVyIDxhIGhyZWY9Im1haWx0bzpoZW5uaW5nLnNjaGFlZmVyQGdtYWlsLmNvbSI+Jmx0O2hlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NFTyBUb29scyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1NFTyBUb29scyBoYXZlIGJlZW4gaW5zdGFsbGVkLiBCZSBzdXJlIHRvIHJlYWQgdGhlIG1vZHVsZSBoZWxwIHRvIGxlYXJuIGhvdyB0byB1c2UgdGhlbS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFTyBUb29scyBoYXZlIGJlZW4gdW5pbnN0YWxsZWQuIFBsZWFzZSBiZSBhd2FyZSB0aGF0IHlvdSBoYXZlIGp1c3QgbG9zdCBhbGwgbWV0YSBpbmZvcm1hdGlvbiBmcm9tIHlvdXIgcGFnZXMhJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gdW5pbnN0YWxsIFNFTyBUb29scz8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdTZXZlcmFsIHRvb2xzIHRvIGhlbHAgd2l0aCBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbiBhbmQgY2hlY2sgZm9yIHN1Ym9wdGltYWwgU0VPLXJlbGF0ZWQgdGhpbmdzLic7CgokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdTRU8gVG9vbHMgQWRtaW4gUGFuZWwnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJ0hlbHBzIHdpdGggU0VPIGluIGdlbmVyYWwsIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGluZyBYTUwgc2l0ZW1hcHMgYW5kIGNvbXByZWhlbnNpdmUgbWV0YSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ1NFT0FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOwokbGFuZ1snUGFnZWRlc2NyaXB0aW9ucyddID0gJ1BhZ2Ugc2V0dGluZ3MnOwokbGFuZ1snU2l0ZW1hcCddID0gJ1NpdGVtYXAnOwokbGFuZ1snU0VPU2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOwokbGFuZ1sndGl0bGVfc2VvYWxlcnRzJ10gPSAnU0VPIEFsZXJ0cyc7CiRsYW5nWyd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJ10gPSAnUGFnZSBzZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9zaXRlbWFwJ10gPSAnU2l0ZW1hcCc7CiRsYW5nWyd0aXRsZV9zZW9zZXR0aW5ncyddID0gJ1NFTyBTZXR0aW5ncyc7CgokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YSBUYWcgR2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfY3JlYXRlX3N0YW5kYXJkJ10gPSAnR2VuZXJhdGUgc3RhbmRhcmQgTWV0YSBUYWdzJzsKJGxhbmdbJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnXSA9ICdHZW5lcmF0ZSBEdWJsaW4gQ29yZSBNZXRhIFRhZ3MnOwokbGFuZ1snbWV0YV9jcmVhdGVfb3BlbmdyYXBoJ10gPSAnR2VuZXJhdGUgT3BlbkdyYXBoIE1ldGEgVGFncyAoZS5nLiBmb3IgRmFjZWJvb2sgTGlrZSBCdXR0b24pJzsKCiRsYW5nWyd0aXRsZV9tZXRhX2RlZmF1bHRzJ10gPSAnTUVUQSBUYWcgVmFsdWVzJzsKJGxhbmdbJ21ldGFfcHVibGlzaGVyJ10gPSAnU2l0ZSBwdWJsaXNoZXInOwokbGFuZ1snbWV0YV9wdWJsaXNoZXJfaGVscCddID0gJyhUaGlzIGlzIHVzdWFsbHkgdGhlIG9yZ2FuaXphdGlvbiB5b3UgYXJlIGJ1aWxkaW5nIHRoZSB3ZWJzaXRlIGZvciknOwokbGFuZ1snbWV0YV9jb250cmlidXRvciddID0gJ1NpdGUgY29udHJpYnV0b3InOwokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgeW91IG9yIGFueSBvdGhlciBjb250ZW50IGF1dGhvciknOwokbGFuZ1snbWV0YV9jb3B5cmlnaHQnXSA9ICdTaXRlIGNvcHlyaWdodCc7CiRsYW5nWydtZXRhX2NvcHlyaWdodF9oZWxwJ10gPSAnKFNvbWV0aGluZyBsaWtlICIoQykgWW91ciBDb21wYW55LiBBbGwgUmlnaHRzIFJlc2VydmVkIiknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ0lmIHlvdXIgd2Vic2l0ZSBpcyBhYm91dCBhbiBlbnRpdGl5IHRoYXQgY2FuIGJlIGxvY2F0ZWQgb24gYSBtYXAsIHlvdSBzaG91bGQgb3B0aW9uYWxseSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7CiRsYW5nWydtZXRhX2xvY2F0aW9uJ10gPSAnTG9jYXRpb24gb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9sb2NhdGlvbl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgdGhlIHRvd24gbmFtZSBvZiB5b3VyIGNvbXBhbnkpJzsKJGxhbmdbJ21ldGFfcmVnaW9uJ10gPSAnUmVnaW9uIG9mIHlvdXIgZW50aXR5JzsKJGxhbmdbJ21ldGFfcmVnaW9uX2hlbHAnXSA9ICcoRW50ZXIgc29tZXRoaW5nIGxpa2UgIlVTLUlMIiBmb3IgYW4gZW50aXR5IGxvY2F0ZWQgaW4gSWxsaW5vaXMsIFVTKSc7CiRsYW5nWydtZXRhX2xhdGl0dWRlJ10gPSAnTGF0aXR1ZGUgb2YgeW91ciBlbnRpdHknOwokbGFuZ1snbWV0YV9sYXRpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxhdGl0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7CiRsYW5nWydtZXRhX2xvbmdpdHVkZSddID0gJ0xvbmdpdHVkZSBvZiB5b3VyIGVudGl0eSc7CiRsYW5nWydtZXRhX2xvbmdpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxvbmdpdHVkZSBnZW8gY29vZGluYXRlIG9mIHlvdXIgZW50aXRpeSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nXSA9ICdJZiB5b3UgYXJlIGNyZWF0aW5nIE9wZW5HcmFwaCBNRVRBIFRhZ3MsIHBsZWFzZSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90aXRsZSddID0gJ09wZW5HcmFwaCBwYWdlIHRpdGxlJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnXSA9ICcoWW91IGNhbiB1c2UgYWxsIHNtYXJ0eSB0YWdzIGhlcmUsIGUuZy4gdG8gcmVwbGFjZSB3aXRoIHRoZSBhY3R1YWwgcGFnZSB0aXRsZSknOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IHBhZ2UgdHlwZSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF90eXBlX2hlbHAnXSA9ICcoVGhlIGRlZmF1bHQgcGFnZSB0eXBlIGZvciBPcGVuR3JhcGgsIGNhbiBiZSBvdmVycmlkZGVuIGZvciBlYWNoIHBhZ2UuIExvb2sgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoI3R5cGVzIiB0YWdldD0iX2JsYW5rIj5oZXJlPC9hPiBmb3IgYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ09wZW5HcmFwaCBzaXRlIG5hbWUnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCddID0gJyhBIHNob3J0IHZlcnNpb24gb2YgeW91ciBzaXRlIG5hbWUsIGUuZy4gIllvdXIgQ29tcGFueSIsIG1heC4gMjUgY2hhcnMpJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10gPSAnT3BlbkdyYXBoIGRlZmF1bHQgaW1hZ2UnOwokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCddID0gJyhTZWxlY3QgYW4gaW1hZ2UgZnJvbSB5b3VyIC91cGxvYWRzL2ltYWdlcyBkaXJlY3RvcnkgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBmb3IgT3BlbkdyYXBoIHBhZ2VzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vayBzaXRlIGFkbWluaXN0cmF0b3JzJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FkbWluc19oZWxwJ10gPSAnKEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZmFjZWJvb2sgYWNjb3VudCBJRHMgd2hvIGFyZSBhYmxlIHRvIGFkbWluaXN0cmF0ZSB0aGUgc3RyZWFtcyBvZiB5b3VyIHBhZ2VzKSc7CiRsYW5nWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbiddID0gJ0ZhY2Vib29rIGFwcGxpY2F0aW9uJzsKJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIElEIG9mIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOwoKJGxhbmdbJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnUGFnZSB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGtleXdvcmRzJzsKJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnUGFnZSB0aXRsZSc7CiRsYW5nWyd0aXRsZV90aXRsZV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgYnJvd3NlclwncyB0aXRsZSBiYXIuIFlvdSBjYW4gdXNlIHRoZSB0YWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSBhbmQgYWxsIHNtYXJ0eSB0YWdzIGFuZCBVRFRzIGhlcmUpJzsKJGxhbmdbJ3RpdGxlX21ldGFfdGl0bGUnXSA9ICdQYWdlIE1ldGEgdGl0bGUnOwokbGFuZ1sndGl0bGVfbWV0YV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIHVzZWQgaW4gdGhlIE1ldGEgdGl0bGUgdGFncy4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOwokbGFuZ1snZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnXSA9ICdOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayc7CiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja19oZWxwJ10gPSAnKFRoZSBuYW1lIG9mIHlvdXIgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrLiBQbGVhc2Ugc2VlIGJlbG93IGZvciBhbiBleHBsYW5hdGlvbiknOwokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzIHRvIGFsd2F5cyBpbmNsdWRlJzsKJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfaGVscCddID0gJyhBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGtleXdvcmRzIHlvdSB3b3VsZCBsaWtlIHRvIGluY2x1ZGUgb24gZXZlcnkgcGFnZSknOwoKJGxhbmdbJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nXSA9ICdHb29nbGUgU2l0ZW1hcCBhbmQgQ3Jhd2xlciBTZXR0aW5ncyc7CiRsYW5nWydjcmVhdGVfc2l0ZW1hcF90aXRsZSddID0gJ0NyZWF0ZSBhbiBYTUwgR29vZ2xlIFNpdGVtYXAqJzsKJGxhbmdbJ3B1c2hfc2l0ZW1hcF90aXRsZSddID0gJ0F1dG9tYXRpY2FsbHkgcHVzaCB0aGUgc2l0ZW1hcCB0byBHb29nbGUgYWZ0ZXIgY29udGVudCBjaGFuZ2VzJzsKJGxhbmdbJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnXSA9ICdDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUqJzsKJGxhbmdbJ3ZlcmlmaWNhdGlvbl90aXRsZSddID0gJ1NpdGUgdmVyaWZpY2F0aW9uIGNvZGUnOwokbGFuZ1sndmVyaWZpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIHNpdGUgdmVyaWZpY2F0aW9uIGNvZGUgeW91IG9idGFpbiBmcm9tIEdvb2dsZSBXZWJtYXN0ZXIgVG9vbHMsIGp1c3QgdGhlIGhhc2gsIG5vdCB0aGUgY29tcGxldGUgbWV0YSB0YWcpJzsKCiRsYW5nWyd0aXRsZV9hbGVydHNfdXJnZW50J10gPSAnVG8gYmUgZml4ZWQgaW1tZWRpYXRlbHknOwokbGFuZ1sndGl0bGVfYWxlcnRzX2ltcG9ydGFudCddID0gJ1RvIGJlIGZpeGVkIGFzIHNvb24gYXMgcG9zc2libGUnOwokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9ICdUaGluZ3MgeW91IHNob3VsZCBjb25zaWRlciBmaXhpbmcnOwokbGFuZ1snbm90aGluZ190b19iZV9maXhlZCddID0gJ1RoZXJlIGFyZSBubyBhY3Rpb25zIHlvdSBuZWVkIHRvIHRha2UgaW4gdGhpcyBjYXRlZ29yeSc7CgokbGFuZ1snc2F2ZSddID0gJ1NhdmUgc2V0dGluZ3MnOwokbGFuZ1snbm9uZSddID0gJyhub25lKSc7CiRsYW5nWydzZXR0aW5nc191cGRhdGVkJ10gPSAnVGhlIFNFTyBzZXR0aW5ncyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7CiRsYW5nWydwcm9ibGVtX2FsZXJ0J10gPSAnaGFzIGRldGVjdGVkIHNldmVyZSBwcm9ibGVtcyB3aXRoIHlvdXIgU0VPLiAlcyc7CiRsYW5nWydwcm9ibGVtX2xpbmtfdGl0bGUnXSA9ICdDbGljayBoZXJlIHRvIGZpeCB0aGVtJzsKCiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uX2NvbnRlbnQnXSA9ICc8Yj5Ib3cgdG8gdXNlIHRoZSAiZGVzY3JpcHRpb24gY29udGVudCBibG9jayI6PC9iPjxiciAvPlRvIGJlIGFibGUgdG8gZW50ZXIgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZW4gZWRpdGluZyBhIHBhZ2UsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBjb2RlIGFueXdoZXJlIG9uIGV2ZXJ5IHRlbXBsYXRlOjxiciAvPjxiciAvPjxwcmU+e2NhcHR1cmV9e2NvbnRlbnQgYmxvY2s9Ik1FVEEgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5UaGVuLCBwdXQgIk1FVEEgRGVzY3JpcHRpb24iIGludG8gdGhlIGZpZWxkICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jazxiciAvPjxiciAvPkFsdGVybmF0aXZlbHksIGVuYWJsZSB0aGUgb3B0aW9uICZxdW90O0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZGVzY3JpcHRpb25zIHdoZXJlIG5vbmUgaXMgZ2l2ZW4mcXVvdDsuIFRoaXMgaXMgbm90IGFzIGdvb2QgYnV0IHN0aWxsIGJldHRlciB0aGFuIG5vdGhpbmcuJzsKJGxhbmdbJ2hlbHBfc2l0ZW1hcF9yb2JvdHMnXSA9ICcqKSBUbyB1c2UgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIGEgc2l0ZW1hcC0gYW5kIHJvYm90cy1maWxlLCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuIElmIHlvdXIgYWxyZWFkeSBoYXZlIGEgc2l0ZW1hcC54bWwgYW5kL3ByIHJvYm90cy50eHQgZmlsZSwgYm90aCBvZiB0aGVtIG11c3QgYmUgd3JpdGVhYmxlIHRvIHRoZSB3ZWIgc2VydmVyLic7CgokbGFuZ1sndXNlX3N0YW5kYXJkX29yX2R1YmxpbmNvcmVfbWV0YSddID0gJ1VzZSBhdCBsZWFzdCBvbmUgb2YgdGhlIHN0YW5kYXJkIG9yIER1YmxpbiBDb3JlIE1ldGEgVGFnIGdlbmVyYXRvcnMnOwokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdZb3Ugc2hvdWxkIGFsd2F5cyBlbmFibGUgdGhlIHN0YW5kYXJkIE1ldGEgZ2VuZXJhdG9yJzsKJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZyddID0gJ1RoZSBwYWdlIDxpPiVzPC9pPiBpcyBsYWNraW5nIGEgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX3Nob3J0J10gPSAnVGhlIE1ldGEgZGVzY3JpcHRpb24gb2YgPGk+JXM8L2k+IGlzIHJhdGhlciBzaG9ydCAoIDwgNzUgY2hhcnMpJzsKJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdUaGUgcGFnZXMgPGk+JXM8L2k+IGFuZCA8aT4lczwvaT4gaGF2ZSB0aGUgc2FtZSB0aXRsZSc7CiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnVGhlIHBhZ2VzIDxpPiVzPC9pPiBhbmQgPGk+JXM8L2k+IGhhdmUgdGhlIHNhbWUgTWV0YSBkZXNjcmlwdGlvbic7CiRsYW5nWydwcm92aWRlX2FuX2F1dGhvciddID0gJ1lvdSBzaG91bGQgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgcGFnZSBwdWJsaXNoZXInOwokbGFuZ1snc2V0X3VwX2Rlc2NyaXB0aW9uX2Jsb2NrJ10gPSAnU2V0IHVwIGEgY29udGVudCBibG9jayBmb3IgTWV0YSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBY3RpdmF0ZSB0aGUgcHJldHR5IFVSTHMgZmVhdHVyZSBvZiBDTVNNUyc7CiRsYW5nWydwcmV0dHlfdXJsc19oZWxwJ10gPSAnPGEgaHJlZj0iaHR0cDovL3dpa2kuY21zbWFkZXNpbXBsZS5vcmcvaW5kZXgucGhwL1VzZXJfSGFuZGJvb2svSW5zdGFsbGF0aW9uL09wdGlvbmFsX1NldHRpbmdzIiB0YXJnZXQ9Il9ibGFuayI+R2V0IGhlbHA8L2E+JzsKJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdIYXZlIGEgR29vZ2xlIFhNTCBTaXRlbWFwIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsKJGxhbmdbJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnXSA9ICdIYXZlIHlvdXIgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBHb29nbGUnOwokbGFuZ1snY3JlYXRlX3JvYm90cyddID0gJ0hhdmUgYSByb2JvdHMudHh0IGZpbGUgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOwokbGFuZ1snc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciBzaXRlbWFwLnhtbCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snY2htb2Rfc2l0ZW1hcCddID0gJ1NldCB5b3VyIC9zaXRlbWFwLnhtbCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7CiRsYW5nWydyb2JvdHNfbm90X3dyaXRlYWJsZSddID0gJ1lvdXIgcm9ib3RzLnR4dCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGFkbWluIGFwcGxpY2F0aW9uIHJlc3AuIGFkbWluIGxpc3QnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3R5cGUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBwYWdlIHR5cGUnOwokbGFuZ1snbm9fb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnWW91IGhhdmUgbm90IHNldCB0aGUgT3BlbkdyYXBoIHNpdGUgbmFtZSc7CiRsYW5nWydub19vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IGFuIE9wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsKJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldCB5b3VyIC9yb2JvdHMudHh0IGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsKJGxhbmdbJ2VkaXRfcGFnZSddID0gJ0VkaXQgJXMnOwokbGFuZ1snZWRpdF9wYWdlX3RvX2ZpeCddID0gJ0NsaWNrIGhlcmUgdG8gZWRpdCB0aGUgcGFnZSBhbmQgZml4IHRoZSBwcm9ibGVtJzsKJGxhbmdbJ3Zpc2l0X3NldHRpbmdzJ10gPSAnQ2hhbmdlIHNldHRpbmdzJzsKCiRsYW5nWydwYWdlX2lkJ10gPSAnSUQnOwokbGFuZ1sncGFnZV9uYW1lJ10gPSAnUGFnZSBuYW1lJzsKJGxhbmdbJ3ByaW9yaXR5J10gPSAnU2l0ZW1hcCBQcmlvcml0eSc7CiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1sna2V5d29yZHMnXSA9ICcjIEtleXdvcmRzJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snaW5kZXgnXSA9ICdJbmRleGFibGUnOwoKJGxhbmdbJ2NsaWNrX3RvX2FkZF9kZXNjcmlwdGlvbiddID0gJ0NsaWNrIGhlcmUgdG8gYWRkIGEgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWyd0b2dnbGUnXSA9ICd0b2dnbGUnOwokbGFuZ1sncmVzZXQnXSA9ICdyZXNldCc7CiRsYW5nWydyZXNldF90b19kZWZhdWx0J10gPSAnUmVzZXQgdGhpcyB0byB0aGUgZGVmYXVsdCB2YWx1ZSc7CiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRWRpdCB0aGlzIHZhbHVlJzsKCiRsYW5nWydoZWxwX29wZW5ncmFwaCddID0gJ0xvb2sgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoI3R5cGVzIiB0YWdldD0iX2JsYW5rIj5oZXJlPC9hPiBmb3IgYSBsaXN0IG9mIGFsbG93ZWQgdmFsdWVzJzsKJGxhbmdbJ2VudGVyX25ld19vZ3R5cGUnXSA9ICdFbnRlciB0aGUgbmV3IHZhbHVlIGZvciB0aGlzIHBhZ2VcJ3MgT3BlbkdyYXBoIHR5cGUnOwokbGFuZ1snaGVscF9uZXdfb2d0eXBlJ10gPSAnTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHNldHRpbmcnOwoKJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0VudGVyIHRoZSBuZXcga2V5d29yZHMgZm9yIHRoaXMgcGFnZSc7CiRsYW5nWydoZWxwX25ld19rZXl3b3JkcyddID0gJ1doaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMuIExlYXZlIGJsYW5rIHRvIHJldmVydCB0byBhdXRvIGdlbmVyYXRlZCBrZXl3b3Jkcyc7CgokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIE9wZW5HcmFwaCByZWxhdGVkIHByb2JsZW0ocyknOwokbGFuZ1snZ3JvdXB0aXRsZV9zeXN0ZW0nXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHN5c3RlbSBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ2dyb3VwdGl0bGVfcGFnZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgb24geW91ciBjb250ZW50IHBhZ2VzJzsKJGxhbmdbJ2dyb3VwdGl0bGVfc2V0dGluZ3MnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIFNFTyBTZXR0aW5ncyc7CiRsYW5nWydncm91cHRpdGxlX2Rlc2NyaXB0aW9ucyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSBkZXNjcmlwdGlvbnMnOwokbGFuZ1snZ3JvdXB0aXRsZV90aXRsZXMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHBhZ2UgdGl0bGVzJzsKCiRsYW5nWyd2aWV3X2FsbCddID0gJ1ZpZXcgYWxsJzsKCiRsYW5nWyd0aXRsZV9tZXRhc2V0dGluZ3MnXSA9ICdQYWdlIHRpdGxlICYgTWV0YSBpbmZvcm1hdGlvbic7CiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlciBzZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9rZXl3b3Jkc2V0dGluZ3MnXSA9ICdLZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyc7CgokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZXJlIG5vbmUgaXMgcHJvdmlkZWQnOwokbGFuZ1snZGVzY3JpcHRpb25fYXV0b190aXRsZSddID0gJ1RleHQgZm9yIGF1dG8tZ2VuZXJhdGVkIGRlc2NyaXB0aW9ucyc7CiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2hlbHAnXSA9ICcoWW91IDxiPm11c3Q8L2I+IGluY2x1ZGUgdGhlIHRhZyB7a2V5d29yZHN9IGhlcmUpJzsKCiRsYW5nWydzZXRfdXBfYXV0b19kZXNjcmlwdGlvbiddID0gJ1NldCB1cCB0aGUgZGVzY3JpcHRpb24gYXV0by1nZW5lcmF0b3IgYW5kIGVuc3VyZSB0aGUgdGV4dCBjb250YWlucyB0aGUgdGFnIHtrZXl3b3Jkc30nOwokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCc7CiRsYW5nWydhbmQnXSA9ICdhbmQnOwoKJGxhbmdbJ3RpdGxlX2tleXdvcmRfd2VpZ2h0J10gPSAnS2V5d29yZCB3ZWlnaHQgc2V0dGluZ3MnOwokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnXSA9ICdNaW5pbXVtIGtleXdvcmQgbGVuZ3RoJzsKJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgd29yZCB0byBiZSBjb25zaWRlcmVkIGFzIGEga2V5d29yZCknOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgdGl0bGUnOwokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIHRpdGxlLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbic7CiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24uIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIGNvbnRlbnQgaGVhZGxpbmVzJzsKJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBiZXR3ZWVuICZsdDtoMSZndDsgdG8gJmx0O2g2Jmd0OyB0YWdzLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CiRsYW5nWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHBsYWluIGNvbnRlbnQnOwokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW5zaWRlIHRoZSBwbGFpbiBjb250ZW50LiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7CgokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF90aXRsZSddID0gJ01pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEga2V5d29yZCc7CiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEgd29yZCB0byBiZWNvbWUgYSBrZXl3b3JkLiBTaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBoaWdoZXN0IHdlaWdodCBmcm9tIGFib3ZlLiBUaGUgc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBrZXl3b3JkcyB5b3UgZ2V0KSc7CgokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ1RoZSBzZXR0aW5ncyB5b3UgY2hhbmdlIG9uIHRoaXMgcGFnZSB3aWxsIG5vdCBhZmZlY3QgYW55IGtleXdvcmRzIHlvdSBlbnRlciBtYW51YWxseS4gRmVlbCBmcmVlIHRvIHBsYXkgd2l0aCBhbGwgdmFsdWVzIHVudGlsIHlvdSBnZXQgdGhlIGJlc3QgcmVzdWx0cyBmb3IgeW91ciBwYWdlLic7CgokbGFuZ1sndGl0bGVfa2V5d29yZF9leGNsdWRlJ10gPSAnS2V5d29yZCBleGNsdXNpb24gbGlzdCc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfdGl0bGUnXSA9ICdXb3JkcyB0byBuZXZlciBjb25zaWRlciBhcyBrZXl3b3Jkcyc7CiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfaGVscCddID0gJyhQcm92aWRlIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGtleXdvcmQgbGlzdHMpJzsKCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7CgokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiUmVnZW5lcmF0ZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IjsKJGxhbmdbJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgbm93IjsKJGxhbmdbJ3RleHRfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiSXQgY2FuIGJlIG5lY2Vzc2FyeSB0byByZWdlbmVyYXRlIHRoZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IGZpbGUgYWZ0ZXIgZXh0ZW5zaXZlIGNoYW5nZXMgdG8gdGhlIHBhZ2Ugc3RydWN0dXJlIjsKJGxhbmdbJ3NpdGVtYXBfcmVnZW5lcmF0ZWQnXSA9ICJCb3RoIHRoZSBzaXRlbWFwIGFuZCB0aGUgcm9ib3RzLnR4dCBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2VuZXJhdGVkLiI7CgokbGFuZ1snaW5zdGFsbF9kYXRhYmFzZV9lcnJvciddID0gIkFuIGVycm9yIGhhcyBvY2N1cmVkIGR1cmluZyBpbnN0YWxsYXRpb246IFRoZSBkYXRhYmFzZSB0YWJsZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4iOwokbGFuZ1snbm9fdXJsX2ZvcGVuJ10gPSAiTm90IHBvc3NpYmxlIGFzIGFsbG93X3VybF9mb3BlbiBoYXMgbm90IGJlZW4gc2V0IHRvICZxdW90O29uJnF1b3Q7IGluIHlvdXIgcGhwIGNvbmZpZ3VyYXRpb24uIjsKJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MiOwokbGFuZ1snYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnXSA9ICJBZGRpdGlvbmFsIE1ldGEgdGFncyB0byBiZSBpbnNlcnRlZCI7CiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiU3BlY2lmeSBhZGRpdGlvbmFsIE1ldGEgdGFncyBoZXJlIHRvIGJlIGluc2VydGVkIGludG8gdGhlIHBhZ2UgaGVhZGVyLiBZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyBoZXJlLiI7CgokbGFuZ1snaGVscF9zaG93YmFzZSddID0gIlNldCB0aGlzIHBhcmFtZXRlciB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gc3VwcHJlc3MgdGhlIG91dHB1dCBvZiB0aGUgYmFzZSBocmVmIHRhZy4iOwoKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4yIC0gMDYuIEphbnVhcnkgMjAxMS4gU2V2ZXJhbCBidWdmaXhlcyBhbmQgZW5oYW5jZW1lbnRzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMSAtIDAyLiBOb3ZlbWJlciAyMDEwLiBTZXZlcmFsIGJ1Z2ZpeGVzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMCAtIDI0IEF1Z3VzdCAyMDEwLiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD4nOwoKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+U0VPIFRvb2xzIGhlbHAgeW91IGluIGdldHRpbmcgeW91ciBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uKSByaWdodC4gVGhlIG1vZHVsZSBhZGRzIHNldmVyYWwgU0VPIGNhcGFiaWxpdGllcyB0byB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBhbmQgYWxlcnRzIHlvdSBpZiB5b3UgbWlzc2VkIG91dCBvbiBzb21ldGhpbmcgU0VPIHJlbGF0ZWQuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOjwvcD4KPHVsPgo8bGk+LSBnZW5lcmF0ZXMgTWV0YSB0YWdzIGluIHN0YW5kYXJkIGh0bWwsIER1YmxpbiBDb3JlIGFuZCBPcGVuR3JhcGggZm9ybWF0czwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgZXh0cmFjdHMga2V5d29yZHMgZnJvbSB5b3VyIHBhZ2VzIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1ldGEgdGFncyBhbmQgcGFnZSB0aXRsZTwvbGk+CjxsaT4tIGxldHMgeW91IGRldGVybWluZSB3aXRoIGEgc2luZ2xlIGNsaWNrIHdoZXRoZXIgY2VydGFpbiBwYWdlcyBzaG91bGQgYmUgaW5kZXhlZCBieSBzZWFyY2ggZW5naW5lcyBvciBub3Q8L2xpPgo8bGk+LSBnZW5lcmF0ZXMgYSBzaXRlbWFwLnhtbCBmaWxlIHdpdGggeW91ciBwYWdlcyB3aGlsZSBnaXZpbmcgeW91IGZ1bGwgY29udHJvbCBvdmVyIHRoZSBwcmlvcml0aWVzIG9mIHlvdXIgcGFnZXM8L2xpPgo8bGk+LSBnZW5lcmF0ZXMgYSByb2JvdHMudHh0IGZpbGUgZXhwbGljaXRseSBkaXNhbGxvd2luZyBhY2Nlc3MgdG8gcGFnZXMgeW91IGRvblwndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgcGFnZXMgZmVhdHVyaW5nIHRoZSBzYW1lIHBhZ2UgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnM8L2xpPgo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+CjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+IAo8L3VsPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPIFRvb2xzLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPgo8cHJlPgp7U0VPVG9vbHN9CjwvcHJlPjxiciAvPgo8cD5OZXh0LCBhdCB0aGUgYm90dG9tIG9mIHlvdXIgdGVtcGxhdGUgKGFmdGVyIHRoZSBjbG9zaW5nICZsdDsvYm9keSZndDsgdGFnKSwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcgY29kZTo8L3A+CjxwcmU+CntjYXB0dXJlfXtjb250ZW50IGJsb2NrPSJQYWdlIERlc2NyaXB0aW9uIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9CjwvcHJlPjxiciAvPgo8cD5UaGlzIGlzIHdoZXJlIHlvdVwnbGwgZW50ZXIgYSBzaG9ydCBwYWdlIGRlc2NyaXB0aW9uIChvbmUgb3IgdHdvIHNlbnRlbmNlcykgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgc2VhcmNoIGVuZ2luZVwncyByZXN1bHRzIGFuZCBpZiwgZm9yIGV4YW1wbGUsIHNvbWVvbmUgc2hhcmVzIGEgbGluayB0byB5b3VyIHBhZ2Ugb24gZmFjZWJvb2suPC9wPgo8cD5Ob3csIHZpc2l0IHRoZSBzZXR0aW5ncyB0YWJzIGZvciBwYWdlIHRpdGxlICYgbWV0YSBpbmZvcm1hdGlvbiwgdGhlIHNpdGVtYXAgJiBjcmF3bGVyIHNldHRpbmdzIGFuZCB0aGUga2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MgYW5kIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZvciB5b3VyIHBhZ2UuIFVuZGVyICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayIgeW91IG5lZWQgdG8gZW50ZXIgdGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgeW91IGp1c3QgYWRkZWQgdG8geW91ciB0ZW1wbGF0ZXMgKCJQYWdlIERlc2NyaXB0aW9uIiBpbiBvdXIgZXhhbXBsZSkuIFRoZSB0YWIgIlNFTyBBbGVydHMiIHdpbGwgYWxlcnQgeW91IGlmIGl0IGRldGVjdHMgYW55dGhpbmcgdGhhdCBpcyByZXF1aXJlZCBidXQgbm90IGFjdGl2YXRlZCBvciBmaWxsZWQgaW4uIFlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBzaWduaW5nIHVwIHlvdXIKc2l0ZSB3aXRoIEdvb2dsZSBXZWJtYXN0ZXIgdG9vbHMuIFRoZXJlLCBzZWxlY3QgIk1ldGEgdGFnIHZhbGlkYXRpb24iIGFuZCBwYXN0ZSB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgKHF1aXRlIGEgbG9uZyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhbmQgbnVtYmVycykgaW50byB0aGUgYm94ICJWZXJpZmljYXRpb24gQ29kZSIgaW4gIlNFTyBTZXR0aW5ncyIgdG8gYXV0b21hdGljYWxseSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJlYWxseQp0aGUgb3duZXIgb2YgeW91ciBwYWdlIChubyBuZWVkIHRvIHBhc3RlIHRoZSBHb29nbGUgTWV0YS1jb2RlIGludG8geW91ciB0ZW1wbGF0ZSkuPC9wPgo8cD5BcyBzb29uIGFzIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCBsb29rIGF0IHRoZSAiU0VPIEFsZXJ0cyIgdGFiIGFuZCBmaXggYWxsIHByb2JsZW1zIGRldGVjdGVkIGhlcmUuIFRha2UgY2FyZSB0byBpbnNlcnQgYSAodW5pcXVlKSBwYWdlIGRlc2NyaXB0aW9uIG9uIGV2ZXJ5IHBhZ2UgeW91IGVkaXQgaW4gdGhlIGZpZWxkICJQYWdlIERlc2NyaXB0aW9uIiBhdCB0aGUgYm90dG9tIG9mIHlvdXIgIkVkaXQgUGFnZSIgZm9ybS48L3A+CjxwPlRvIHNldCB5b3VyIG93biBrZXl3b3JkcyAoaW5zdGVhZCBvZiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgb25lcykgb3IgT3BlbkdyYXBoIHR5cGUgZm9yIGNlcnRhaW4gcGFnZXMsIHZpc2l0IHRoZSAiUGFnZSBzZXR0aW5ncyIgdGFiIHdoZXJlIHlvdVwnbGwgZmluZCBhIGxpc3Qgb2YgYWxsIHBhZ2VzIHlvdSBoYXZlIGluIHlvdXIgc3lzdGVtLiBUaGVyZSwgeW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgc2l0ZW1hcCBwcmlvcml0eSAod2hpY2ggaXMgYXV0by1jYWxjdWxhdGVkIGJ5IGRlZmF1bHQpIG9mIGEgcGFnZSB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZApiZSBjb25zaWRlcmVkIG1vcmUgaW1wb3J0YW50IGZvciBzZWFyY2ggZW5naW5lIG1hdGNoZXMgb24geW91ciBwYWdlIG9yIGV4Y2x1ZGUgY2VydGFpbiBwYWdlcyBmcm9tIHRoZSBzZWFyY2ggaW5kZXguPC9wPgo8cD5TRU8gVG9vbHMgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IGEgbGluayB0byB0aGUgaW1hZ2UgdG8gYmUgdXNlZCBhcyB0aGUgbWFpbiBpbWFnZSBvZiB5b3VyIHBhZ2UgaWYgeW91IHNlbGVjdCBhbiAiSW1hZ2UiIGZvciB0aGUgcGFnZSBmcm9tIHdpdGhpbiB5b3VyIHBhZ2VcJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQp3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBpbWFnZSB5b3Ugc3BlY2lmaWVkIGZyb20gd2l0aGluICJTRU8gU2V0dGluZ3MiLiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB5b3UgbmVlZCB0byB1cGxvYWQgdGhvc2UgaW1hZ2VzIHRvIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeS48L3A+CjxoMz5DYW4gSSB1c2Ugc21hcnR5IHZhcmlhYmxlcz88L2gzPgo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4KPGgzPldoaWNoIHNtYXJ0eSB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkIGJ5IFNFT1Rvb2xzPzwvaDM+Cjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+Cjxjb2RlPnskZGVmYXVsdF9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBkZWZhdWx0IGtleXdvcmRzPGJyIC8+Cjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKSAKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEhlbm5pbmcgU2NoYWVmZXIgPGEgaHJlZj0ibWFpbHRvOmhlbm5pbmcuc2NoYWVmZXJAZ21haWwuY29tIj4mbHQ7aGVubmluZy5zY2hhZWZlckBnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEluc3RhbGwoKQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywKCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLgoJICAgCSAgIAoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0CgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQoJICAgCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLgoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24KCQkvLyBWIDEuMTArCgkJaWYgKCR0aGlzLT5kYikgewoJCSAgJGRiID0mICR0aGlzLT5kYjsKCQl9ZWxzZXsgICAgICAgIAoJCSAgJGRiID0mICRnQ21zLT5kYjsKCQl9CgkJCgkJLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCiAgICAgICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAgICAgJGZsZHMgPSAiCgkJCWNvbnRlbnRfaWQgSSBLRVksCgkJCWluZGV4YWJsZSBJKDEpLAoJCQlrZXl3b3JkcyBDKDI1NSksCgkJCXByaW9yaXR5IEkoMyksCgkJCW9ndHlwZSBDKDMyKQoJCQkiOwoKCQkvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzIiwKCQkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkvLyBUZXN0IGlmIGluc3RhbGxhdGlvbiB3b3JrZWQ6CgkJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29scyc7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCWlmICghJHJlc3VsdCkgewoJCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2luc3RhbGxfZGF0YWJhc2VfZXJyb3InKTsKCQl9CgkJCgkJLy8gcGVybWlzc2lvbnMKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnLCdFZGl0IFNFTyBTZXR0aW5ncycpOwogICAgICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJywnRWRpdCBwYWdlIGRlc2NyaXB0aW9ucycpOwoKCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCQkKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbCgpCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudAoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQKCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUKCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMKCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0LgoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJCS8vIFR5cGljYWwgRGF0YWJhc2UgUmVtb3ZhbAoJCS8vIFYgMS4xMCsKCQlpZiAoJHRoaXMtPmRiKSB7CgkJICAkZGIgPSYgJHRoaXMtPmRiOwoJCX1lbHNleyAgICAgICAgCgkJICAkZGIgPSYgJGdDbXMtPmRiOwoJCX0KCQkKCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwkJCgkJCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycpOwogICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7CgoJCQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVwZ3JhZGUoKQoJICAgSWYgeW91ciBtb2R1bGUgdmVyc2lvbiBudW1iZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUKCSAgIHlvdSBhIGNoYW5jZSB0byB1cGdyYWRlIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGZ1bmN0aW9uCgkgICB0aGF0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIHVwZ3JhZGUuCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwKCSAgIHNvIHlvdSBjb3VsZCB1cGdyYWRlIGZyb20gdmVyc2lvbiAwLjAuMSB0byAxMC41Ljcgd2l0aAoJICAgYSBzaW5nbGUgY2FsbC4gRm9yIGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzLCBzZWUgdGhlIE5ld3MKCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQoJCXsKCQkJY2FzZSAiMS4wIjoKCQkJICAgICBicmVhazsKCQkJY2FzZSAiMS4xIjoKCQkJICAgICBicmVhazsKCQkJY2FzZSAiMS4yIjoKCQkJCSBicmVhazsKCQkJY2FzZSAiMS41IjoKCQkJCSBicmVhazsKCQl9CgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/SEOTools.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNFT1Rvb2xzIC0gU2V2ZXJhbCB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24gYW5kIGNoZWNrIGZvciBzdWJvcHRpbWFsIFNFTy1yZWxhdGVkIHRoaW5ncy4KIyBWZXJzaW9uOiAwLjksIEhlbm5pbmcgU2NoYWVmZXIKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAxMCBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojIFRoaXMgZmlsZSBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgTW9kdWxlTWFrZXIgbW9kdWxlLCB2ZXJzaW9uIDAuMy4yCiMgQ29weXJpZ2h0IChjKSAyMDEwIGJ5IFNhbXVlbCBHb2xkc3RlaW4gKHNqZ0BjbXNtYWRlc2ltcGxlLm9yZykgCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3IgSGVscCBidWlsZGluZyBtb2R1bGVzOgojIC0gUmVhZCB0aGUgRG9jdW1lbnRhdGlvbiBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZSBhdAojICAgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy8KIyAtIENoZWNrIG91dCB0aGUgU2tlbGV0b24gTW9kdWxlIGZvciBhIGNvbW1lbnRlZCBleGFtcGxlCiMgLSBMb29rIGF0IG90aGVyIG1vZHVsZXMsIGFuZCBsZWFybiBmcm9tIHRoZSBzb3VyY2UKIyAtIENoZWNrIG91dCB0aGUgZm9ydW1zIGF0IGh0dHA6Ly9mb3J1bXMuY21zbWFkZXNpbXBsZS5vcmcKIyAtIENoYXQgd2l0aCBkZXZlbG9wZXJzIG9uIHRoZSAjY21zIElSQyBjaGFubmVsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovL2Vycm9yX3JlcG9ydGluZyhFX0FMTCk7CgovLyBDb21wYXRpYmlsaXR5IHdpdGggMS4xMCBhbmQgMS45Lng6CmlmIChpc19hcnJheSgkZ0Ntcy0+Y29uZmlnKSkgewoJJGNvbmZpZyA9ICRnQ21zLT5jb25maWc7Cn1lbHNlewoJJGNvbmZpZyA9IGNtc21zKCktPmdldENvbmZpZygpOwp9CgpjbGFzcyBTRU9Ub29scyBleHRlbmRzIENNU01vZHVsZQp7CgkKCWZ1bmN0aW9uIEdldE5hbWUoKQoJewoJCXJldHVybiAnU0VPVG9vbHMnOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRGcmllbmRseU5hbWUoKQoJICAgVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBsb2NhbGl6ZWQgbmFtZQoJICAgb2YgdGhlIG1vZHVsZS4gVGhpcyBpcyB0aGUgbmFtZSB0aGF0J3Mgc2hvd24gaW4gdGhlCgkgICBBZG1pbiBNZW51cyBhbmQgc2VjdGlvbiBwYWdlcyAoaWYgdGhlIG1vZHVsZSBoYXMgYW4gYWRtaW4KCSAgIGNvbXBvbmVudCkuCgkgICAKCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7Cgl9CgoJCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0VmVyc2lvbigpCgkgICBUaGlzIGNhbiByZXR1cm4gYW55IHN0cmluZywgcHJlZmVyYWJseSBhIG51bWJlciBvcgoJICAgc29tZXRoaW5nIHRoYXQgbWFrZXMgc2Vuc2UgZm9yIGRlc2lnbmF0aW5nIGEgdmVyc2lvbi4KCSAgIFRoZSBDTVMgd2lsbCB1c2UgdGhpcyB0byBpZGVudGlmeSB3aGV0aGVyIG9yIG5vdAoJICAgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUgaXMgY3VycmVudCwgYW5kCgkgICB0aGUgbW9kdWxlIHdpbGwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgaG93IHRvIHVwZ3JhZGUKCSAgIGl0c2VsZiBpZiByZXF1ZXN0ZWQuCSAgIAoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0VmVyc2lvbigpCgl7CgkJcmV0dXJuICcxLjUnOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRIZWxwKCkKCSAgIFRoaXMgcmV0dXJucyBIVE1MIGluZm9ybWF0aW9uIG9uIHRoZSBtb2R1bGUuCgkgICBUeXBpY2FsbHksIHlvdSdsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvCgkgICB1c2UgdGhlIG1vZHVsZS4KCSAgIAoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEhlbHAoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBdXRob3IoKQoJICAgVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBNb2R1bGUKCSAgIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgIkFib3V0IiBsaW5rLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0QXV0aG9yKCkKCXsKCQlyZXR1cm4gJ0hlbm5pbmcgU2NoYWVmZXInOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBdXRob3JFbWFpbCgpCgkgICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQoJICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywKCSAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCgl7CgkJcmV0dXJuICdpbmZvQHNjaGFlZmVyLWluZm9ybWF0aWsuYml6JzsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0Q2hhbmdlTG9nKCkKCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgbW9kdWxlCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlIEFib3V0IGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBmaWd1cmUgb3V0IHdoYXQncyBjaGFuZ2VkIGJldHdlZW4gcmVsZWFzZXMuCgkgICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBJc1BsdWdpbk1vZHVsZSgpCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24KCSAgIHdoZXRoZXIgdXNlcnMgY2FuIGluY2x1ZGUgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IKCSAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSdTRU9Ub29scycgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQoJICAgCgkgICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3IKCSAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgSGFzQWRtaW4oKQoJICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSwgZGVwZW5kaW5nIG9uCgkgICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YKCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEknbGwgYmUgY2FsbGluZwoJICAgdGhlIGFkbWluIHBhcnQgb2YgeW91ciBtb2R1bGUgdGhlICJBZG1pbiBQYW5lbCIgZm9yCgkgICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBZG1pblNlY3Rpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkKCSAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cwoJICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0CgkgICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToKCgkgICBtYWluICAgICAgICAtIHRoZSBNYWluIG1lbnUgdGFiLgoJICAgY29udGVudCAgICAgLSB0aGUgQ29udGVudCBtZW51CgkgICBsYXlvdXQgICAgICAtIHRoZSBMYXlvdXQgbWVudQoJICAgdXNlcnNncm91cHMgLSB0aGUgVXNlcnMgYW5kIEdyb3VwcyBtZW51CgkgICBleHRlbnNpb25zICAtIHRoZSBFeHRlbnNpb25zIG1lbnUgKHRoaXMgaXMgdGhlIGRlZmF1bHQpCgkgICBzaXRlYWRtaW4gICAtIHRoZSBTaXRlIEFkbWluIG1lbnUKCSAgIHZpZXdzaXRlICAgIC0gdGhlIFZpZXcgU2l0ZSBtZW51IHRhYgoJICAgbG9nb3V0ICAgICAgLSB0aGUgTG9nb3V0IG1lbnUgdGFiCgkgICAKCSAgIE5vdGUgdGhhdCBpZiB5b3UgcGxhY2UgeW91ciBtb2R1bGUgaW4gdGhlIG1haW4sCgkgICB2aWV3c2l0ZSwgb3IgbG9nb3V0IHNlY3Rpb25zLCBpdCB3aWxsIHNob3cgdXAgaW4gdGhlCgkgICBtZW51cywgYnV0IHdpbGwgbm90IGJlIHZpc2libGUgaW4gYW55IHRvcC1sZXZlbAoJICAgc2VjdGlvbiBwYWdlcy4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCgl7CgkJcmV0dXJuICdjb250ZW50JzsKCX0KCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldEFkbWluRGVzY3JpcHRpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24KCSAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBWaXNpYmxlVG9BZG1pblVzZXIoKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBjb250cm9sIHdoZXRoZXIgb3Igbm90IGl0J3MgZGlzcGxheWVkIGJ5IHRoZSBib29sZWFuCgkgICB0aGF0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBUaGlzIGlzIHByaW1hcmlseSB1c2VkCgkgICB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKCSAgIHRoZW0uCgkgICAKCSAgIFR5cGljYWxseSwgeW91J2xsIHVzZSBzb21lIHBlcm1pc3Npb24gdG8gc2V0IHRoaXMKCSAgIChlLmcuLCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTb21lIFBlcm1pc3Npb24nKTsgKQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCXsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnKTsKCX0KCQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBDaGVja0FjY2VzcygpCgkgICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwKCSAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnRWRpdCBTRU8gU2V0dGluZ3MnKQoJCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybSk7CgkJfQoJCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgRGlzcGxheUVycm9yUGFnZSgpCgkgICBUaGlzIGlzIGEgc2ltcGxlIGZ1bmN0aW9uIGZvciBnZW5lcmF0aW5nIGVycm9yIHBhZ2VzLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuX2lkLCAkbWVzc2FnZT0nJykKICAgIHsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7CgogICAgICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7CiAgICB9CgkKCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldERlcGVuZGVuY2llcygpCgkgICBZb3VyIG1vZHVsZSBtYXkgbmVlZCBhbm90aGVyIG1vZHVsZSB0byBhbHJlYWR5IGJlIGluc3RhbGxlZAoJICAgYmVmb3JlIHlvdSBjYW4gaW5zdGFsbCBpdC4KCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHRob3NlIGRlcGVuZGVuY2llcyBhbmQKCSAgIG1pbmltdW0gdmVyc2lvbiBudW1iZXJzIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuCgkgICAKCSAgIEl0IHNob3VsZCByZXR1cm4gYW4gaGFzaCwgZWcuCgkgICByZXR1cm4gYXJyYXkoJ3NvbWVtb2R1bGUnPT4nMS4wJywgJ290aGVybW9kdWxlJz0+JzEuMScpOwoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKCXsKCQlyZXR1cm4gYXJyYXkoKTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgTWluaW11bUNNU1ZlcnNpb24oKQoJICAgWW91ciBtb2R1bGUgbWF5IHJlcXVpcmUgZnVuY3Rpb25zIG9yIG9iamVjdHMgZnJvbQoJICAgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIENNUyBNYWRlIFNpbXBsZS4KCSAgIEV2ZXIgc2luY2UgdmVyc2lvbiAwLjExLCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggbWluaW11bQoJICAgQ01TIE1TIHZlcnNpb24gaXMgcmVxdWlyZWQgZm9yIHlvdXIgbW9kdWxlLCB3aGljaCB3aWxsCgkgICBwcmV2ZW50IGl0IGZyb20gYmVpbmcgaW5zdGFsbGVkIGJ5IGEgdmVyc2lvbiBvZiBDTVMgdGhhdAoJICAgY2FuJ3QgcnVuIGl0LgoJICAgCgkgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUKCSAgIG1pbmltdW0gdmVyc2lvbiB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLgoJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKCXsKCQlyZXR1cm4gIjEuNi4wIjsKCX0KCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIE1heGltdW1DTVNWZXJzaW9uKCkKCSAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluCgkgICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQoJICAgdGhpbmsgQVBJIGZlYXR1cmVzIHlvdSB1c2UgbWF5IGNoYW5nZSAtLSBhZnRlciBhbGwsIHlvdQoJICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4KCSAgIAoJICAgU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMKCSAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5CgkgICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UKCSAgIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24KCSAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4KCSAgIAoJICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlCgkgICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4KCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBNYXhpbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjE1LjAiOwoJfQoKCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKCSAgIEFmdGVyIGluc3RhbGxhdGlvbiwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwoJICAgY29tbXVuaWNhdGUgdG8geW91ciBhZG1pbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKCSAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCgkgICBBZnRlciByZW1vdmluZyBhIG1vZHVsZSwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwoJICAgY29tbXVuaWNhdGUgdG8geW91ciBhZG1pbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKCSAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKCX0KCgoJLyoqCgkgKiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKCSAqIFRoaXMgYWxsb3dzIHlvdSB0byBkaXNwbGF5IGEgbWVzc2FnZSBhbG9uZyB3aXRoIGEgWWVzL05vIGRpYWxvZyBib3guIElmIHRoZSB1c2VyIHJlc3BvbmRzCgkgKiBpbiB0aGUgYWZmaXJtYXRpdmUgdG8geW91ciBtZXNzYWdlLCB0aGUgdW5pbnN0YWxsIHdpbGwgcHJvY2VlZC4gSWYgdGhleSByZXNwb25kIGluIHRoZQoJICogbmVnYXRpdmUsIHRoZSB1bmluc3RhbGwgd2lsbCBiZSBjYW5jZWxlZC4gVGh1cywgeW91ciBtZXNzYWdlIHNob3VsZCBiZSBvZiB0aGUgZm9ybQoJICogIkFsbCBtb2R1bGUgZGF0YSB3aWxsIGJlIGRlbGV0ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/IgoJICoKCSAqIElmIHlvdSBkb24ndCB3YW50IHRoZSBkaWFsb2csIGhhdmUgdGhpcyBtZXRob2QgcmV0dXJuIGEgRkFMU0UsIHdoaWNoIHdpbGwgY2F1c2UgdGhlCgkgKiBtb2R1bGUgdG8gdW5pbnN0YWxsIGltbWVkaWF0ZWx5IGlmIHRoZSB1c2VyIGNsaWNrcyB0aGUgInVuaW5zdGFsbCIgbGluay4KCSAqLwoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7Cgl9CgkKCWZ1bmN0aW9uIEdldE5vdGlmaWNhdGlvbk91dHB1dCgkcHJpb3JpdHkgPSAzKSB7CQkJCQkJCQkKCQlpZiAoY291bnQoJHRoaXMtPmdldFVyZ2VudEFsZXJ0cygpKSA+IDApIHsKCQkgICR0ZXh0ID0gJHRoaXMtPmxhbmcoJ3Byb2JsZW1fYWxlcnQnLEFycmF5KCR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJHRoaXMtPmxhbmcoJ3Byb2JsZW1fbGlua190aXRsZScpKSkpOwoJCSAgCgkJICAkb2JqID0gbmV3IFN0ZENsYXNzOwoJCSAgJG9iai0+cHJpb3JpdHkgPSAzOwoJCSAgJG9iai0+aHRtbCA9ICR0ZXh0OwoJCSAgCgkJICByZXR1cm4gJG9iajsKCQl9Cgl9CgkKCQoJZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsKCQkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCQkkdGhpcy0+YWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7CgkJJHRoaXMtPmFkZEV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnREZWxldGVQb3N0JyxmYWxzZSk7CgkJCgkJJHRoaXMtPnJlc3RyaWN0VW5rbm93blBhcmFtcyh0cnVlKTsKCgkJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc2hvd2Jhc2UnLCAndHJ1ZScsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3diYXNlJykpOwoJfQoJCglmdW5jdGlvbiBEb0V2ZW50KCRvcmlnaW4sICRuYW1lLCAkcGFyYW1zKSB7CgkgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCd0cnVlJykgPT0gJ3RydWUnKSB7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJ3RydWUnKSA9PSB0cnVlKTsKICAgICAgfQoJfQoJCglmdW5jdGlvbiBnZXRVcmdlbnRBbGVydHMoKSB7CgkJZ2xvYmFsICRnQ21zOwoJCWdsb2JhbCAkY29uZmlnOwkJCQkKCQkKCQkkYWxlcnRzID0gQXJyYXkoKTsKCQkvLyBFbmFibGUgUHJldHR5IFVSTHMKICAgICAgICBpZiAoKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSAhPSAibW9kX3Jld3JpdGUiKSAmJiAoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddICE9ICdpbnRlcm5hbCcpKSB7CiAgICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdhY3RpdmF0ZV9wcmV0dHlfdXJscycpOwogICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+bGFuZygncHJldHR5X3VybHNfaGVscCcpOwogICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0gICAgICAgCgkJLy8gTm8gTWV0YSB0YWdzIGFyZSBpbnNlcnRlZAoJCWlmICgoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLCdmYWxzZScpICE9ICd0cnVlJykgJiYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCdmYWxzZScpICE9ICd0cnVlJykpIHsJCQkKCQkJJGFsZXJ0ID0gQXJyYXkoKTsKCQkJJGFsZXJ0Wydncm91cCddID0gJ3NldHRpbmdzJzsKCQkJJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygndXNlX3N0YW5kYXJkX29yX2R1YmxpbmNvcmVfbWV0YScpOwoJCQkkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CgkJCSRhbGVydHNbXSA9ICRhbGVydDsKCQl9CgkJCS8vIFYgMS4xMCsKCQlpZiAoJHRoaXMtPmRiKSB7CgkJICAkZGIgPSYgJHRoaXMtPmRiOwoJCX1lbHNleyAgICAgICAgCgkJICAkZGIgPSYgJGdDbXMtPmRiOwoJCX0JCQkJCQkKCQlpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCdmYWxzZScpICE9ICd0cnVlJykgewoJCQlpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykgIT0gJycpIHsKCQkJICAvLyBQYWdlcyB3aXRob3V0IGRlc2NyaXB0aW9uCgkJCSAgJHF1ZXJ5ID0gJ1NFTEVDVCAqLGMuY29udGVudF9pZCBBUyBjaWQsIGMudHlwZSBBUyBjdHlwZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMgTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgKHAuY29udGVudCBJUyBOVUxMIE9SIHAuY29udGVudCA9ICIiKSBBTkQgYy50eXBlID0gImNvbnRlbnQiIExJTUlUIDAsMjEnOwkJCgkJCSAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsJCQkJCgkJCSAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAJCSAgCSAgaWYgKCRwcm9ibGVtWydjdHlwZSddID09ICdjb250ZW50JykgewkJCQoJCQkJICAkYWxlcnQgPSBBcnJheSgpOwoJCQkJICAkYWxlcnRbJ2dyb3VwJ10gPSAncGFnZXMnOwoJCQkJICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnLEFycmF5KCRwcm9ibGVtWydjb250ZW50X25hbWUnXSkpOwoJCQkJICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgewoJCQkJICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOwoJCQkJICB9ZWxzZXsKCQkJCSAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOwoJCQkJICB9CgkJCQkgICRhbGVydHNbXSA9ICRhbGVydDsKCQkJICAJfQoJCQkgIH0KCQkJfWVsc2V7CgkJCSAgJGFsZXJ0ID0gQXJyYXkoKTsKCQkJICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOwoJICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3NldF91cF9kZXNjcmlwdGlvbl9ibG9jaycpOwoJICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKCSAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CQoJCQl9CQkKCQl9ZWxzZWlmKHN0cnBvcygkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJycpLCd7a2V5d29yZHN9JykgPT09IGZhbHNlKSB7CgkJCSRhbGVydCA9IEFycmF5KCk7CgkJCSRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CgkgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3NldF91cF9hdXRvX2Rlc2NyaXB0aW9uJyk7CgkgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKCSAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwoJCX0KCQkKICAgICAgICAvLyBzaXRlbWFwLnhtbCBub3Qgd3JpdGVhYmxlCiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSA9PSAndHJ1ZScpIHsKCQkgIGlmICghaXNfd3JpdGVhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9zaXRlbWFwLnhtbCcpKSB7CgkJICAJJGFsZXJ0ID0gQXJyYXkoKTsKCQkgIAkkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsKICAgICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ2NobW9kX3NpdGVtYXAnKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwoJCSAgfQkJCQoJCX0KCQkKICAgICAgICAvLyByb2JvdHMudHh0IG5vdCB3cml0ZWFibGUKCSAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsJ3RydWUnKSA9PSAndHJ1ZScpIHsKCSAgIAkgICRmcCA9IEBmb3BlbigkY29uZmlnWydyb290X3BhdGgnXSAuICcvcm9ib3RzLnR4dCcsImEiKTsKCSAgIAkgIEBmY2xvc2UoJGZwKTsKICAgICAgICAgIGlmICghaXNfd3JpdGVhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JykpIHsKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3N5c3RlbSc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3JvYm90c19ub3Rfd3JpdGVhYmxlJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ2NobW9kX3JvYm90cycpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgICB9ICAgICAgICAgCiAgICAgICAgfQoJCQkJCiAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywnZmFsc2UnKSA9PSAndHJ1ZScpIHsKICAgICAgICAvLyBObyBPcGVuR3JhcGggYWRtaW4gc2V0CiAgICAgICAgaWYgKCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykgPT0gJycpICYmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCcnKSA9PSAnJykpIHsKICAgICAgICAJJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAJJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF9hZG1pbnMnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIE5vIE9wZW5HcmFwaCBwYWdlIHR5cGUgc2V0CiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJykgPT0gJycpIHsKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF90eXBlJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICAvLyBObyBPcGVuR3JhcGggc2l0ZW5hbWUgc2V0CiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsJycpID09ICcnKSB7CiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdub19vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIE5vIE9wZW5HcmFwaCBpbWFnZSBzZXQKICAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJykgPT0gJycpIHsgICAgICAgIAkKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF9pbWFnZScpOwogICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9CiAgICAgICB9CgkJCgkJcmV0dXJuICRhbGVydHM7Cgl9CgkKCWZ1bmN0aW9uIGdldEltcG9ydGFudEFsZXJ0cygpIHsKCQlnbG9iYWwgJGdDbXM7CgkJZ2xvYmFsICRjb25maWc7CiAgICAgICAgJGFsZXJ0cyA9IEFycmF5KCk7CiAgICAgICAgLy8gViAxLjEwKwogICAgICAgIGlmICgkdGhpcy0+ZGIpIHsKICAgICAgICAJJGRiID0mICR0aGlzLT5kYjsKICAgICAgICB9ZWxzZXsgICAgICAgIAogICAgICAgICAgJGRiID0mICRnQ21zLT5kYjsKICAgICAgICB9CiAgICAgICAgLy8gUGFnZXMgd2l0aCBzaG9ydCBkZXNjcmlwdGlvbgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKixjLmNvbnRlbnRfaWQgQVMgY2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgQ0hBUl9MRU5HVEgocC5jb250ZW50KSA8IDc1IEFORCBjLnR5cGUgPSAiY29udGVudCIgQU5EIHAuY29udGVudCA8PiAiIiBMSU1JVCAwLDIxJzsgICAgICAgIAogICAgICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7ICAgICAgICAgICAgCiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdtZXRhX2Rlc2NyaXB0aW9uX3Nob3J0JyxBcnJheSgkcHJvYmxlbVsnY29udGVudF9uYW1lJ10pKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsKICAgICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIAkkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9CgogICAgICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIHRpdGxlCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjMS5jb250ZW50X2FsaWFzIEFTIGMxbmFtZSwgYzEuY29udGVudF9pZCBBUyBjMWlkLCBjMi5jb250ZW50X2FsaWFzIEFTIGMybmFtZSwgYzIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYzEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjMiBPTiAoYzEuY29udGVudF9uYW1lID0gYzIuY29udGVudF9uYW1lIEFORCBjMS5jb250ZW50X2lkIDwgYzIuY29udGVudF9pZCkgV0hFUkUgYzEudHlwZSA9ICJjb250ZW50IiBBTkQgYzIudHlwZSA9ICJjb250ZW50IiBMSU1JVCAwLDIxJzsKCSAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOyAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgeyAgICAgICAgICAgIAogICAgICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAndGl0bGVzJzsKICAgICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnZHVwbGljYXRlX3RpdGxlcycsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddLCRwcm9ibGVtWydjMm5hbWUnXSkpOwogICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgewogICAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMWlkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MyaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMm5hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzFpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddKSkuJzwvYT4nOwogICAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MyaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMm5hbWUnXSkpLic8L2E+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIGRlc2NyaXB0aW9uCgkgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBwMS5jb250ZW50X2lkIEFTIGMxaWQsIHAyLmNvbnRlbnRfaWQgQVMgYzJpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAxIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcDIgT04gKHAxLnByb3BfbmFtZSA9IHAyLnByb3BfbmFtZSBBTkQgcDEucHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyIgQU5EIHAxLmNvbnRlbnRfaWQgPCBwMi5jb250ZW50X2lkIEFORCBwMS5jb250ZW50IDw+ICIiIEFORCBwMi5jb250ZW50IDw+ICIiKSBXSEVSRSBwMS5jb250ZW50ID0gcDIuY29udGVudCBMSU1JVCAwLDIxJzsKICAgICAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOyAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgewogICAgICAgIAkkcXVlcnkgPSAnU0VMRUNUIGNvbnRlbnRfaWQsIGNvbnRlbnRfbmFtZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwcm9ibGVtWydjMWlkJ10uJyBPUiBjb250ZW50X2lkID0gJy4kcHJvYmxlbVsnYzJpZCddOwogICAgICAgIAkkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAJJGZpcnN0ID0gJHJlc3VsdDEtPmZldGNoUm93KCk7CiAgICAgICAgCSRzZWNvbmQgPSAkcmVzdWx0MS0+ZmV0Y2hSb3coKTsgICAgICAgICAgICAKICAgICAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ2Rlc2NyaXB0aW9ucyc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2R1cGxpY2F0ZV9kZXNjcmlwdGlvbnMnLEFycmF5KCRmaXJzdFsnY29udGVudF9uYW1lJ10sJHNlY29uZFsnY29udGVudF9uYW1lJ10pKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsKICAgICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kZmlyc3RbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRmaXJzdFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHNlY29uZFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHNlY29uZFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAJJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kZmlyc3RbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRmaXJzdFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7CiAgICAgICAgICAgIAkkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9CiAgICAgICAgLy8gTm8gYXV0aG9yIHByb3ZpZGVkCiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpID09ICcnKSB7CiAgICAgICAgCSRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgCSRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3Byb3ZpZGVfYW5fYXV0aG9yJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGFsZXJ0czsJCQoJfQoJCglmdW5jdGlvbiBnZXROb3RpY2VBbGVydHMoKSB7CgkJJGFsZXJ0cyA9IEFycmF5KCk7CgkJLy8gTm8gc3RhbmRhcmQgbWV0YQogICAgICAgIGlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsJ2ZhbHNlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgCSRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgCSRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3VzZV9zdGFuZGFyZF9tZXRhJyk7CiAgICAgICAgCSRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsgICAgICAgIAkKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwogICAgICAgIH0KICAgICAgICAvLyBTdWJtaXQgYSBzaXRlbWFwCiAgICAgICAgaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsJ3RydWUnKSAhPSAndHJ1ZScpIHsKICAgICAgICAJJGFsZXJ0ID0gQXJyYXkoKTsKICAgICAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnY3JlYXRlX2Ffc2l0ZW1hcCcpOwogICAgICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7CiAgICAgICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsKICAgICAgICB9ZWxzZWlmKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLCd0cnVlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgICAvLyBBdXRvbWF0aWNhbGx5IHN1Ym1pdCB0aGUgc2l0ZW1hcAogICAgICAgICAgICAkYWxlcnQgPSBBcnJheSgpOwogICAgICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJyk7CiAgICAgICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsKICAgICAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0OwkKICAgICAgICB9ICAgICAgICAKICAgICAgICAvLyBDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUKICAgICAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLCd0cnVlJykgIT0gJ3RydWUnKSB7CiAgICAgICAgICAgICRhbGVydCA9IEFycmF5KCk7CiAgICAgICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2NyZWF0ZV9yb2JvdHMnKTsKICAgICAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOwogICAgICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7CiAgICAgICAgfQogICAgICAgIC8vIFNldCBhIGRlZmF1bHQgaW1hZ2UKICAgICAgICByZXR1cm4gJGFsZXJ0czsKCX0KCQpmdW5jdGlvbiBnZXRfa2V5d29yZHMoJHNvdXJjZSwgJG1pbmxlbmd0aCA9IDYpIHsKICAgICRzb3VyY2UgPSBwcmVnX3JlcGxhY2UoJy9ce1teXH1dK1x9L2lzVScsICcnLCB1dGY4X2RlY29kZSgkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoIlxuIiwiICIsc3RyaXBfdGFncygkc291cmNlKSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy0nLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLicsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCcsJywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyEnLCcgJywkc291cmNlKTsKICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnPycsJyAnLCRzb3VyY2UpOwogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCc6JywnICcsJHNvdXJjZSk7CiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyAgJywnICcsJHNvdXJjZSk7CiAgICAka2V5d29yZHMgPSBleHBsb2RlKCcgJywkc291cmNlKTsKICAgIGZvcmVhY2ggKCRrZXl3b3JkcyBhcyAka2V5PT4kdmFsdWUpIHsKICAgICAgICBpZiAoc3RybGVuKCR2YWx1ZSkgPCAkbWlubGVuZ3RoKSB7CiAgICAgICAgICAgIHVuc2V0KCRrZXl3b3Jkc1ska2V5XSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgCSRrZXl3b3Jkc1ska2V5XSA9IGh0bWxlbnRpdGllcyh0cmltKCR2YWx1ZSkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAka2V5d29yZHM7ICAgIAp9CgpmdW5jdGlvbiBnZXRfaGVhZGxpbmVzKCRmaWxlKXsKICAgICAgJGgxdGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMS4qPikoXHcuKikoPFwvaDE+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsgICAgICAgICAgIAogICAgICAkY29udGVudCA9ICIiOwogICAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgIAkkY29udGVudCAuPSAiICIuJHRhZzsKICAgICAgfQogICAgICAkaDJ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgyLio+KShcdy4qKSg8XC9oMj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOyAgICAgICAgICAgCiAgICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgCSRjb250ZW50IC49ICIgIi4kdGFnOwogICAgICB9CiAgICAgICRoM3RhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDMuKj4pKFx3LiopKDxcL2gzPikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7ICAgICAgICAgICAKICAgICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAJJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICAgIH0KICAgICAgJGg0dGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoNC4qPikoXHcuKikoPFwvaDQ+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsgICAgICAgICAgIAogICAgICBmb3JlYWNoKCRwYXR0ZXJuc1syXSBhcyAkdGFnKSB7CiAgICAgIAkkY29udGVudCAuPSAiICIuJHRhZzsKICAgICAgfQogICAgICAkaDV0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg1Lio+KShcdy4qKSg8XC9oNT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOyAgICAgICAgICAgCiAgICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsKICAgICAgCSRjb250ZW50IC49ICIgIi4kdGFnOwogICAgICB9CiAgICAgICRoNnRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDYuKj4pKFx3LiopKDxcL2g2PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7ICAgICAgICAgICAKICAgICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgewogICAgICAJJGNvbnRlbnQgLj0gIiAiLiR0YWc7CiAgICAgIH0KICAgICAgcmV0dXJuICRjb250ZW50OyAgICAgICAgICAgCiAgICB9CgpmdW5jdGlvbiBnZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJGNvbnRlbnRfaWQpIHsKCWdsb2JhbCAkZ0NtczsKCSRobSA9ICRnQ21zLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CQkJCiAgICAkY3Vybm9kZSA9JiAkaG0tPmdldE5vZGVCeUlkKCRjb250ZW50X2lkKTsKICAgICRjdXJjb250ZW50ID0mICRjdXJub2RlLT5HZXRDb250ZW50KCk7CiAgICAkZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsgICAgICAgICAgICAKICAgIAoJLy8gViAxLjEwKwoJaWYgKCR0aGlzLT5kYikgewoJICAkZGIgPSYgJHRoaXMtPmRiOwoJfWVsc2V7ICAgICAgICAKCSAgJGRiID0mICRnQ21zLT5kYjsKCX0KCQoJCgkvKgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ICRjb250ZW50X2lkIEFORCBwcm9wX25hbWUgPSAnY29udGVudF9lbiciOwogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgJGNvbnRlbnQgPSAkcmVzdWx0LT5mZXRjaFJvdygpOwogICAgCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudF9wcm9wcyBXSEVSRSBjb250ZW50X2lkID0gJGNvbnRlbnRfaWQgQU5EIHByb3BfbmFtZSA9ICckZGVzY3JpcHRpb25faWQnIjsKICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICRkZXNjcmlwdGlvbiA9ICRyZXN1bHQtPmZldGNoUm93KCk7CiAgICAqLwogICAgCgkvKiBHZW5lcmF0ZSBrZXl3b3JkcyBmcm9tIHBhZ2UgdGl0bGUsIGRlc2NyaXB0aW9uIGFuZCBjb250ZW50ICovCiAgICAkdGl0bGVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5OYW1lKCksICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7ICAgIAoJJGRlc2NyaXB0aW9uX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkY3VyY29udGVudC0+Z2V0UHJvcGVydHlWYWx1ZSgkZGVzY3JpcHRpb25faWQpLCAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOwkJCQogICAgJGhlYWRsaW5lX2tleXdvcmRzID0gJHRoaXMtPmdldF9rZXl3b3JkcygkdGhpcy0+Z2V0X2hlYWRsaW5lcygkY29udGVudFsnY29udGVudCddKSwgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsgICAgCgkkY29udGVudF9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPmdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnRfZW4nKSwgJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsJCQoJCgkkb3RoZXJfa2V5d29yZHMgPSBBcnJheSgpOwoJCglmb3JlYWNoKCR0aXRsZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgewoJCWlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsKCQkJJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CgkJfQoJICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2Jyk7Cgl9Cglmb3JlYWNoKCRkZXNjcmlwdGlvbl9rZXl3b3JkcyBhcyAka2V5d29yZCkgewoJCWlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsKCQkJJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7CgkJfQoJICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPmdldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywnNCcpOwoJfQoJZm9yZWFjaCgkaGVhZGxpbmVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsKCQlpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7CgkJCSRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOwoJCX0KCSAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdICs9ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodCcsJzInKTsKCX0JCglmb3JlYWNoKCRjb250ZW50X2tleXdvcmRzIGFzICRrZXl3b3JkKSB7CgkJaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgewoJCQkkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsKCQl9CgkgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJzEnKTsKCX0KCQoJYXJzb3J0KCRvdGhlcl9rZXl3b3Jkcyk7CgkKCSRleGNsdWRlX2xpc3QgPSBleHBsb2RlKCcgJyxzdHJ0b3VwcGVyKHV0ZjhfZGVjb2RlKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCcnKSkpKTsJCQoJCglmb3JlYWNoICgkb3RoZXJfa2V5d29yZHMgYXMgJGtleT0+JHZhbHVlKSB7CgkgICAgaWYgKCR2YWx1ZSA8ICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywnNycpKSB7CgkgICAgICAgIHVuc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5XSk7CgkgICAgfWVsc2VpZiAoaW5fYXJyYXkoc3RydG91cHBlcigka2V5KSwkZXhjbHVkZV9saXN0KSkgewoJICAgIAl1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOwoJICAgIH0KCX0JCQoJCglyZXR1cm4gJG90aGVyX2tleXdvcmRzOwkKfQoKZnVuY3Rpb24gY3JlYXRlUm9ib3RzVFhUKCkgewkKCWdsb2JhbCAkZ0NtczsJCQoJZ2xvYmFsICRjb25maWc7CgkkZnAgPSBAZm9wZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy9yb2JvdHMudHh0JywndycpOwoJLy8gQ3JlYXRlIHJvYm90cy50eHQKCWlmICgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLCd0cnVlJykgPT0gJ3RydWUnKSB7CgkJQGZ3cml0ZSgkZnAsICJTaXRlbWFwOiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9zaXRlbWFwLnhtbFxuIik7Cgl9CglAZndyaXRlKCRmcCwgIlVzZXItYWdlbnQ6ICpcbiIpOyAgICAgCglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9jb250cmliL1xuIik7IAoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvZG9jL1xuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9saWIvXG4iKTsKCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL21vZHVsZXMvXG4iKTsgCglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9wbHVnaW5zL1xuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9zY3JpcHRzL1xuIik7CglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi90bXAvXG4iKTsKCQoJJGhtID0mICRnQ21zLT5nZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CgkvLyBWIDEuMTArCglpZiAoJHRoaXMtPmRiKSB7CgkgICRkYiA9JiAkdGhpcy0+ZGI7Cgl9ZWxzZXsgICAgICAgIAoJICAkZGIgPSYgJGdDbXMtPmRiOwoJfQoJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29scyBXSEVSRSBpbmRleGFibGUgPSAwIjsKCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCXdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsKCQkkY3Vybm9kZSA9JiAkaG0tPmdldE5vZGVCeUlkKCRwYWdlWydjb250ZW50X2lkJ10pOwogICAgICAgICRjdXJjb250ZW50ID0mICRjdXJub2RlLT5HZXRDb250ZW50KCk7CiAgICAgICAgJHVybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsKICAgICAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiR1cmwuIlxuIik7CQkKCX0KCQoJQGZjbG9zZSgkZnApOwp9CgpmdW5jdGlvbiBjcmVhdGVTaXRlbWFwKCRwdXNoID0gZmFsc2UpIHsKCWdsb2JhbCAkZ0NtczsKCWdsb2JhbCAkY29uZmlnOwogICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvc2l0ZW1hcC54bWwnLCd3Jyk7CiAgICAgICAgLy8gQ3JlYXRlIHNpdGVtYXAKCiAgICBmd3JpdGUoJGZwLCAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz5cbiIpOwogICAgZndyaXRlKCRmcCwgIjx1cmxzZXQgeG1sbnM9J2h0dHA6Ly93d3cuc2l0ZW1hcHMub3JnL3NjaGVtYXMvc2l0ZW1hcC8wLjknPlxuXG4iKTsKICAgIAoJLy8gViAxLjEwKwoJaWYgKCR0aGlzLT5kYikgewoJICAkZGIgPSYgJHRoaXMtPmRiOwoJfWVsc2V7ICAgICAgICAKCSAgJGRiID0mICRnQ21zLT5kYjsKCX0KICAgICRobSA9JiAkZ0Ntcy0+Z2V0SGllcmFyY2h5TWFuYWdlcigpOwogICAgCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBhY3RpdmUgPSAxIE9SREVSIEJZIGhpZXJhcmNoeSBBU0MnOwogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIAogICAgd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgeyAgICAJICAgICAgICAgIAkKICAgICAgJGN1cm5vZGUgPSYgJGhtLT5nZXROb2RlQnlJZCgkcGFnZVsnY29udGVudF9pZCddKTsgICAgICAgICAgIAogICAgICAKICAgICAgaWYgKCFpc19vYmplY3QoJGN1cm5vZGUpKSB7CiAgICAgIAljb250aW51ZTsKICAgICAgfQogICAgICAgICAgICAKICAgICAgJGN1cmNvbnRlbnQgPSYgJGN1cm5vZGUtPkdldENvbnRlbnQoKTsKICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJGN1cmNvbnRlbnQsICdHZXRVUkwnKSkgewogICAgICAgICR1cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7CiAgICAgICAgaWYgKCR1cmwgPT0gIiMiKSB7CiAgICAgICAgCWNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cnBvcygkdXJsLCAkY29uZmlnWydyb290X3VybCddKSA9PT0gZmFsc2UpIHsKICAgICAgICAJY29udGludWU7CiAgICAgICAgfQogICAgICAKICAgICAgICAkcHJpb3JpdHkgPSA4MDsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBzdWJzdHJfY291bnQoJHBhZ2VbJ2hpZXJhcmNoeSddLCcuJyk7ICRpKyspIHsgICAgICAKICAgICAgICAgICRwcmlvcml0eSAgPSAkcHJpb3JpdHkgLyAyOwogICAgICAgIH0KICAgICAgICBpZiAoJHBhZ2VbJ2RlZmF1bHRfY29udGVudCddID09IDEpIHsKICAgICAgICAgICRwcmlvcml0eSA9IDEwMDsKICAgICAgICB9CiAgICAgIAogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXTsKICAgICAgICAkcmVzdWx0MiA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgICAgICAkaW5mbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOwogICAgICAgIGlmIChpc3NldCgkaW5mb1sncHJpb3JpdHknXSkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9IDApICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAiIikpIHsKICAgICAgCSAgJHByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107CiAgICAgICAgfQogICAgICAgIGlmICghaXNzZXQoJGluZm9bJ2luZGV4YWJsZSddKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09ICIiKSB8fCAoJGluZm9bJ2luZGV4YWJsZSddID09IDEpKSB7ICAgICAgCiAgICAgICAgICBmd3JpdGUoJGZwLCAiPHVybD5cbiIpOwogICAgICAgICAgZndyaXRlKCRmcCwgIjxsb2M+Ii4kdXJsLiI8L2xvYz5cbiIpOwogICAgICAgICAgZndyaXRlKCRmcCwgIjxsYXN0bW9kPiIuZGF0ZSgiWS1tLWQiLCBzdHJ0b3RpbWUoJHBhZ2VbJ21vZGlmaWVkX2RhdGUnXSkpLiI8L2xhc3Rtb2Q+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8Y2hhbmdlZnJlcT5hbHdheXM8L2NoYW5nZWZyZXE+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8cHJpb3JpdHk+Ii5udW1iZXJfZm9ybWF0KCRwcmlvcml0eSAvIDEwMCwgMSkuIjwvcHJpb3JpdHk+XG4iKTsKICAgICAgICAgIGZ3cml0ZSgkZnAsICI8L3VybD5cblxuIik7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBmd3JpdGUoJGZwLCAiPC91cmxzZXQ+Iik7ICAgICAgICAgICAgCiAgICBmY2xvc2UoJGZwKTsKICAgIGlmICgkcHVzaCkgewogICAgCS8vIFB1c2ggc2l0ZW1hcCB0byBnb29nbGUKICAgIAkkZnAgPSBAZm9wZW4oImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS93ZWJtYXN0ZXJzL3Rvb2xzL3Bpbmc/c2l0ZW1hcD0iLnVybGVuY29kZSgkY29uZmlnWydyb290X3VybCddLiIvc2l0ZW1hcC54bWwiKSwiciIpOwogICAgICAgIGZjbG9zZSgkZnApOwogICAgfQp9Cgp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlIHR5cGU9J3RleHQvY3NzJz4Ke2xpdGVyYWx9CnAucGFnZXRleHQgewogIGNsZWFyOiBib3RoOwp9CmEgaW1nIHsKICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudDsKfQp7L2xpdGVyYWx9Cjwvc3R5bGU+CgoKeyRtZXNzYWdlfQoKeyR0YWJfaGVhZGVyc30KCnskc3RhcnRfc2VvYWxlcnRzX3RhYn0KeyRhbGVydHN9CnskZW5kX3RhYn0KCnskc3RhcnRfcGFnZWRlc2NyaXB0aW9uc190YWJ9CnskcGFnZXNldHRpbmdzfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X21ldGFzZXR0aW5nc190YWJ9CnskbWV0YV9mb3JtfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X3NpdGVtYXBzZXR0aW5nc190YWJ9Cnskc2l0ZW1hcF9mb3JtfQp7JGVuZF90YWJ9Cgp7JHN0YXJ0X2tleXdvcmRzZXR0aW5nc190YWJ9Cnska2V5d29yZF9mb3JtfQp7JGVuZF90YWJ9Cgp7JHRhYl9mb290ZXJzfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9]]></data>
	</file>
</module>
