<?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>FrontEndUsers</name>
	<version>1.1.2</version>
  <mincmsversion>1.0</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc3MpPC9pPi4gIEl0IGFsbG93cyBjcmVhdGlvbiBvZiB1c2VyIGdyb3VwcywgYW5kIHVzZXIgYWNjb3VudHMgYW5kIGFsbG93cyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0LiAgaXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgQ3VzdG9tQ29udGVudCBtb2R1bGUgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCB0byBkaWZmZXJlbnQgdXNlcnMgb25jZSB0aGV5IGhhdmUgbG9nZ2VkIGluPC9wPgo8aDM+RmVhdHVyZXM8L2gzPgo8dWw+CjxsaT48cD5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvcD48L2xpPgo8bGk+PHA+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHM8L3A+PC9saT4KPGxpPjxwPkNhcGFibGUgb2YgaGFuZGxpbmcgaHVuZHJlZHMgb2YgdXNlcnM8L3A+PC9saT4KPGxpPjxwPkhhcyBhbiBleHRlbnNpdmUgQVBJIGZvciBhZGRpbmcgZnVuY3Rpb25hbGl0eTwvcD48L2xpPgo8L3VsPgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHVsPgo8bGk+PHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJiBnR3JvdXBzJnF1b3Q7IG1lbnUuPC9wPjwvbGk+CjxsaT4KPHA+U2Vjb25kbHksIHlvdSBzaG91bGQgZGVmaW5lIHByb3BlcnRpZXMuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIEVtYWlsIGFkZHJlc3MsIGV0Yy48L3A+CjxwPjxiPk5vdGU6PC9iPiBZb3UgZG8gbm90IG5lZWQgdG8gZGVmaW5lIHByb3BlcnRpZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgdGhlc2Ugd2lsbCBiZSBwcm92aWRlZCBmb3IgeW91PC9iPgo8L2xpPgo8bGk+PHA+TmV4dCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2V0aGVyIGl0IGlzIGFuIG9wdGlvbmFsLCByZXF1aXJlZCwgb3IgaGlkZGVuIGZpZWxkIDxpPihvZmYgaXMgYWxzbyB2YWxpZCk8L2k+PC9wPjwvbGk+CjxsaT48cD48Yj5Ob3RlOjwvYj4gQmVmb3JlIHByb2NlZWRpbmcsIHlvdSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIHByZWZlcmVuY2VzIGFyZSBzZXQgY29ycmVjdGx5LjwvcD48L2xpPgo8bGk+PHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrIFwnTmV4dFwnPC9wPgo8cD48ZW0+Tm90ZTogPC9lbT5UaGlzIGlzIGEgbGFib3VyIGludGVuc2l2ZSBhbmQgYm9yaW5nIHByb2Nlc3MsIGl0IGlzIGVhc2llciB0byBsZXQgdXNlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcywgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlc3Qgb25lIHVzZXI8L3A+PC9saT4KPGxpPjxwPkxhc3RseSwgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGZpZWxkcyB0byBiZSBwcmVzZW50ZWQgZm9yIHRoYXQgdXNlciwgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGZvcm0gYXNraW5nIGZvciBhbGwgb2YgdGhlIHJlcXVpcmVkIHVzZXIgaW5mb3JtYXRpb24uICBDb21wbGV0ZSB0aGlzIGZvcm0gdG8gY29tcGxldGUgdGhlIHVzZXIgYWRkaXRpb248L3A+PC9saT4KPGxpPjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSB7Y21zX21vZHVsZSBtb2R1bGU9RnJvbnRFbmRVc2Vyc30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZTwvcD48L2xpPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVwncwptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0iaHR0cDovL3RlY2hjb20uZHluZG5zLm9yZyI+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0ibmFtZSI8L2xpPgo8cD5Gb3JtczoKPHVsPgogPGxpPjxlbT5sb2dpbjwvZW0+IC0gRGlzcGxheSB0aGUgbG9naW4gZm9ybTwvbGk+CiA8bGk+PGVtPmxvZ291dDwvZW0+IC0gRGlzcGxheSB0aGUgbG9nb3V0IGZvcm08L2xpPgogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPgogPGxpPjxlbT5mb3Jnb3RwdzwvZW0+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm08L2xpPgo8bGk+PGVtPnNpbGVudDwvZW0+ID0gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+CjwvdWw+CjwvcD4KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG89InBhZ2UiPC9saT4KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPgo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3Vwcz0iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyI8L2xpPgo8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGZvcm1zLiAgQmFzaWNhbGx5IG9ubHkgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGlmIHRoZXkgYmVsb25nIHRvIHRoYXQgcGFydGljdWxhciBncm91cChzKS48L3A+CjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNhcHRjaGE9IjEiPC9saT4KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy4gVGhpcyB3aWxsIGVuYWJsZSBjYXB0Y2hhIG9uIHRoZSBmb3JtLiBUaGUgQ2FwdGNoYSBtb2R1bGUgbXVzdCBiZSBpbnN0YWxsZWQgZm9yIHRoaXMgcGFyYW1ldGVyIHRvIHdvcmsuPC9wPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHA+SW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eSwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhlIENNU01haWxlciBtb2R1bGUgdG8gYmUgcHJldmlvdXNseSBpbnN0YWxsZWQ8L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tIj4mbHQ7Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+PGgzPkRlcGVuZGVuY2llczwvaDM+PHVsPjxsaT5DTVNNYWlsZXIgPSZndDsgMS43My4zPC9saT48L3VsPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+</help>
	<about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMS4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+MC4wLjEgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCBOUlBUIChOb3QgUmVhZHkgZm9yIFByaW1lIFRpbWUpIHJlbGVhc2U8L2xpPgo8bGk+MC4xLjAgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCByZWxlYXNlPC9saT4KPGxpPjAuMS4xIC0gT2N0b2JlciwgMjAwNSAtIEZpeGVkIGlzc3VlcyB3aXRoIHByb3BlcnRpZXM8L2xpPgo8bGk+MC4xLjIgLSBPY3RvYmVyLCAyMDA1IC0gQWRkZWQgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHk8L2xpPgo8bGk+PHA+MC4xLjMgLSBOb3ZlbWJlciwgMjAwNTwvcD4KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSByZWRpcmVjdCBwYWdlIG9uIGxvZ2luLCBsb2dvdXQsIGZvcmdvdCBwYXNzd29yZCwgYW5kIGNoYW5nZSBzZXR0aW5ncywgYW5kIGFkZGVkIHRoZSByZXR1cm50byBhbmQgZm9ybSBwYXJhbWV0ZXJzIHRvIHRoZSB1c2VyIHNpZGUgb2YgdGhpbmdzLCBhbHNvIGRpZCBhIGNvdXBsZSBsZiBsaXR0bGUgY2xlYW51cHMuICBUaGlzIHZlcnNpb24gcmVxdWlyZXMgdjAuMTEgYW5kIGFib3ZlIGZvciBjZXJ0YWluLjwvcD48L2xpPgo8bGk+MC4xLjQgLSBOb3ZlbWJlciwgMjAwNSAtIFZlcnkgbWlub3IgY2hhbmdlIHdpdGggcmVzcGVjdCB0byBhIGZvcmdvdHRlbiBhbmQgbm8gbG9uZ2VyIG5lZWRlZCBmdW5jdGlvbiBjYWxsPC9saT4KPGxpPjxwPjAuMS41IC0gTm92ZW1iZXIsIDIwMDU8L3A+CiAgICA8cD5Bbm90aGVyIHZlcnkgbWlub3IgY2hhbmdlLCBhZGRlZCBzb21lIHRleHQgdG8gdGhlIFBvc3RJbnN0YWxsIG1lc3NhZ2UuPC9wPjwvbGk+CjxsaT48cD4wLjEuNiAtIEphbnVhcnksIDIwMDY8cD4KICAgIDxwPkNoYW5nZXMgdG8gdGhlIHBlcm1pc3Npb24gbW9kZWwsIGFuZCBtaW5vciBidWcgZml4ZXMgdG8gdGhlIHByZWZlcmVuY2VzLiAgQWxzbyBzb21lIHBocDUgZml4ZXMgYnV0IEkgYW0gc3VyZSB0aGF0IHRoZXJlIGFyZSBtb3JlIG91dCB0aGVyZS48L3A+PC9saT4KPGxpPjxwPjAuMS43IC0gSmFudWFyeSwgMjAwNjxwPgogICAgPHA+TWFueSB0aGFua3MgdG8gPGI+a2F0b248L2I+IGZvciBhZGRpbmcgdGhlIHRleHRhcmVhIGFuZCBkcm9wZG93biBwcm9wZXJ0eSB0eXBlcy48L3A+CiAgICA8cD5GaXhlcyB0byB0aGUgcHJvcGVydHkgYWRkaW5nIHRvIGZpeCBwcm9ibGVtcyB3aXRoIHNwYWNlcyBpbiBwcm9wZXJ0eSBuYW1lcyAod2Ugbm8gbG9uZ2VyIGxldCB0aGF0IGhhcHBlbikuPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjAgLSBGZWJydWFyeSwgMjAwNjxwPgogICAgPHA+QWRkZWQgZmlsdGVyaW5nIGFuZCByb3cgbGltaXRpbmcgdG8gdGhlIGFkbWluIHBhbmVsLiBUaGlzIHdpbGwgaGF2ZSBiaWcgYmVuZWZpdHMgdG8gdGhvc2UgdGhhdCBhcmUgdXNpbmcgdGhpcyBtb2R1bGUgZm9yIGhpZ2ggdHJhZmljLCBhbmQgaGlnaCB1c2VyIHNpdGVzLjwvcD4KICAgIDxwPkFkZGVkIHNvcnRpbmcgdG8gdGhlIGFkbWluIHBhbmVsPC9wPgogICAgPHA+QWRkZWQgbWF4IGxlbmd0aCBhYmlsaXR5IHRvIHRleHQgYW5kIGVtYWlsIGZpZWxkczwvcD4KICAgIDxwPkZpeGVkIGEgc21hbGwgcHJvYmxlbSB3aXRoIHRoZSBkZWZhdWx0IGdyb3VwIG5vdCBiZWluZyBjaGVja2VkIHdoZW4gYWRkaW5nIGEgdXNlcjwvcD4KICAgIDxwPlNhdmUgZmlsdGVyIHNldHRpbmdzIGluIHByZWZlcmVuY2VzLCBhbmQgdGhlIGFjdGl2ZSB0YWIgdG9vLjwvcD4KICAgIDxwPkRlbGV0ZSB1c2VyIHByb3BlcnRpZXMgd2hlbiBhIHByb3BlcnR5IGlzIGRlbGV0ZWQgPGVtPk5vdGU8L2VtPiwgbm90IHdoZW4gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIGVkaXQgZ3JvdXAgZGlhbG9nPC9wPgogICAgPHA+QWRkIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGluIGVkaXQgZ3JvdXBzLjwvcD4KICAgIDxwPkFkZGVkIGEgY291cGxlIG1vcmUgY29uZmlybWF0aW9uIG1lc3NhZ2VzLjwvcD4KICAgIDxwPkFkZGVkIENTViBFeHBvcnQgb3B0aW9uPC9wPgogICAgPHA+VG9kbyAtIEFkZCBwcmVmZXJlbmNlcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkbGVuZ3RoPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjEgLSBNYXJjaCwgMjAwNjxwPgogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZSBlbWFpbCBhZGRyZXNzZXM8L3A+CiAgICA8cD5GaXggcHJvYmxlbSB3aGVyZSBleHBpcnkgZGF0ZSB3YXMgYmVpbmcgbW9kaWZpZWQgd2hlbiBhZG1pbiBtb2RpZmllZCB1c2VyIHNldHRpbmdzPC9wPgogICAgPHA+QWRkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIHN1Ym1pdCBidXR0b248L3A+CiAgICA8cD5GaXhlZCBhIG1pbm9yIGJ1ZyB3aGVuIGNvdXRpbmcgdGhlIG51bWJlciBvZiB1c2VycyBpbiBhIGdyb3VwPC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIHNpemUgb2YgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkcywgYW5kIG1heGxlbmd0aDwvcD4KICAgIDxwPkFkZGVkIGFkdmFuY2VkIGZpbHRlcmluZyBvbiBwcm9wZXJ0aWVzPC9wPgogICAgPHA+Q2hhbmdlcyB0byBsYWJlbGluZyBpbiBhZGQgb3IgZWRpdCB1c2VyPC9wPgogICAgPHA+Rml4ZXMgdG8gcHJvYmxlbXMgd2l0aCBpbmxpbmUgYW5kIG5vbiBpbmxpbmUgZm9ybXMsIHRoZSBwYXNzd29yZCBpcyBuZXZlciBzZW50IG9uIHRoZSBnZXQgbGluZTwvcD4KICAgIDxwPkNoYW5nZWQgdG8gcmVxdWlyZSBDTVMgMC4xMi1iZXRhMiBhdCBhIG1pbmltdW0gKGZvciBzYWZldHkgcHVycG9zZXMpPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjIgLSBNYXJjaCwgMjAwNjxwPgogICAgPHA+TW9yZSBmaWVsZCBsZW5ndGggZml4ZXM8L3A+CjwvbGk+CjxsaT48cD4xLjAuMyAtIE1hcmNoLCAyMDA2PHA+CiAgICA8cD5FeHBvcnQgdG8gc21hcnR5IGFsbCBvZiB0aGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gdGhleSBhcmUgbG9nZ2VkIGluPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjQgLSBNYXksIDIwMDY8cD4KICAgIDxwPkZpeGVzIHRvIHRoZSBleHBvcnQgY29kZTwvcD4KICAgIDxwPkNvZGUgY2xlYW51cCAoYWxwaGFiZXRpemUgZnVuY3Rpb25zKTwvcD4KICAgIDxwPk1pbm9yIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgKHJlY29tbWVuZGVkIGJ5IG5pbHM3MykgZm9yIGRlYWxpbmcgd2l0aCB0aGUgY2hhbmdlIHBhc3N3b3JkIHN0dWZmLjwvcD4KICAgIDxwPlJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IGZvciBDTVMgMC4xMiwgYW5kIHB1dCBpdCBiYWNrIHRvIDAuMTEuMjwvcD4KICAgIDxwPkFkZGVkIHRoZSBcJ3NpbGVudFwnIGZvcm08L3A+CiAgICA8cD5DbGVhbmVkIHVwIGRhdGFiYXNlIGFjY2VzcyBzdHVmZiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAoaG9wZWZ1bGx5KTwvcD4KICAgIDxwPkFkZGVkIGNvcHlyaWdodCBpbmZvPC9wPgogICAgPHA+QWRkZWQgbWFjcm9zIGZvciByZWRpcmVjdG8gdG8gYSB1c2VyIHNwZWNpZmljIHBhZ2Ugb24gbG9naW4gb3IgbG9nb3V0PC9wPgogICAgPHA+VHdlYWtzIHRvIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyB0YWI8L3A+CjwvbGk+CjxsaT48cD4xLjAuNSAtIE1heSwgMjAwNjwvcD4KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGV4cGlyeSBkYXRlczwvcD4KICAgIDxwPlN0YXJ0IHNwbGl0dGluZyB0aGUgY29kZSB1cCBpbnRvIHNldmVyYWwgZmlsZXM8L3A+CjxsaT48cD4xLjAuNiAtIE1heSwgMjAwNjwvcD4KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGVkaXRpbmcgZHJvcGRvd25zPC9wPgo8L2xpPgo8bGk+PHA+MS4xLjAgLSBNYXksIDIwMDY8L3A+CiAgICA8cD5FdmVudHM8L3A+CiAgICA8cD5PcHRpb25hbGx5IGRpc2FsbG93IHJlcGVhdGVkIGxvZ2luczwvcD4KICAgIDxwPkV4cG9ydCB0aGUgdXNlciBpZCB0byBzbWFydHk8L3A+CiAgICA8cD5BZGRlZCBvcHRpb25hbGx5IHskZ3JvdXBcfSBmb3IgdGhlIHBhZ2VzIHRvIGp1bXAgdG8gb24gbG9naW48L3A+CjwvbGk+CjxsaT48cD4xLjEuMSAtIFNlcHQsIDIwMDY8L3A+CiAgICA8cD5GaXhlZCBhIGJ1ZyB3aGVuIGEgdXNlciB3YXMgZWRpdGluZyBoaXMgc2V0dGluZ3Mgd2l0aCBcJ2FsbG93IGR1cGxpY2F0ZSBlbWFpbHNcJyB3YXMgb2ZmPC9wPgogICAgPHA+Q2hhbmdlZCB0aGUgZHJvcGRvd24gdGFibGUgdG8gMjU1IGNoYXJhY3RlcnM8L3A+CiAgICA8cD5NaW5vciBjbGVhbnVwczwvcD4KPC9saT4KPGxpPjxwPjEuMS4yIC0gRGVjLCAyMDA2PC9wPgogICAgPHA+Rml4ZXMgKGhvcGVmdWxsKSB0byB0aGUgYWRvZGIvYWRvZGItbGl0ZSBEQVRFVElNRSBpc3N1ZTwvcD4KICAgIDxwPkFkZCBjYXB0Y2hhIHN1cHBvcnQgdG8gdGhlIGxvZ2luIHNjcmVlbiAob3B0aW9uYWwpLCB0aGFua3MgZGl0dG1hbjwvcD4KICAgIDxwPkZpeGVzIHRvIGNhbmNlbCBoYW5kbGluZyBvbiB0aGUgbG9zdCBwYXNzd29yZCBhbmQgY2hhbmdlIHNldHRpbmdzIHNjcmVlbnM8L3A+CiAgICA8cD5GaXhlcyB0byB1c2VyIGV4cGlyeSAobW9yZSBEQlRpbWVzdGFtcCBpc3N1ZXMpLCB0aGFua3MgYWdhaW4gZGl0dG1hbjwvcD4KICAgIDxwPk9wdGlvbiB0byBhbGxvdyBGRVVzZXJzIHRvIGhhdmUgaXRzIG93biBzZXQgb2YgcGVybWlzc2lvbnMgYXNzaWRlIGZyb20gdGhlIGFkbWluIHBlcm1pc3Npb25zLiAgVGhhbmtzIF9TakdfPC9wPgogICAgPHA+T3B0aW9uIHRvIGFsbG93IGR1cGxpY2F0ZSBwYXNzd29yZCByZW1pbmRlciByZXF1ZXN0cyBhbmQgdG8gc3BlY2lmeSB0ZXh0IG9uIHRoZSBzaWduaW4gYnV0dG9uLiAgVGhhbmtzIF9TakdfPC9wPgogICAgPHA+R2VuZXJhbCBjbGVhbnVwIG9mIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbm90IGJlaW5nIHVzZWQgYW5kIG5vdGljZXMvd2FybmluZ3M8L3A+CiAgICA8cD5BZGRlZCB0aGUgb25seV9ncm91cHMgcGFyYW0gZm9yIGxvZ2luIGZvcm1zLiAgVGhhbmtzIHdpc2h5PC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIGxlbmd0aCBvZiB0aGUgZW1haWwgZmllbGQgaW4gdGhlIGNoYW5nZSBwYXNzd29yZCBmb3JtPC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIGVtYWlsIHZhbGlkYXRpb24gc3R1ZmY8L3A+CjwvbGk+CjxiciAvPg==</about>
	<description>Allow users to log in to the frontend of your site</description>
	<requires>
	  <requiredname>CMSMailer</requiredname>
	  <requiredversion>1.73.3</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/FrontEndUsers.api.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKcmVxdWlyZV9vbmNlKCAiVXNlck1hbmlwdWxhdG9yLmNsYXNzLnBocCIgKTsKCmNsYXNzIEZyb250RW5kVXNlcnNNYW5pcHVsYXRvciBleHRlbmRzIFVzZXJNYW5pcHVsYXRvcgp7CiAgZnVuY3Rpb24gQ291bnRUZW1wQ29kZVJlY29yZHMoKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREQigpOwogICAgJHEgPSAiU0VMRUNUIENPVU5UKCopIEFTIGNvdW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3RlbXBjb2RlIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIDA7CiAgICAgIH0KICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICByZXR1cm4gJHJvd1snY291bnQnXTsKICB9CgogIGZ1bmN0aW9uIEV4cGlyZVRlbXBDb2RlcygkZXhwaXJ5Y29kZSkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkZXhwaXJlcyA9IHN0cnRvdGltZSggJGV4cGlyeWNvZGUgKTsKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc190ZW1wY29kZQogICAgICAgICAgV0hFUkUgY3JlYXRlZCA+ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRleHBpcmVzICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHRydWU7ICAgIAogIH0KCiAgZnVuY3Rpb24gUmVtb3ZlVXNlclRlbXBDb2RlKCAkdWlkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdGVtcGNvZGUKICAgICAgICAgIFdIRVJFIHVzZXJpZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICR1aWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICBmdW5jdGlvbiBHZXRVc2VyVGVtcENvZGUoICR1aWQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3RlbXBjb2RlCiAgICAgICAgICBXSEVSRSB1c2VyaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdWlkICkpOwogICAgaWYoICRkYnJlc3VsdCA9PSBGQUxTRSB8fCAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgcmV0dXJuIGFycmF5KFRSVUUsJHJvdyk7CiAgfQoKCiAgZnVuY3Rpb24gU2V0VXNlclRlbXBDb2RlKCAkdWlkLCAkY29kZSwgJHJlcGxhY2U9ZmFsc2UgKQogIHsKICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdGVtcGNvZGUKICAgICAgICAgIFZBTFVFUyg/LD8sPykiOwogICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCwgJGNvZGUsCgkJCQkJIHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCInIikgKSApOwoKCSBpZiggJGRicmVzdWx0ID09IGZhbHNlICkKICAgIAl7CgkJaWYgKCRyZXBsYWNlKQoJCQl7CiAgICAJCSRxID0gInVwZGF0ZSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdGVtcGNvZGUKICAgICAgICAgIHNldCBjb2RlPT8sIGNyZWF0ZWQ9PyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCRjb2RlLAoJCQkJCSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwiJyIpLCR1aWQgKSApOwoJCQlpZiAoJGRicmVzdWx0ID09IGZhbHNlKQoJCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkgCWVsc2UKCSAgIAl7CgkJCXJldHVybiBmYWxzZTsKICAgICAgCX0KICAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm4oICRuYW1lLCAkbmV3bmFtZSwgJHByb21wdCwgJGxlbmd0aCwgJHR5cGUsICRtYXhsZW5ndGggPSAwICkKICB7CiAgICAkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKICAgIAogICAgaWYoICRtYXhsZW5ndGggPT0gMCApCiAgICAgIHsKCSRtYXhsZW5ndGggPSAkbGVuZ3RoOwogICAgICB9CiAgICAkcSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BkZWZuCiAgICAgICAgICBTRVQgbmFtZSA9ID8sIHByb21wdCA9ID8sIHR5cGUgPSA/LCBsZW5ndGggPSA/LCBtYXhsZW5ndGggPSA/IAogICAgICAgICAgV0hFUkUgbmFtZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRuZXduYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCwgJG5hbWUgKSk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZuKCAkbmFtZSApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZGVmbgogICAgICAgICAgV0hFUkUgbmFtZT0/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkbmFtZSApICk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgZnVuY3Rpb24gR2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucyggJHRpdGxlICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CgogICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBwcm9wbWFwCiAgICAgICAgICBXSEVSRSBuYW1lID0gPyBPUkRFUiBCWSBzb3J0X2tleSBERVNDIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdGl0bGUgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgJHJlc3VsdCA9IGFycmF5KCk7CiAgICB3aGlsZSggJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCiAgICAgIHsKCWFycmF5X3B1c2goICRyZXN1bHQsICRyb3cgKTsKICAgICAgfQogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQoKCiAgZnVuY3Rpb24gSXNBY2NvdW50RXhwaXJlZCggJHVpZCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycwogICAgICAgICAgV0hFUkUgaWQgPSA/IEFORCBleHBpcmVzID4gPyI7CiAgICAkcGFybXMgPSBhcnJheSggJHVpZCwgJGRiLT5EYlRpbWVTdGFtcCh0aW1lKCksIiciKSApOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICR1aWQsIAoJCQkJCSAkZGItPkRiVGltZVN0YW1wKHRpbWUoKSwiJyIpICkgKTsKICAgIGlmKCAkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDEgKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICBmdW5jdGlvbiBHZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHByb3BtYXAKICAgICAgICAgIFdIRVJFIGdyb3VwX2lkID0gPyBPUkRFUiBCWSBzb3J0X2tleSBERVNDIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkZ3JwaWQgKSk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJJHJlc3VsdFtdID0gJHJvdzsKICAgICAgfQogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQoKCiAgZnVuY3Rpb24gQWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICR2YWwgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBwcm9wbWFwCiAgICAgICAgICBWQUxVRVMoPyw/LD8sPykiOyAKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkcHJvcG5hbWUsICRncnBpZCwgJHNvcnRrZXksICR2YWwgKSk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICByZXR1cm4gYXJyYXkoVFJVRSk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdycGlkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHByb3BtYXAKICAgICAgICAgIFdIRVJFIGdyb3VwX2lkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGdycGlkICkpOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgcmV0dXJuIGFycmF5KFRSVUUpOwogIH0KCgogIGZ1bmN0aW9uIERlbGV0ZUdyb3VwUHJvcGVydHlSZWxhdGlvbiggJGdycGlkLCAkcHJvcG5hbWUgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBwcm9wbWFwCiAgICAgICAgICBXSEVSRSBuYW1lID0gPyBBTkQgZ3JvdXBfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkcHJvcG5hbWUsICRncnBpZCApKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgIHJldHVybiBhcnJheShUUlVFKTsKICB9CgoKICBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCA9IDAgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICBpZiggJG1heGxlbmd0aCA9PSAwICkKICAgICAgewoJJG1heGxlbmd0aCA9PSAkbGVuZ3RoOwogICAgICB9CgogICAgJHAgPSBhcnJheSggJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoICk7CiAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGRlZm4KICAgICAgICAgIFZBTFVFUyAoPyw/LD8sPyw/KSI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCAkcCApOwogICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwgJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgcmV0dXJuIGFycmF5KFRSVUUpOwogIH0KCgogIGZ1bmN0aW9uIEFkZFNlbGVjdE9wdGlvbnMoICRuYW1lLCAkb3B0aW9ucyApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJGluc2VydF92YWxzID0gJyc7CiAgICAkb3JkZXJfaWQgPSAwOwogICAgZm9yZWFjaCAoJG9wdGlvbnMgYXMgJG9wdHRleHQpewogICAgICAvLyBpZiBubyBhY3R1YWwgdGV4dCBpbiB0aGUgbGluZSwgbWFrZSBzdXJlIGl0IGVxdWFscyAnJywKICAgICAgLy8gaW4gb3JkZXIgbm90IHRvIGFkZCBpdCB0byB0aGUgZGIKICAgICAgJG9wdHRleHQgPSB0cmltKCRvcHR0ZXh0KTsKICAgICAgaWYodHJpbSgkb3B0dGV4dCkgPT0gJycgfHwgdHJpbSgkb3B0dGV4dCkgPT0gJ19fJyApewoJY29udGludWU7CiAgICAgIH0KICAgICAgJG9wdG5hbWUgPSBzdHJfcmVwbGFjZSgnICcsICdfJywgJG9wdHRleHQpOwogICAgICAkb3JkZXJfaWQrKzsKICAgICAgJGluc2VydF92YWxzIC49ICIoJyIKCS4gJG9yZGVyX2lkIC4gIicsICciCgkuICRvcHRuYW1lIC4gIicsICciCgkuICRvcHR0ZXh0IC4gIicsICciCgkuICRuYW1lLiAiJyksICI7CiAgICB9CiAgICAKICAgICRpbnNlcnRfdmFscyA9IHN1YnN0cigkaW5zZXJ0X3ZhbHMsIDAsIC0yKTsKCiAgICAkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZHJvcGRvd25zCgkJCShvcmRlcl9pZCwgb3B0aW9uX25hbWUsIG9wdGlvbl90ZXh0LCBjb250cm9sX25hbWUpIAoJCQlWQUxVRVMgIiAuICRpbnNlcnRfdmFsczsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApIHsKICAgICAgcmV0dXJuIGFycmF5KEZBTFNFLCAkZGItPkVycm9yTXNnKCkpOwogICAgfQogICAgcmV0dXJuIGFycmF5KFRSVUUpOwogIH0KCQkKCiAgCiAgCiAgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZucygpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHEgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BkZWZuIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEgKTsKICAgIGlmKCAkZGJyZXN1bHQgPT0gZmFsc2UgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgcmV0dXJuIGFycmF5KFRSVUUpOwogIH0KCgogIGZ1bmN0aW9uIERlbGV0ZVNlbGVjdE9wdGlvbnMoICRuYW1lICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZHJvcGRvd25zCiAgICAgICAgICBXSEVSRSBjb250cm9sX25hbWUgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkbmFtZSApICk7CiAgICBpZiggJGRicmVzdWx0ID09IGZhbHNlICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgIHJldHVybiBhcnJheShUUlVFKTsKICB9CgoKICBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm4oICRuYW1lICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BkZWZuCiAgICAgICAgICBXSEVSRSBuYW1lID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUgKSApOwogICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIGlmKCAkcm93ICkKICAgICAgewoJcmV0dXJuICRyb3c7CiAgICAgIH0KICAgIGVsc2UKICAgICAgcmV0dXJuIEZBTFNFOwogIH0KCiAgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZucygpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZGVmbiI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxICk7CiAgICBpZiggJGRicmVzdWx0ID09IGZhbHNlICkKICAgICAgewoJcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAkcmV0ID0gYXJyYXkoKTsKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJYXJyYXlfcHVzaCggJHJldCwgJHJvdyApOwogICAgICB9CiAgICByZXR1cm4gJHJldDsKICB9CgogIC8qKgogICAqIFJldHVybnMgc2VsZWN0IG9wdGlvbnMgYXMgYSBzaW1wbGUgb3IgYSAyIGRpbWVuc2lvbmFsIGFycmF5CiAgICoKICAgKiBAcGFyYW0gU3RyaW5nICRjb250cm9sbmFtZSAtIG5hbWUgb2YgdGhlIGRyb3Bkb3duIGFzIGluIHRoZSBwcm9wZGVmbiB0YWJsZQogICAqIEBwYXJhbSBpbnQgJGRpbSAtIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkKICAgKiAJaWYgJGRpbSA9PSAxLCByZXR1cm5zIGEgMSBkaW1lbnNpb25hbCBhcnJheSBuYW1lPT50ZXh0CiAgICogICAgaWYgJGRpbSA9PSAyLCByZXR1cm5zIGEgMiBkaW1lbnNpb25hbCBhcnJheSwgZWFjaCBpdGVtIGJlaW5nIGFuCiAgICogCQlhcnJheSB3aXRoIHByb3BlcnRpZXMgJ29wdGlvbl9uYW1lJywgJ29wdGlvbl90ZXh0JywgJ2NvbnRyb2xfbmFtZScuCiAgICovCiAgZnVuY3Rpb24gR2V0U2VsZWN0T3B0aW9ucyggJGNvbnRyb2xuYW1lLCAkZGltPTEgKQogIHsKCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQoJJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZHJvcGRvd25zCgkJV0hFUkUgY29udHJvbF9uYW1lID0gPyBPUkRFUiBCWSBvcmRlcl9pZCI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSgkY29udHJvbG5hbWUpICk7CglpZiggJGRicmVzdWx0ID09IGZhbHNlICkgewoJCXJldHVybiBmYWxzZTsKCX0KCSRyZXQgPSBhcnJheSgpOwoJd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7CgkJaWYgKCRkaW09PTIpewoJCSAgYXJyYXlfcHVzaCggJHJldCwgJHJvdyApOwoJCX0gZWxzZSB7CgkJICAkcmV0WyRyb3dbJ29wdGlvbl9uYW1lJ11dID0gJHJvd1snb3B0aW9uX3RleHQnXTsKCQl9Cgl9CglyZXR1cm4gJHJldDsKICB9CgogIAogIGZ1bmN0aW9uIExvZ2luKCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcyA9ICcnICkKICB7CiAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgaWYoICEkdGhpcy0+Q2hlY2tQYXNzd29yZCggJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgKSApCiAgICAgIHsKCSRyZXN1bHQgPSBhcnJheShGQUxTRSwkbW9kLT5MYW5nKCdlcnJvcl9sb2dpbmZhaWxlZCcpKTsKCXVuc2V0KCAkZ0Ntcy0+Y29uZmlnWydyY2RlYnVnJ10gKTsgLy8gZGVidWcKCXJldHVybiAkcmVzdWx0OwogICAgICB9CgogICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoICR1c2VybmFtZSApOwoKICAgIGlmKCAkdGhpcy0+SXNBY2NvdW50RXhwaXJlZCggJHVpZCApICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRtb2QtPkxhbmcoJ2Vycm9yX2FjY291bnRleHBpcmVkJykpOwogICAgICB9CgogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgaWYoICRtb2QtPkdldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycpID09IDAgKQogICAgICB7CgkvLyBtYWtlIHN1cmUgdGhpcyB1c2VyIGlzbid0IGFscmVhZHkgbG9nZ2VkIGluCgkkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19sb2dnZWQgV0hFUkUgCiAgICAgICAgICAgICAgVVNFUklEID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCApICk7CglpZiggJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSApCgkgIHsKCSAgICByZXR1cm4gYXJyYXkoRkFMU0UsJG1vZC0+TGFuZygnZXJyb3Jfbm9yZXBlYXRlZGxvZ2lucycpKTsKCSAgfQogICAgICB9CgogICAgJHEgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2xvZ2dlZGluIFZBTFVFUyAoPyw/LD8pIjsKCiAgICAvKiB3ZSBtYXkgbmVlZCB0byBzdGFydCBhIHNlc3Npb24gbm93ICovCiAgICBpZiggc2Vzc2lvbl9pZCgpID09ICIiICkKICAgICAgewogICAgICAgIHNlc3Npb25fc3RhcnQoKTsKICAgICAgfQoKICAgIC8vIGxvZyB0aGUgdXNlciBpbgogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoIHNlc3Npb25faWQoKSwgdGltZSgpLCAkdWlkICkpOwogICAgaWYoICEkZGJyZXN1bHQgKSAKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCAkZGItPkVycm9yTXNnKCkpOwogICAgICB9CgogICAgLy8gYW5kIGFkZCBoaXN0b3J5IGluZm8KICAgICRxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19oaXN0b3J5IFZBTFVFUyAoPyw/LD8sPykiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICR1aWQsIHNlc3Npb25faWQoKSwgJ2xvZ2luJywKCQkJCQkgdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksIiciKSApKTsKICAgIHJldHVybiBhcnJheSgkdWlkKTsKICB9CgoKICBmdW5jdGlvbiBGZXVzZXJzTWFuaXB1bGF0b3IoICR0aGVfbW9kdWxlICkKICB7CiAgICBwYXJlbnQ6OlVzZXJNYW5pcHVsYXRvciggJHRoZV9tb2R1bGUgKTsKICB9CgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICAvLyByZXR1cm5zIHRydWUvZmF1c2UKICBmdW5jdGlvbiBDaGVja0dyb3VwUGVybWlzc2lvbiggJGdpZCwgJHBlcm0gKQogIHsKICAgIC8vIHdlIGFsd2F5cyBoYXZlIHRvIHJldHVybiBmYWxzZSB1c2luZyB0aGlzIG1lY2hhbmlzbSAKICAgIC8vIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGRpZmZlcmVudCB0YWJsZXMgdGhhbiB3aXNoeSBpcyB1c2luZyBmb3IgCiAgICAvLyB1c2VycyBhbmQgZ3JvdXBzCiAgICByZXR1cm4gZmFsc2U7Ci8vICAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKLy8gICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuInBlcm1pc3Npb25zIFdIRVJFIHBlcm1pc3Npb25fbmFtZSA9ID8iOwovLyAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRwZXJtICkgKTsKLy8gICAgIGlmKCAhJGRicmVzdWx0IHx8ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwICkgcmV0dXJuIGZhbHNlOwoKLy8gICAgICRwcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwovLyAgICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4iZ3JvdXBfcGVybXMgV0hFUkUgcGVybWlzc2lvbl9pZCA9ID8KLy8gICAgICAgICAgIEFORCBncm91cF9pZCA9ID8iOwovLyAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRwcm93WydwZXJtaXNzaW9uX2lkJ10sICRnaWQgKSApOwovLyAgICAgaWYoICEkZGJyZXN1bHQgfHwgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDAgKSByZXR1cm4gZmFsc2U7CgovLyAgICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogIGZ1bmN0aW9uIENoZWNrVXNlclBlcm1pc3Npb24oICRwZXJtICkKICB7CiAgICAkdWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIGlmKCAkaWQgPT0gZmFsc2UgKSByZXR1cm4gZmFsc2U7CgogICAgcmV0dXJuIENoZWNrVXNlclBlcm1pc3Npb25CeVVpZCggJHVpZCwgJHBlcm0gKTsKICB9CgoKICBmdW5jdGlvbiBDaGVja1VzZXJQZXJtaXNzaW9uQnlVaWQoICR1aWQsICRwZXJtICkKICB7CiAgICAvLyB3ZSBhbHdheXMgaGF2ZSB0byByZXR1cm4gZmFsc2UgdXNpbmcgdGhpcyBtZWNoYW5pc20gCiAgICAvLyBiZWNhdXNlIHdlIGFyZSB1c2luZyBkaWZmZXJlbnQgdGFibGVzIHRoYW4gd2lzaHkgaXMgdXNpbmcgZm9yIAogICAgLy8gdXNlcnMgYW5kIGdyb3VwcwogICAgcmV0dXJuIGZhbHNlOwovLyAgICAgLy8gaWYgdGhlIHVzZXIgYmVsb25ncyB0byBhIGdyb3VwIHRoYXQgaGFzIHRoZSBwZXJtaXNzaW9uLCB3ZSdyZSBsYXVnaGluZwovLyAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwovLyAgICAgaWYoICRncm91cHMgPT0gZmFsc2UgKSByZXR1cm4gZmFsc2U7CiAgICAKLy8gICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy8gICAgICRxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuInBlcm1pc3Npb25zIFdIRVJFIHBlcm1pc3Npb25fbmFtZSA9ID8iOwovLyAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRwZXJtICkgKTsKLy8gICAgIGlmKCAhJGRicmVzdWx0IHx8ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwICkgcmV0dXJuIGZhbHNlOwovLyAgICAgJHByb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgovLyAgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkZ3JvdXAgKQovLyAgICAgewovLyAgICAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJncm91cF9wZXJtcyBXSEVSRSBwZXJtaXNzaW9uX2lkID0gPwovLyAgICAgICAgICAgQU5EIGdyb3VwX2lkID0gPyI7Ci8vICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkcHJvd1sncGVybWlzc2lvbl9pZCddLCAkZ2lkICkgKTsKLy8gICAgICAgaWYoICRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwICkgcmV0dXJuIHRydWU7ICAgICAgCi8vICAgICB9CgovLyAgICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICAvLyByZXR1cm5zIHRydWUvZmFsc2UKICBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApCiAgewogICAgLy8gdmFsaWRhdGUgdGhlIHVzZXIgaWQKICAgIGlmKCAhJHRoaXMtPlVzZXJFeGlzdHNCeUlEKCAkdWlkICkgKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIAogICAgLy8gdmFsaWRhdGUgdGhlIGdyb3VwIGlkCiAgICBpZiggISR0aGlzLT5Hcm91cEV4aXN0c0J5SUQoICRnaWQgKSApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgCiAgICAvLyBhZGQgdGhlIHJlY29yZCB0byB0aGUgdGFibGUgdG8gbWFrZSB0aGlzIAogICAgLy8gdXNlciBhIG1lbWJlciBvZiB0aGlzIGdyb3VwCiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncyAKICAgICAgICAgICAgICAgIFZBTFVFUyAoPyw/KSI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCwgJGdpZCApICk7CiAgICByZXR1cm4oICRkYnJlc3VsdCAhPSBmYWxzZSApOwogIH0KCiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkKICB7CiAgICAvLyBhIHBhc3N3b3JkIGlzIHZhbGlkLCBpZiBpdCdzIGxlbmd0aCBpcwogICAgLy8gd2l0aGluIGNlcnRhaW4gcmFuZ2VzCiAgICAkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRtaW5sZW4gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnLCA2ICk7CiAgICAkbWF4bGVuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJywgMjAgKTsKICAgICRsZW4gPSBzdHJsZW4oJHBhc3N3b3JkKTsKICAgIGlmKCAkbGVuIDwgJG1pbmxlbiApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgZWxzZSBpZiggJGxlbiA+ICRtYXhsZW4gKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIAogICAgLyoKICAgIC8vIHRoZXJlIG11c3QgYmUgYXRsZWFzdCAzIHVuaXF1ZSBjaGFyYWN0ZXJzCiAgICBpZiggc3RybGVuKGNvdW50X2NoYXJzKCAkdXNlcm5hbWUsIDMgKSkgPCBtaW4oMyxtaW5sZW4pKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICovCiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhbiBhcnJheQogIGZ1bmN0aW9uIERlbGV0ZVVzZXJGdWxsKCAkaWQgKQogIHsKICAgIC8vIGxvZyB0aGUgdXNlciBvdXQKICAgICR0aGlzLT5Mb2dvdXRVc2VyKCAkaWQgKTsKCiAgICAvLyBkZWxldGUgdXNlciBwcm9wZXJ0aWVzCiAgICAkdGhpcy0+RGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCAkaWQgKTsKCiAgICAvLyBkZWxldGUgdXNlciBmcm9tIGdyb3VwcwogICAgJHJldCA9ICR0aGlzLT5SZW1vdmVVc2VyRnJvbUdyb3VwKCAkaWQsICcnICk7CiAgICBpZiggJHJldFswXSA9PSBmYWxzZSApCiAgICAgIHsKCXJldHVybiAkcmV0OwogICAgICB9CgogICAgLy8gZGVsZXRlIHVzZXIgcmVjb3JkCiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMKICAgICAgICAgIFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGlkICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KCBGQUxTRTwgJGRiLT5FcnJvck1zZygpICk7CiAgICAgIH0KCiAgICAvLyBhbmQgZGVsZXRlIGFueXRoaW5nIGZyb20gdGhlIHRlbXBjb2RlcyB0YWJsZSB0b28KICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc190ZW1wY29kZQogICAgICAgICAgV0hFUkUgdXNlcmlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGlkICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KCBGQUxTRTwgJGRiLT5FcnJvck1zZygpICk7CiAgICAgIH0KICAgIAogICAgcmV0dXJuIGFycmF5KCBUUlVFLCAiIiApOwogIH0KCgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICAvLyByZXR1cm5zIGFuIGFycmF5CiAgZnVuY3Rpb24gR2V0R3JvdXBJbmZvKCAkZ2lkICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHMgV0hFUkUgaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkZ2lkICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICByZXR1cm4gJHJvdzsKICB9CiAgCiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgYW4gYXJyYXkKICAvLyBzZWNvbmQgZWxlbWVudCBvZiBhcnJheSBtYXkgYmUgYW4gYXJyYXkKICBmdW5jdGlvbiBHZXRVc2VySW5mbyggJHVpZCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMKICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCApICk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgcmV0dXJuIGFycmF5KCBUUlVFLCAkcm93ICk7CiAgfQogIAoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhbiBhcnJheSBvciBmYWxzZQogIGZ1bmN0aW9uIENvdW50VXNlcnNJbkdyb3VwKCAkZ3JvdXBpZCApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSA9ICcnOwogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgIGlmKCAkZ3JvdXBpZCA9PSAnJyB8fCAkZ3JvdXBpZCA8IDAgKQogICAgICB7CgkkcSA9ICJTRUxFQ1QgY291bnQoaWQpIGFzIG51bSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyI7IAogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSRxID0gIlNFTEVDVCBjb3VudChpZCkgYXMgbnVtIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzLCIuCgkgIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncyBXSEVSRSBpZD11c2VyaWQgQU5EIGdyb3VwaWQgPSA/IjsKCSRwYXJtc1tdID0gJGdyb3VwaWQ7CiAgICAgIH0KCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCAkcGFybXMgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIHJldHVybiAkcm93WydudW0nXTsKICB9CgogIGZ1bmN0aW9uIEdldFVzZXJzSW5Hcm91cCggJGdyb3VwaWQgPSAnJywgJHVzZXJyZWdleCA9ICcnLCAkbGltaXQgPSAnJywgJHNvcnQgPSAnJywKCQkJICAgICRwcm9wZXJ0eSA9ICcnLCAkcHJvcHJlZ2V4ID0gJycpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkd2hlcmUgPSBhcnJheSgpOwogICAgJG9yZGVyc29ydCA9ICIiOwogICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMgQSI7IAogICAgaWYoICRwcm9wZXJ0eSAhPSAnJyAmJiAkcHJvcHJlZ2V4ICE9ICcnICkKICAgICAgewoJJHEgLj0gIiwiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGVydGllcyBCIjsKCSR3aGVyZVtdID0gIiBBLmlkID0gQi51c2VyaWQiOwogICAgICB9CiAgICBpZiggJGdyb3VwaWQgIT0gJycgJiYgJGdyb3VwaWQgPj0gMCApCiAgICAgIHsKCSRxIC49ICIsIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2JlbG9uZ3MgQyI7Cgkkd2hlcmVbXSA9ICIgQS5pZCA9IEMudXNlcmlkIjsKCSR3aGVyZVtdID0gIiBncm91cGlkID0gPyI7CgkkcGFybXNbXSA9ICRncm91cGlkOwogICAgICB9CiAgICBpZiggJHByb3BlcnR5ICE9ICcnICYmICRwcm9wcmVnZXggIT0gJycgKQogICAgICB7Cgkkd2hlcmVbXSA9ICIgQi50aXRsZSA9ID8gYW5kIEIuZGF0YSBSRUdFWFAgPyI7CgkkcGFybXNbXSA9ICRwcm9wZXJ0eTsKCSRwYXJtc1tdID0gJHByb3ByZWdleDsKICAgICAgfQogICAgaWYoICR1c2VycmVnZXggIT0gJycgKQogICAgICB7Cgkkd2hlcmVbXSA9ICIgdXNlcm5hbWUgUkVHRVhQID8iOwoJJHBhcm1zW10gPSAkdXNlcnJlZ2V4OwogICAgICB9CiAgICBpZiggJHNvcnQgIT0gJycgKQogICAgICB7Cgkkb3JkZXJzb3J0IC49ICIgT1JERVIgQlkgJHNvcnQiOwogICAgICB9CiAgICBpZiggJGxpbWl0ICE9ICcnICYmICRsaW1pdCA+IDAgKQogICAgICB7Cgkkb3JkZXJzb3J0IC49ICIgTElNSVQgJGxpbWl0IjsgCiAgICAgIH0KCiAgICAvLyBwdXQgdGhlIHF1ZXJ5IHRvZ2V0aGVyCiAgICBpZiggY291bnQoJHdoZXJlICkgKQogICAgICB7CgkkcSAuPSAiIFdIRVJFICIgLiBpbXBsb2RlKCIgQU5EICIsJHdoZXJlKTsKICAgICAgfQogICAgJHEgLj0gJG9yZGVyc29ydDsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsICRwYXJtcyApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgewoJYXJyYXlfcHVzaCggJHJlc3VsdCwgJHJvdyApOwogICAgICB9CiAgICByZXR1cm4gJHJlc3VsdDsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyB0cnVlL2ZhbHNlCiAgZnVuY3Rpb24gR3JvdXBFeGlzdHNCeUlEKCAkZ2lkICkKICB7CiAgICAkZGF0YSA9ICR0aGlzLT5HZXRHcm91cEluZm8oICRnaWQgKTsKICAgIHJldHVybiggJGRhdGEgIT0gZmFsc2UgKTsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyB0cnVlL2ZhbHNlCiAgZnVuY3Rpb24gR3JvdXBFeGlzdHNCeU5hbWUoICRuYW1lICkKICB7CiAgICAkZ2lkID0gJHRoaXMtPkdldEdyb3VwSUQoICRuYW1lICk7CiAgICByZXR1cm4oICRnaWQgIT0gZmFsc2UgKTsKICB9CiAgCiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgYXJyYXkKICBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwsICRzbXRwdmFsaWRhdGUgPSBmYWxzZSwgJHVpZCA9IC0xICkKICB7CiAgICAkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgaWYoICFlcmVnaSgiXltfYS16MC05LV0rKFwuW19hLXowLTktXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17MiwzfSkkIiwgJGVtYWlsICkgKQogICAgICB7CgkkcmVzdWx0WzBdID0gZmFsc2U7CgkkcmVzdWx0WzFdID0gJG1vZHVsZS0+TGFuZygnZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCcpOwoJcmV0dXJuICRyZXN1bHQ7CiAgICAgIH0KCiAgICAkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIGlmKCAhJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX2VtYWlscycpICkKICAgICAgewoJJGRiID0mICR0aGlzLT5HZXREYigpOwoJJHEgPSAiU0VMRUNUIGRhdGEgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGRlZm4sIi4KCSAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIFdIRVJFIG5hbWU9dGl0bGUgQU5ECiAgICAgICAgICB0eXBlPTIgQU5EIGRhdGEgTElLRSA/IjsKCSRwYXJtcyA9IGFycmF5KCAkZW1haWwgKTsKCWlmKCAkdWlkID4gLTEgKQoJICB7CgkgICAgJHEgLj0gJyBBTkQgdXNlcmlkICE9ID8nOwoJICAgICRwYXJtc1tdID0gJHVpZDsKCSAgfQoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRlbWFpbCApICk7CglpZiggJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSApCgkgIHsKCSAgICAkcmVzdWx0WzBdID0gZmFsc2U7CgkgICAgJHJlc3VsdFsxXSA9ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnKTsKCSAgICByZXR1cm4gJHJlc3VsdDsKCSAgfQogICAgICB9CgogICAgaWYoICRzbXRwdmFsaWRhdGUgPT0gZmFsc2UgKQogICAgICB7CgkkcmVzdWx0WzBdID0gdHJ1ZTsKCXJldHVybiAkcmVzdWx0OwogICAgICB9CiAgICAKICAgIC8vIGdvIGFoZWFkIGFuZCB2YWxpZGF0ZSB0aGUgZW1haWwgYWRkcmVzcyBmdXJ0aGVyCiAgICBsaXN0ICggJHVuYW1lLCAkZG9tYWluICkgPSBzcGxpdCggIkAiLCAkZW1haWwgKTsKICAgIGlmKCBnZXRteHJyKCRkb21haW4sICRteGhvc3QgKSApCiAgICAgIHsKCSRjb25uZWN0YWRkcmVzcyA9ICRteGhvc3RbMF07CiAgICAgIH0KICAgIGVsc2UgCiAgICAgIHsKCSRjb25uZWN0YWRkcmVzcyA9ICRkb21haW47CiAgICAgIH0KCiAgICAkaG9zdG5hbWUgPSAnbG9jYWxob3N0JzsKICAgIGlmKCBpc3NldCgkX1NFUlZFUlsiU0VSVkVSX05BTUUiXSkgKQogICAgICB7CgkkaG9zdG5hbWUgPSAkX1NFUlZFUlsiU0VSVkVSX05BTUUiXTsKICAgICAgfQogICAgJGNvbm5lY3QgPSBmc29ja29wZW4oICRjb25uZWN0YWRkcmVzcywgMjUgKTsKICAgIGlmKCAkY29ubmVjdCApCiAgICAgIHsKCWlmKCBlcmVnKCdeMjIwJywgJG91dCA9IGZnZXRzKCAkY29ubmVjdCwgMTAyNCApICkgKQoJICB7CgkgICAgZnB1dHMoICRjb25uZWN0LCAiSEVMTyAkaG9zdG5hbWVcclxuIik7CgkgICAgJG91dCA9IGZnZXRzKCAkY29ubmVjdCwgMTAyNCApOwoJICAgIGZwdXRzKCAkY29ubmVjdCwgIk1BSUwgRlJPTTogPHskZW1haWx9PlxyXG4iKTsKCSAgICAkZnJvbSA9IGZnZXRzKCAkY29ubmVjdCwgMTAyNCApOwoJICAgIGZwdXRzKCAkY29ubmVjdCwgIlJDUFQgVE86IDx7JGVtYWlsfT5cclxuIik7CgkgICAgJHRvID0gZmdldHMoICRjb25uZWN0LCAxMDI0ICk7CgkgICAgZnB1dHMoICRjb25uZWN0LCAiUVVJVFxyXG4iKTsKCSAgICBmY2xvc2UoICRjb25uZWN0ICk7CgkgICAgaWYoICFlcmVnKCAiXjI1MCIsICRmcm9tICkgfHwgIWVyZWcoIl4yNTAiLCAkdG8pKQoJICAgICAgewoJCSRyZXN1bHRbMF0gPSBmYWxzZTsKCQkkcmVzdWx0WzFdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3NlcnZlcnJlamVjdGVkZW1haWwnKTsKCQlyZXR1cm4gJHJlc3VsdDsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJJHJlc3VsdFswXSA9IGZhbHNlOwoJCSRyZXN1bHRbMV0gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9yZXNwb25zZWZyb21zZXJ2ZXInKTsKCQlyZXR1cm4gJHJlc3VsdDsKCSAgICAgIH0KCSAgfQoJZWxzZSAKCSAgewoJICAgICRyZXN1bHRbMF0gPSBmYWxzZTsKCSAgICAkcmVzdWx0WzFdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVzcG9uc2Vmcm9tc2VydmVyJyk7CgkgICAgcmV0dXJuICRyZXN1bHQ7CgkgIH0KICAgICAgfQogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgdHJ1ZS9mYWxzZQogIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSggJHVzZXJuYW1lICkKICB7CiAgICAvLyBhIHVzZXJuYW1lIGlzIHZhbGlkLCBpZiBpdCdzIGxlbmd0aCBpcwogICAgLy8gd2l0aGluIGNlcnRhaW4gcmFuZ2VzLCBhbmQgaXQgY29udGFpbnMKICAgIC8vIG9ubHkgYWxwaGFudW1lcmljcwogICAgJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkbWlubGVuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCApOwogICAgJG1heGxlbiA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcsIDIwICk7CiAgICBpZiggc3RybGVuKCAkdXNlcm5hbWUgKSA8ICRtaW5sZW4gfHwgc3RybGVuKCAkdXNlcm5hbWUgKSA+ICRtYXhsZW4gKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICBpZiggIXByZWdfbWF0Y2goICcvXlthLXpBLVowLTlfLV0qJC8nLCAkdXNlcm5hbWUgKSApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQoKICAgIC8qCiAgICAvLyB0aGVyZSBtdXN0IGJlIGF0bGVhc3QgMyB1bmlxdWUgY2hhcmFjdGVycwogICAgaWYoIHN0cmxlbihjb3VudF9jaGFycyggJHVzZXJuYW1lLCAzICkpIDwgbWluKDMsbWlubGVuKSkKICAgICAgewoJcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAqLwogICAgcmV0dXJuIHRydWU7CiAgfQoKICAKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhbiBhcnJheQogIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoICR1aWQsICRnaWQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRwYXJtcyA9IGFycmF5KCAkdWlkICk7CiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncwogICAgICAgICAgV0hFUkUgdXNlcmlkID0gPyI7CiAgICBpZiggJGdpZCAhPSAnJyApCiAgICAgIHsKCSRxIC49ICIgQU5EIGdyb3VwaWQgPSA/IjsKCWFycmF5X3B1c2goICRwYXJtcywgJGdpZCApOwogICAgICB9CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCAkcGFybXMgKTsKICAgIGlmKCAkZGJyZXN1bHQgPT0gZmFsc2UgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CglyZXR1cm4gYXJyYXkoIFRSVUUgKTsKICAgICAgfQogIH0KCgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICAvLyByZXR1cm5zIGFycmF5CiAgZnVuY3Rpb24gU2V0R3JvdXAoICRpZCwgJG5hbWUsICRkZXNjICkKICB7CiAgICBpZiggIWlzc2V0KCAkbmFtZSApIHx8ICRuYW1lID09ICcnICkKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5faWQsCgkJCQkgICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJcmV0dXJuOwogICAgICB9CiAgICAKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgICAkZWlkID0gJHRoaXMtPkdldEdyb3VwSUQoICRuYW1lICk7CiAgICBpZiggJGVpZCAhPSBmYWxzZSAmJiAkZWlkICE9ICRpZCApCiAgICAgIHsKCSRtb2QgPSYgJHRoaXMtPkdldE1vZHVsZSgpOwoJcmV0dXJuIGFycmF5KEZBTFNFLCRtb2QtPkxhbmcoJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgIAogICAgJHEgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHMgU0VUCiAgICAgICAgICAgICAgICBncm91cG5hbWUgPSA/LCBncm91cGRlc2MgPSA/IFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5hbWUsICRkZXNjLCAkaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgcmV0dXJuIGFycmF5KCBUUlVFLCAnJyk7CiAgfQoKCiAgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMKICAgICAgICAgIFNFVCBwYXNzd29yZCA9ID8gV0hFUkUgaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCBtZDUoJHBhc3N3b3JkKSwgJHVpZCApKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgIHJldHVybiBhcnJheShUUlVFLCIiKTsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhcnJheQogIGZ1bmN0aW9uIFNldFVzZXIoICR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyA9IGZhbHNlICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoaXMgdXNlciBleGlzdHMKICAgICRyZXQgPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgIGlmKCAkcmV0WzBdID09IEZBTFNFICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCAkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgICB9CgogICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhpcyB1c2VybmFtZSBpcyBub3QgdGFrZW4gYnkgc29tZSBvdGhlciBpZAogICAgJG51aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICBpZiggJG51aWQgIT0gZmFsc2UgJiYgJG51aWQgIT0gJHVpZCApCiAgICAgIHsKCSRtb2R1bGUgPSYgJHRoaXMtPkdldE1vZHVsZSgpOwoJcmV0dXJuIGFycmF5KEZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl91c2VybmFtZXRha2VuJywkdWlkKSk7CiAgICAgIH0KCiAgICAkZGJyZXN1bHQgPSAnJzsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkcSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzIFNFVAogICAgICAgICB1c2VybmFtZSA9ID8iOwoJCiAgICAkcGFybXNbXSA9ICR1c2VybmFtZTsKICAgIGlmKCB0cmltKCAkcGFzc3dvcmQgKSAhPSAnJyApCiAgICAgIHsKCSRxIC49ICIsIHBhc3N3b3JkID0gPyI7CgkkcGFybXNbXSA9IG1kNSgkcGFzc3dvcmQpOwogICAgICB9CiAgICBpZiggJGV4cGlyZXMgIT0gZmFsc2UgKQogICAgICB7CgkkcSAuPSAiLCBleHBpcmVzID0gPyI7CgkkcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZXhwaXJlcyksIiciKTsKICAgICAgfQogICAgJHEgLj0gIiBXSEVSRSBpZCA9ID8iOwogICAgJHBhcm1zW10gPSAkdWlkOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgJHBhcm1zICk7CgogICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApCiAgICAgIHsKCXJldHVybiBhcnJheSggRkFMU0UsICRkYi0+RXJyb3JNc2coKSApOwogICAgICB9CiAgICByZXR1cm4gYXJyYXkoIFRSVUUsICIiICk7CiAgfQoKICAKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyB0cnVlL2ZhbHNlCiAgZnVuY3Rpb24gU2V0VXNlckdyb3VwcyggJHVpZCwgJGdycGlkcyApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoKICAgIC8vIGZpcnN0IG1ha2Ugc3VyZSB0aGlzIHVzZXIgZXhpc3RzCiAgICAkcmV0ID0gJHRoaXMtPkdldFVzZXJJbmZvKCAkdWlkICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwgIlVzZXIgZG9lcyBub3QgZXhpc3QiKTsKICAgICAgfQoKICAgIC8vIHRoZW4gcmVtb3ZlIGFsbCBoaXMgY3VycmVudCBhc3NpZ25tZW50cwogICAgJHEgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2JlbG9uZ3MgCiAgICAgICAgICBXSEVSRSB1c2VyaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkdWlkICkpOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgICk7CiAgICAgIH0KCiAgICAvLyBhbmQgYWRkIGFsbCBvZiB0aGVtIGluCiAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncwogICAgICAgICAgVkFMVUVTICg/LD8pIjsKICAgIGZvcmVhY2goICRncnBpZHMgYXMgJGdycGlkICkKICAgIHsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICR1aWQsICRncnBpZCApICk7CiAgICAgIGlmKCAhJGRicmVzdWx0ICkKCXsKCSAgcmV0dXJuIGFycmF5KCBGQUxTRSwgJGRiLT5FcnJvck1zZygpICApOwoJfQogICAgfQogICAgcmV0dXJuIGFycmF5KCBUUlVFLCAiIiApOwogIH0KCgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICAvLyByZXR1cm5zIHRydWUvZmFsc2UKICBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydGllcyggJHVpZCwgJHByb3BzICkKICB7CiAgICAvLyBEZWxldGUgYWxsIHRoZSB1c2VyIHByb3BlcnRpZXMKICAgIC8vIGFuZCBzZXQgbmV3IG9uZXMKICAgICR0aGlzLT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCAiIiwgJHVpZCwgdHJ1ZSApOwoKICAgIGZvcmVhY2goICRwcm9wcyBhcyAkcHJvcCApCiAgICB7CiAgICAgIGxpc3QoICRrZXksICR2YWwgKSA9IHNwbGl0KCI9IiwkcHJvcCk7CiAgICAgICR0aGlzLT5TZXRVc2VyUHJvcGVydHkoICRrZXksICR2YWwsICR1aWQgKTsKICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyB0cnVlL2ZhbHNlCiAgZnVuY3Rpb24gVXNlckV4aXN0c0J5SUQoICR1aWQgKQogIHsKICAgICRkYXRhID0gJHRoaXMtPkdldFVzZXJJbmZvKCAkdWlkICk7CiAgICByZXR1cm4oICRkYXRhWzBdICE9IGZhbHNlICk7CiAgfQoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhbiBhcnJheSBvciBmYWxzZQogIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BlcnRpZXMgV0hFUkUgdXNlcmlkPT8iOwogICAgJHA9YXJyYXkoJHVpZCk7CiAgICAkYXJyID0gYXJyYXkoKTsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsJHApOwogICAgaWYoICRkYnJlc3VsdCA9PSBmYWxzZSApCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQogICAgICB7CglhcnJheV9wdXNoKCAkYXJyLCAkcm93ICk7CiAgICAgIH0KICAgIHJldHVybiAkYXJyOwogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgYW4gYXJyYXkgb2YgcmVjb3JkcyBvciBmYWxzZQogIGZ1bmN0aW9uIEdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzIFdIRVJFIHVzZXJpZD0/IjsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsYXJyYXkoJHVzZXJpZCkpOwogICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgJHJlc3VsdD1hcnJheSgpOzsKICAgICAgd2hpbGUgKCRyb3c9JGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CglhcnJheV9wdXNoKCAkcmVzdWx0LCAkcm93ICk7CiAgICAgIH0KICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvLwogIC8vIGVuZCBvZiByYyBmdW5jdGlvbnMKICAvLwoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5KCR0aXRsZSwkZGVmYXVsdHZhbHVlPWZhbHNlKSAKICB7CiAgICAkdXNlcmlkPSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiAoJHVzZXJpZD09PWZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsJGRlZmF1bHR2YWx1ZSk7CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCAkZGVmYXVsdHZhbHVlPWZhbHNlKSAKICB7CiAgICAkZGI9JHRoaXMtPkdldERCKCk7CiAgICAkcT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGVydGllcyBXSEVSRSB0aXRsZT0/IEFORCB1c2VyaWQ9PyI7CiAgICAkcD1hcnJheSgkdGl0bGUsJHVzZXJpZCk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICBpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpKSB7CiAgICAgICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICAgcmV0dXJuICRyb3dbImRhdGEiXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiAkZGVmYXVsdHZhbHVlOwogICAgfQogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eSgkdGl0bGUsJGRhdGEpIAogIHsKICAgICR1c2VyaWQ9JHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIGlmICgkdXNlcmlkPT09ZmFsc2UpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJGRhdGEsJHVzZXJpZCk7CiAgfQoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJGRhdGEsJHVzZXJpZCkgCiAgewogICAgJGRiPSR0aGlzLT5HZXREQigpOwogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BlcnRpZXMgV0hFUkUgdGl0bGU9PyBBTkQgdXNlcmlkPT8iOwogICAgJHA9YXJyYXkoJHRpdGxlLCR1c2VyaWQpOwogICAgJHI9JGRiLT5FeGVjdXRlKCRxLCRwKTsKICAgIGlmICghJHIgfHwgKCRyLT5OdW1Sb3dzKCk9PTApKSB7CiAgICAgICRuZXdpZD0kZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGVydGllc19zZXEiKTsKICAgICAgJHE9IklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIChpZCx1c2VyaWQsdGl0bGUsZGF0YSkgVkFMVUVTICg/LD8sPyw/KSI7CiAgICAgICRwPWFycmF5KCRuZXdpZCwkdXNlcmlkLCR0aXRsZSwkZGF0YSk7CiAgICAgICRyPSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICB9IGVsc2UgewogICAgICAkcm93PSRyLT5GZXRjaFJvdygpOwogICAgICAkcT0iVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIFNFVCBkYXRhPT8gV0hFUkUgaWQ9PyI7CiAgICAgICRwPWFycmF5KCRkYXRhLCRyb3dbImlkIl0pOwogICAgICAkcj0kZGItPkV4ZWN1dGUoJHEsJHApOwogICAgfQogICAgcmV0dXJuICgkciE9ZmFsc2UpOwogIH0KCiAgLy8gZGVsZXRlIGFsbCBvY2N1cmFuY2VzIG9mIHRoZSB1c2VycHJvcGVydHkgYnkgbmFtZQogIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eUJ5TmFtZSggJHRpdGxlICkKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0REIoKTsKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIFdIRVJFIHRpdGxlPT8iOwogICAgJHAgPSBhcnJheSggJHRpdGxlICk7CiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgJHAgKTsKICAgIHJldHVybiAoJHJlc3VsdCE9ZmFsc2UpOwogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsJGFsbD1mYWxzZSkgCiAgewogICAgJHVzZXJpZD0kdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgaWYgKCR1c2VyaWQ9PT1mYWxzZSkgcmV0dXJuIGZhbHNlOwogICAgJGRiPSR0aGlzLT5HZXREQigpOwogICAgJHE9IkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIFdIRVJFIHVzZXJpZD0/IjsKICAgIGlmICghJGFsbCkgJHEuPSIgQU5EIHRpdGxlPT8iOwogICAgJHA9YXJyYXkoKTsKICAgIGlmICgkYWxsKSAkcD1hcnJheSgkdXNlcmlkKTsgZWxzZSAkcD1hcnJheSgkdXNlcmlkLCR0aXRsZSk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICByZXR1cm4gKCRyZXN1bHQhPWZhbHNlKTsKICB9CiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsJGFsbD1mYWxzZSkgCiAgewogICAgJGRiPSR0aGlzLT5HZXREQigpOwogICAgJHE9IkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZXJ0aWVzIFdIRVJFIHVzZXJpZD0/IjsKICAgIGlmICghJGFsbCkgJHEuPSIgQU5EIHRpdGxlPT8iOwogICAgJHA9YXJyYXkoKTsKICAgIGlmICgkYWxsKSAkcD1hcnJheSgkdXNlcmlkKTsgZWxzZSAkcD1hcnJheSgkdXNlcmlkLCR0aXRsZSk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgICByZXR1cm4gKCRyZXN1bHQhPWZhbHNlKTsKICB9CgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllcygpIAogIHsKICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5KCIiLHRydWUpOwogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKSAKICB7CiAgICByZXR1cm4gJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoIiIsJHVzZXJpZCx0cnVlKTsKICB9CgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBDaGVja1Bhc3N3b3JkKCR1c2VybmFtZSwkcGFzc3dvcmQsJGdyb3VwcyA9ICcnKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcT0iU0VMRUNUIHUuKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyB1IjsKCWlmICgkZ3JvdXBzICE9ICcnKQoJewoJCSRxIC49ICcgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ZldXNlcnNfYmVsb25ncyBiIE9OIHUuaWQgPSBiLnVzZXJpZCBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZmV1c2Vyc19ncm91cHMgZyBPTiBnLmlkID0gYi5ncm91cGlkICc7Cgl9CgkkcSAuPSAnIFdIRVJFIHUudXNlcm5hbWU9PyBBTkQgdS5wYXNzd29yZD0/JzsKICAgICRwPWFycmF5KCR1c2VybmFtZSxtZDUoJHBhc3N3b3JkKSk7CglpZiAoJGdyb3VwcyAhPSAnJykKCXsJCQkKCQkvL3NwbGl0IHRoZSBzdHJpbmcgb24gdGhlIGNvbW1hcwoJCSRncm91cHMgPSBzcGxpdCgnLFwgPycsICRncm91cHMpOwoJCQoJCS8vbWFrZSBhIGJpdCBmb3IgdGhlIHF1ZXJ5CgkJJHEgLj0gJyBBTkQgKCcgLiBpbXBsb2RlKCcgT1IgJywgYXJyYXlfZmlsbCgwLCBjb3VudCgkZ3JvdXBzKSwgJ2cuZ3JvdXBuYW1lID0gPycpKSAuICcpJzsKCQlmb3JlYWNoICgkZ3JvdXBzIGFzICRncm91cCkKCQl7CgkJCSRwW10gPSAkZ3JvdXA7CgkJfQoJfQogICAgJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsJHApOwogICAgaWYgKCRyZXN1bHQgJiYgJHJlc3VsdC0+UmVjb3JkQ291bnQoKSkgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBMb2dnZWRJbk5hbWUoKSAKICB7CiAgICAkdXNlcmlkPSR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiAoJHVzZXJpZCE9IiIpIHJldHVybiAkdGhpcy0+R2V0VXNlck5hbWUoJHVzZXJpZCk7IGVsc2UgcmV0dXJuICIiOwogIH0KCgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBMb2dvdXQoKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcT0iREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2xvZ2dlZGluIFdIRVJFIHNlc3Npb25pZD0/IjsKICAgICRwPWFycmF5KHNlc3Npb25faWQoKSk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CgogICAgLy8gYW5kIGFkZCBoaXN0b3J5IGluZm8KICAgICRxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19oaXN0b3J5IFZBTFVFUyAoPyw/LD8sPykiOwogICAgJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICctMScsIHNlc3Npb25faWQoKSwgJ2xvZ291dCcsCgkJCSAgICAgdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksIiciKSApKTsKICB9CgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBMb2dvdXRVc2VyKCR1aWQpIAogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxPSJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfbG9nZ2VkaW4gV0hFUkUgdXNlcmlkPT8iOwogICAgJHA9YXJyYXkoJHVpZCk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgfQoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKSAKICB7CiAgICAkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRleHBpcnl0aW1lID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnKTsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19sb2dnZWRpbiBXSEVSRSBsYXN0dXNlZDw/IjsKICAgICRwPWFycmF5KHRpbWUoKS0kZXhwaXJ5dGltZSk7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCAkcCApOwogICAgd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQogICAgICB7CgkkbW9kdWxlLT5Ob3RpZnlFeHBpcmVkVXNlciggJHJvd1sndXNlcmlkJ10gKTsKICAgICAgfQoKICAgICRxPSJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfbG9nZ2VkaW4gV0hFUkUgbGFzdHVzZWQ8PyI7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcCk7CiAgfQoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gTG9nZ2VkSW5JZCgpIAogIHsKICAgIGlmKCBzZXNzaW9uX2lkKCkgPT0gIiIgKQogICAgICB7CgkvLyBpZiB3ZSBkb24ndCBoYXZlIGEgc2Vzc2lvbiBpZCwgdGhlbiB3ZSBhcmVuJ3QgbG9nZ2VkIGluLgoJcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHRoaXMtPkV4cGlyZVVzZXJzKCk7CiAgICAkcT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfbG9nZ2VkaW4gV0hFUkUgc2Vzc2lvbmlkPT8iOwogICAgJHA9YXJyYXkoc2Vzc2lvbl9pZCgpKTsKICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRxLCRwKTsKICAgIGlmICgkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgJHJvdz0kcmVzdWx0LT5GZXRjaFJvdygpOwogICAgICAkcmV0dmFsID0gJHJvd1sidXNlcmlkIl07CgogICAgICAvLyBub3cgdG91Y2ggdGhlIGxhc3R1c2VkCiAgICAgIC8vIHRoaXMgd2lsbCBlbnN1cmUgdGhhdCBldmVyeSB0aW1lIHdlIGNoZWNrIHRoYXQgYSB1c2VyIGlzCiAgICAgIC8vIGxvZ2dlZCBpbiwgaXQgdG91Y2hlcyBoaXMgbG9nZ2VkIGluIGVudHJ5CiAgICAgICRxID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfbG9nZ2VkaW4gU0VUIGxhc3R1c2VkID0gPyB3aGVyZSBzZXNzaW9uaWQgPSA/IjsKICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCB0aW1lKCksIHNlc3Npb25faWQoKSApICk7CiAgICAgIHJldHVybiAkcmV0dmFsOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIExvZ2dlZEluKCkgCiAgewogICAgaWYoICEkdGhpcy0+TG9nZ2VkSW5JZCgpICkgCiAgICAgIHsKCXJldHVybiBmYWxzZTsgCiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJcmV0dXJuIHRydWU7CiAgICAgIH0KICB9CgogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpIAogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxPSIiOwogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2JlbG9uZ3MgV0hFUkUgdXNlcmlkPT8gQU5EIGdyb3VwaWQ9PyI7CiAgICAKICAgICRwYXJhbXM9YXJyYXkoJHVzZXJpZCwkZ3JvdXBpZCk7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSwkcGFyYW1zKTsKICAgIGlmICgkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgZnVuY3Rpb24KICBmdW5jdGlvbiBHZXRVc2VyTmFtZSgkdXNlcmlkKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMgV0hFUkUgaWQ9PyI7CiAgICAKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsYXJyYXkoJHVzZXJpZCkpOwogICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgJHJvdz0kZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgIHJldHVybiAkcm93WyJ1c2VybmFtZSJdOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KICAKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkgCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzIFdIRVJFIHVzZXJuYW1lPT8iOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSxhcnJheSgkdXNlcm5hbWUpKTsKICAgIGlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKSB7CiAgICAgICRyb3c9JGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgICByZXR1cm4gJHJvd1siaWQiXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgYXJyYXkKICBmdW5jdGlvbiBBZGRHcm91cCggJG5hbWUsICRkZXNjcmlwdGlvbiApCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgCiAgICAvLyBzZWUgaWYgaXQgZXhpc3RzIGFscmVhZHkgb3Igbm90IChieSBuYW1lKQogICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4KICAgICAgIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyBXSEVSRSBncm91cG5hbWUgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkbmFtZSApICk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICRyb3cgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJHRoaXMtPkxhbmcoJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgIAogICAgJGdycGlkID0gCiAgICAgICRkYi0+R2VuSUQoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzX3NlcSIgKTsKICAgICRxID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLgogICAgICAibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIFZBTFVFUyAoPyw/LD8pIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkZ3JwaWQsICRuYW1lLCAkZGVzY3JpcHRpb24gKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoRkFMU0UsJGRiLT5FcnJvck1zZygpKTsKICAgICAgfQogICAgcmV0dXJuIGFycmF5KFRSVUUsJGdycGlkKTsKICB9CgoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgLy8gcmV0dXJucyBhcnJheQogIGZ1bmN0aW9uIEFkZFVzZXIoICRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzICkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKICAgIC8vIHNlZSBpZiBpdCBleGlzdHMgYWxyZWFkeSBvciBub3QgKGJ5IG5hbWUpCiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLgogICAgICAibW9kdWxlX2ZldXNlcnNfdXNlcnMgV0hFUkUgdXNlcm5hbWUgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkbmFtZSApICk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCXJldHVybiBhcnJheShGQUxTRSwkZGItPkVycm9yTXNnKCkpOwogICAgICB9CiAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgaWYoICRyb3cgKQogICAgICB7CgkkbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGUoKTsKCXJldHVybiBhcnJheShGQUxTRSwkbW9kdWxlLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgIAogICAgLy8gZ2VuZXJhdGUgdGhlIHNlcXVlbmNlCiAgICAkdWlkID0gCiAgICAgICRkYi0+R2VuSUQoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnNfc2VxIiApOwoKICAgIC8vIGluc2VydCB0aGUgcmVjb3JkCiAgICAkcSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4KICAgICAgIm1vZHVsZV9mZXVzZXJzX3VzZXJzIFZBTFVFUyAoPyw/LD8sPyw/KSI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJHVpZCwgJG5hbWUsIG1kNSgkcGFzc3dvcmQpLCAKCQkJCQkgdHJpbSgkZGItPkRiVGltZVN0YW1wKHRpbWUoKSksIiciKSwKCQkJCQkgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRleHBpcmVzKSwiJyIpICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KEZBTFNFLCRkYi0+RXJyb3JNc2coKSk7CiAgICAgIH0KICAgIHJldHVybiBhcnJheShUUlVFLCR1aWQpOwogIH0KICAKICAKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0R3JvdXBOYW1lKCRncm91cGlkKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIFdIRVJFIGlkPT8iOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSxhcnJheSgkZ3JvdXBpZCkpOwogICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgJHJvdz0kZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgIHJldHVybiAkcm93WyJncm91cG5hbWUiXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgCiAgCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ3JvdXBpZCkgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyBXSEVSRSBpZD0/IjsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsYXJyYXkoJGdyb3VwaWQpKTsKICAgIGlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKSB7CiAgICAgICRyb3c9JGRicmVzdWx0LT5GZXRjaFJvdygpOwogICAgICByZXR1cm4gJHJvd1siZ3JvdXBkZXNjIl07CiAgICB9IAllbHNlIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KICAKCiAgLy8gdXNlcmlkIGFwaSBmdW5jdGlvbgogIC8vIHJldHVybnMgYW4gYXJyYXkKICBmdW5jdGlvbiBEZWxldGVHcm91cEZ1bGwoICRpZCApCiAgewogICAgJGRiID0gJHRoaXMtPkdldERCKCk7CiAgICAkcmVzdWx0ID0gYXJyYXkoKTsKCiAgICAvLyBkZWxldGUgYWxsIHByb3BlcnR5IHJlbGF0aW9ucyBmcm9tIHRoaXMgZ3JvdXAKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHByb3BtYXAgV0hFUkUgZ3JvdXBfaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgfQoKICAgIC8vIGRlbGV0ZSBhbGwgaW5kaWNhdGlvbiB0aGF0IGFueWJvZHkgaXMgYSBtZW1iZXIKICAgIC8vIG9mIHRoaXMgZ3JvdXAKICAgICRxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzIFdIRVJFIGdyb3VwaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOwogICAgaWYoICEkZGJyZXN1bHQgKQogICAgICB7CglyZXR1cm4gYXJyYXkoIEZBTFNFLCAkZGItPkVycm9yTXNnKCkgKTsKICAgICAgfQogICAgCiAgICAvLyBhbmQgdGhlbiBkZWxldGUgdGhlIGdyb3VwCiAgICAkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJGlkICkgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkKICAgICAgewoJcmV0dXJuIGFycmF5KCBGQUxTRSwgJGRiLT5FcnJvck1zZygpICk7CiAgICAgIH0KICAgIAogICAgcmV0dXJuIGFycmF5KCBUUlVFLCAnJyApOwogIH0KICAKICAKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0R3JvdXBMaXN0KCkKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgJHEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEgKTsKICAgIGlmKCAkZGJyZXN1bHQgKSB7CiAgICB3aGlsZSggJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApCiAgICAgIHsKCSRyZXN1bHRbJHJvd1snZ3JvdXBuYW1lJ11dID0gJHJvd1snaWQnXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAoKICAvLyB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0R3JvdXBMaXN0RnVsbCgpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwoJICAKICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeSApOwogICAgaWYoICRkYnJlc3VsdCApIHsKICAgICAgd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQogICAgICAgIHsKCSAgYXJyYXlfcHVzaCgkcmVzdWx0LCRyb3cpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkcmVzdWx0OwogIH0KCgogIC8vIG9sZCB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CgogICAgJHE9IlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyBXSEVSRSBncm91cG5hbWU9PyI7CiAgICAkZGJyZXN1bHQ9JGRiLT5FeGVjdXRlKCRxLGFycmF5KCRncm91cG5hbWUpKTsKICAgIGlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKSAKICAgICAgewoJJHJvdz0kZGJyZXN1bHQtPkZldGNoUm93KCk7CglyZXR1cm4gJHJvd1siaWQiXTsKICAgICAgfSAKICAgIGVsc2UgCiAgICAgIHsKCXJldHVybiBmYWxzZTsKICAgICAgfQogIH0KCgogIC8vIG9sZCB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzIFdIRVJFIHVzZXJpZD0/IjsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEsYXJyYXkoJHVzZXJpZCkpOwogICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpIHsKICAgICAgJHJlc3VsdD0iIjsKICAgICAgd2hpbGUgKCRyb3c9JGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CglpZiAoJHJlc3VsdCE9IiIpIHsKCSAgJHJlc3VsdC49IiwiLiR0aGlzLT5HZXRHcm91cE5hbWUoJHJvd1siZ3JvdXBpZCJdKTsKCX0gZWxzZSB7CgkgICRyZXN1bHQ9JHRoaXMtPkdldEdyb3VwTmFtZSgkcm93WyJncm91cGlkIl0pOwoJfQogICAgICB9CiAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICJub25lIjsKICAgIH0KICB9CgoKICAvLyBvbGQgdXNlcmlkIGFwaSBmdW5jdGlvbgogIGZ1bmN0aW9uIENoYW5nZVVzZXIoJGlkKSAKICB7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICBpZiAoaXNzZXQoJF9QT1NUWyRpZC4idXNlcmlkIl0pKSAkdXNlcmlkPXRyaW0oJF9QT1NUWyRpZC4idXNlcmlkIl0pOyBlbHNlIHJldHVybiAiVW5yZWNvdmVyYWJsZSBlcnJvciI7CiAgICAkdXNlcm5hbWU9dHJpbSgkX1BPU1RbJGlkLiJ1c2VybmFtZSJdKTsKICAgICRxdWVyeT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMgV0hFUkUgdXNlcm5hbWU9PyI7CiAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHVzZXJuYW1lKSk7CiAgICBpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpKSB7CiAgICAgICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICAgaWYgKCRyb3dbImlkIl0hPSR1c2VyaWQpIHJldHVybiAiVXNlcm5hbWUgYWxyZWFkeSBleGlzdHMhIjsKICAgIH0KICAgIAogICAgaWYgKGlzc2V0KCRfUE9TVFskaWQuImVtYWlsIl0pKSAkZW1haWw9dHJpbSgkX1BPU1RbJGlkLiJlbWFpbCJdKTsgZWxzZSByZXR1cm4gIkVtYWlsIGFkZHJlc3MgbXVzdCBiZSBwcm92aWRlZCI7CiAgICAKICAgIGlmIChpc3NldCgkX1BPU1RbJGlkLiJwYXNzd29yZCJdKSkgJHBhc3N3b3JkPXRyaW0oJF9QT1NUWyRpZC4icGFzc3dvcmQiXSk7IGVsc2UgJHBhc3N3b3JkPSIiOwogICAgaWYgKCRwYXNzd29yZCE9IiIpIHsKICAgICAgJHBhc3N3b3JkMj10cmltKCRfUE9TVFskaWQuInBhc3N3b3JkMiJdKTsKICAgICAgaWYgKCRwYXNzd29yZCE9JHBhc3N3b3JkMikgcmV0dXJuICJQYXNzd29yZHMgZG8gbm90IG1hdGNoISI7CiAgICAgICRxdWVyeT0iVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyBTRVQgdXNlcm5hbWU9PyxTRVQgcGFzc3dvcmQ9PyxlbWFpbD0/IFdIRVJFIGlkPT8iOwogICAgICAkcGFyYW1zPWFycmF5KCR1c2VybmFtZSxtZDUoJHBhc3N3b3JkKSwkZW1haWwsJHVzZXJpZCk7CiAgICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJhbXMpOwogICAgfSBlbHNlIHsKICAgICAgJHF1ZXJ5PSJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzIFNFVCB1c2VybmFtZT0/LGVtYWlsPT8gV0hFUkUgaWQ9PyI7CiAgICAgICRwYXJhbXM9YXJyYXkoJHVzZXJuYW1lLCRlbWFpbCwkdXNlcmlkKTsKICAgICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcmFtcyk7CiAgICB9CiAgICAKICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHMiOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSk7CiAgICBpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSkgewogICAgICB3aGlsZSAoJHJvdz0kZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCS8vRmlyc3QgcmVzZXQgdGhlIGFzc29jaW9hdGlvbnMKCSRxPSJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncyBXSEVSRSB1c2VyaWQ9PyBBTkQgZ3JvdXBpZD0/IjsKCSRwYXJhbXMxPWFycmF5KCR1c2VyaWQsJHJvd1siaWQiXSk7CgkkZGJyZXN1bHQyPSRkYi0+RXhlY3V0ZSgkcSwkcGFyYW1zMSk7CgllY2hvICRkYi0+RXJyb3JNc2coKTsKCS8vVGhlbiBjcmVhdGUgYSBuZXcgb25lIGlmIGl0IHdhcyBzZWxlY3RlZAoJaWYgKCRfUE9TVFskaWQuImdyb3VwIi4kcm93WyJpZCJdXT09InllcyIpIHsKCSAgLy9DcmVhdGUgYW4gYXNzb2NpYXRpb24KCSAgJHE9IklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzICh1c2VyaWQsZ3JvdXBpZCkgVkFMVUVTICg/LD8pIjsKCSAgJHBhcmFtczI9YXJyYXkoJHVzZXJpZCwkcm93WyJpZCJdKTsKCSAgJGRicmVzdWx0Mj0kZGItPkV4ZWN1dGUoJHEsJHBhcmFtczIpOwoJfQogICAgICB9CiAgICB9CiAgfQoJCgogIC8vIG9sZCB1c2VyaWQgYXBpIGZ1bmN0aW9uCiAgZnVuY3Rpb24gRGVsZXRlVXNlcigkaWQpIAogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgIGlmIChpc3NldCgkX0dFVFskaWQuInVzZXJpZCJdKSkgJHVzZXJpZD0kX0dFVFskaWQuInVzZXJpZCJdOyBlbHNlIHJldHVybjsKICAgICRxPSJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMgV0hFUkUgaWQ9JyR1c2VyaWQnIjsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHEpOwogICAgJHE9IkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzIFdIRVJFIHVzZXJpZD0nJHVzZXJpZCciOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSk7CiAgfQoKfSAvLyBjbGFzcwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/FrontEndUsers.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKLy8gYSB2ZXJ5IGltcG9ydGFudCBsaW5lIHRoYXQgaW5jbHVkZXMgYWxsIG9mIG91ciBhcGkgZnVuY3Rpb25zCnJlcXVpcmVfb25jZSggIlJhbmRvbS5waHAiICk7CnJlcXVpcmVfb25jZSggImZ1bmN0aW9ucy5waHAiICk7CgpjbGFzcyBGcm9udEVuZFVzZXJzIGV4dGVuZHMgQ01TTW9kdWxlIAp7CiAgdmFyICRkZXZkZWJ1ZyA9IDA7CgogIC8qKgogICAqIFRoZSBkZWZhdWx0IHRlbXBsYXRlIHVzZWQgZm9yIHRoZSBsb2dpbiBmb3JtCiAgICovCiAgdmFyICRkZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUxID0gJwo8IS0tIGZvcmdvdCBwYXNzd29yZCB0ZW1wbGF0ZSAtLT4KeyRzdGFydGZvcm19CnskdGl0bGV9CntpZiAkbWVzc2FnZSAhPSBcJ1wnfQogIHtpZiAkZXJyb3IgIT0gXCdcJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQo8cD57JGxvc3Rwd19tZXNzYWdlfTwvcD4KPHA+eyRwcm9tcHRfdXNlcm5hbWV9Jm5ic3A7eyRpbnB1dF91c2VybmFtZX08L3A+CjxwPnskaGlkZGVufXskc3VibWl0fSZuYnNweyRjYW5jZWx9PC9wPgp7JGVuZGZvcm19CjwhLS0gZm9yZ290IHBhc3N3b3JkIHRlbXBsYXRlIC0tPiAKICAnOwoKICB2YXIgJGRmbHRfZm9yZ290cGFzc3dvcmR0ZW1wbGF0ZTIgPSAnCjwhLS0gZm9yZ290IHBhc3N3b3JkIGVtYWlsIHRlbXBsYXRlIC0tPgo8cD57JG1lc3NhZ2VfZm9yZ290cHdlbWFpbH08L3A+CjxwPnskcHJvbXB0X2NvZGV9Jm5ic3A7eyRkYXRhX2NvZGV9PC9wPgo8cD57JHByb21wdF9saW5rfSZuYnNwO3skZGF0YV9saW5rfTxwPgo8IS0tIGZvcmdvdCBwYXNzd29yZCBlbWFpbCB0ZW1wbGF0ZSAtLT4KICAnOwoKCiAgdmFyICRkZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUzID0gJwo8IS0tIGZvcmdvdCBwYXNzd29yZCB2ZXJpZmljYXRpb24gdGVtcGxhdGUgLS0+Cnskc3RhcnRmb3JtfQp7JHRpdGxlfQp7aWYgJG1lc3NhZ2UgIT0gXCdcJ30KICB7aWYgJGVycm9yICE9IFwnXCd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KPHA+eyRwcm9tcHRfdXNlcm5hbWV9Jm5ic3A7eyRpbnB1dF91c2VybmFtZX08L3A+CjxwPnskcHJvbXB0X2NvZGV9Jm5ic3A7eyRpbnB1dF9jb2RlfTwvcD4KPHA+eyRwcm9tcHRfcGFzc3dvcmR9Jm5ic3A7eyRpbnB1dF9wYXNzd29yZH08L3A+CjxwPnskcHJvbXB0X3JlcGVhdHBhc3N3b3JkfSZuYnNwO3skaW5wdXRfcmVwZWF0cGFzc3dvcmR9PC9wPgo8cD57JGhpZGRlbn17JHN1Ym1pdH08L3A+CnskZW5kZm9ybX0KPCEtLSBmb3Jnb3QgcGFzc3dvcmQgdmVyaWZpY2F0aW9uIHRlbXBsYXRlIC0tPgonOwoKICB2YXIgJGRmbHRfbG9naW5mb3JtdGVtcGxhdGUgPSAnCjwhLS0gTG9naW4gZm9ybSB0ZW1wbGF0ZSAtLT4KIDxmb250IHNpemU9Ii0yIj4KIHskc3RhcnRmb3JtfQoge2lmICRlcnJvcn0KICB7JGVycm9yfTxicj4KIHsvaWZ9CiAgPHA+eyRwcm9tcHRfdXNlcm5hbWV9Jm5ic3A7eyRpbnB1dF91c2VybmFtZX0mbmJzcDt7JHByb21wdF9wYXNzd29yZH0mbmJzcDsKICB7JGlucHV0X3Bhc3N3b3JkfTxici8+CiB7aWYgJGNhcHRjaGF9CiAgeyRjYXB0Y2hhX3RpdGxlfTogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNhcHRjaGFfcGhyYXNlIiAvPjxiciAvPgogIHskY2FwdGNoYX08YnIgLz4KIHsvaWZ9CiAgeyRpbnB1dF9zdWJtaXR9PGJyIC8+CiAgeyRsaW5rX2ZvcmdvdH0KeyRlbmRmb3JtfQogIDwvZm9udD4KPCEtLSBMb2dpbiBmb3JtIHRlbXBsYXRlIC0tPgogJzsKCiAgdmFyICRkZmx0X2xvZ291dGZvcm10ZW1wbGF0ZSA9ICcKPCEtLSBMb2dvdXQgZm9ybSB0ZW1wbGF0ZSAtLT4KIHskc3RhcnRmb3JtfQogIDxwPnskcHJvbXB0X2xvZ2dlZGlufSZuYnNwO3skdXNlcm5hbWV9PC9wPiAKICA8cD57JGxpbmtfbG9nb3V0fTwvcD4KICA8cD57JGxpbmtfY2hhbmdlc2V0dGluZ3N9PC9wPgogeyRlbmRmb3JtfQo8IS0tIExvZ291dCBmb3JtIHRlbXBsYXRlIC0tPgogJzsKCiAgdmFyICRkZmx0X2NoYW5nZXNldHRpbmdzdGVtcGxhdGUgPSAnCjwhLS0gY2hhbmdlIHNldHRpbmdzIHRlbXBsYXRlIC0tPgp7JHRpdGxlfQp7aWYgJG1lc3NhZ2UgIT0gXCdcJ30KICB7aWYgJGVycm9yICE9IFwnXCd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CiB7aWYgJGNvbnRyb2xjb3VudCA+IDB9CiAgPGNlbnRlcj4KICA8dGFibGUgd2lkdGg9Ijc1JSI+CiAgICAge2ZvcmVhY2ggZnJvbT0kY29udHJvbHMgaXRlbT1jb250cm9sfQogIDx0cj4KICAgICA8dGQ+eyRjb250cm9sLT5oaWRkZW59PGZvbnQgY29sb3I9InskY29udHJvbC0+Y29sb3J9Ij57JGNvbnRyb2wtPnByb21wdH17JGNvbnRyb2wtPm1hcmtlcn08L2ZvbnQ+PC90ZD4KICAgICA8dGQ+eyRjb250cm9sLT5jb250cm9sfXskY29udHJvbC0+YWRkdGV4dH08L3RkPgogey9mb3JlYWNofQogIDwvdGFibGU+CiAgPC9jZW50ZXI+CiB7L2lmfQogeyRoaWRkZW59eyRoaWRkZW4yfXskc3VibWl0fXskY2FuY2VsfQp7JGVuZGZvcm19CjwhLS0gY2hhbmdlIHNldHRpbmdzIHRlbXBsYXRlIC0tPgogJzsKCgogIC8vSG93IG1hbnkgc2Vjb25kcyBvZiBpbmFjdGl2aXR5IGJlZm9yZSBhIHVzZXIgaXMgYXV0b21hdGljYWxseSBsb2dnZWQgb3V0LgogIHZhciAkZXhwaXJ5dGltZTsKICAKICAvL1NldCB0aGlzIHRvIHRydWUgaWYgdXNlciBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byBkZWZhdWx0IHBhZ2UgYWZ0ZXIgCiAgLy8gbG9nZ2luZyBpbi9vdXQuCiAgdmFyICRsb2dpbnRhcmdldDsKICB2YXIgJG90aGVyaW50YXJnZXQ7CiAgdmFyICRsb2dvdXR0YXJnZXQ7CiAgdmFyICRvdGhlcm91dHRhcmdldDsgIAogIHZhciAkYWxsb3d1c2VyYWRtaW47CiAgdmFyICRlbmFibGVlbWFpbHB3OwogIHZhciAkbGFuZz0iIjsKICB2YXIgJHVzZXJtYW5pcCA9IGZhbHNlOwogIHZhciAkdHlwZXMgPSBmYWxzZTsKCiAgLy8gY29uc3RydWN0b3IKICBmdW5jdGlvbiBGcm9udEVuZFVzZXJzKCkKICB7CiAgICBwYXJlbnQ6OkNNU01vZHVsZSgpOwogICAgJHRoaXMtPnR5cGVzID0gYXJyYXkoICd0ZXh0JyA9PiAwLAoJCQkgICdjaGVja2JveCcgPT4gMSwKCQkJICAnZW1haWwnID0+IDIsCgkJCSAgJ3RleHRhcmVhJyA9PiAzLAoJCQkgICdkcm9wZG93bicgPT4gNCApOwogIH0KCiAgZnVuY3Rpb24gX2xvYWQoKQogIHsKICAgIGlmKCAkdGhpcy0+dXNlcm1hbmlwID09IE5VTEwgKQogICAgewogICAgICByZXF1aXJlX29uY2UoICJGcm9udEVuZFVzZXJzLmFwaS5waHAiICk7CiAgICAgICR0aGlzLT51c2VybWFuaXAgPSBuZXcgRnJvbnRFbmRVc2Vyc01hbmlwdWxhdG9yKCAkdGhpcyApOwogICAgfQogIH0KCiAgZnVuY3Rpb24gQWRkR3JvdXBQb3N0KCRncm91cCkKICB7CiAgICAvLyBhIGdyb3VwIHdhcyBqdXN0IGFkZGVkIGZyb20gdGhlIGJhY2tlbmQKICAgIC8vIGxldHMnIGFkZCB0aGUgc2FtZSBncm91cCBuYW1lIGhlcmUKICAgICRyZXN1bHQgPSAkdGhpcy0+QWRkR3JvdXAoJGdyb3VwLT5uYW1lLCR0aGlzLT5MYW5nKCdiYWNrZW5kX2dyb3VwJykpOwogIH0KCi8vICAgZnVuY3Rpb24gRGVsZXRlR3JvdXBQb3N0KCRncm91cCkKLy8gICB7Ci8vICAgICBkaWUoICJEZWxldGluZyBncm91cDogIi4kZ3JvdXAtPm5hbWUgKTsKLy8gICAgIC8vIGEgZ3JvdXAgd2FzIGp1c3QgYWRkZWQgZnJvbSB0aGUgYmFja2VuZAovLyAgICAgLy8gbGV0cycgYWRkIHRoZSBzYW1lIGdyb3VwIG5hbWUgaGVyZQovLyAgICAgJGlkID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3VwLT5uYW1lICk7Ci8vICAgICBpZiggJGlkICkKLy8gICAgICAgeyAKLy8gCSRyZXN1bHQgPSAkdGhpcy0+RGVsZXRlR3JvdXBGdWxsKCRpZCk7Ci8vICAgICAgIH0KLy8gICB9CgogIGZ1bmN0aW9uIEdlbmVyYXRlUmFuZG9tUHJpbnRhYmxlU3RyaW5nKCAkbGVuID0gMTAgKQogIHsKICAgICRvMSA9IG5ldyBSYW5kb20oIjIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RVVldYWVoiKTsKICAgIHJldHVybiAkbzEtPmdldCgkbGVuKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXROYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXROYW1lKCkgCQogIHsKICAgIHJldHVybiAnRnJvbnRFbmRVc2Vycyc7CiAgfQoKIAogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQkKICB7CiAgICByZXR1cm4gJzEuMS4yJzsKICB9CgogCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgbGFuZ2lmeUtleXMoKQogCiAgIEdpdmVuIGFuIGFzc29jaWF0aXZlIGFycmF5LCByZXBsYWNlIHRoZSB2YWx1ZXMgd2l0aAogICB0cmFuc2xhdGVkIG9uZXMuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gbGFuZ2lmeUtleXMoICRhcnIgKQogIHsKICAgICRvdXQgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJGFyciBhcyAkaz0+JHYgKQogICAgewogICAgICAkayA9ICR0aGlzLT5MYW5nKCRrKTsKICAgICAgJG91dFsgJGsgXSA9ICR2OwogICAgfQogICAgcmV0dXJuICRvdXQ7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSXNQbHVnaW5Nb2R1bGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgTWluaW11bUNNU1ZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gIjEuMCI7CiAgfQogIAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24gKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcgKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluU2VjdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uICgpCiAgewogICAgcmV0dXJuICd1c2Vyc2dyb3Vwcyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RGVwZW5kZW5jaWVzKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSggJ0NNU01haWxlcicgPT4gJzEuNzMuMycgKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRGcmllbmRseU5hbWUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIENvbnRlbnRQcmVSZW5kZXIoJiRjb250ZW50KQogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZmV1c2Vyc19sb2dnZWRpbicsKCR0aGlzLT5Mb2dnZWRJbklkKCkgPiAwKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZldXNlcnNfbG9nZ2lubmFtZScsJHRoaXMtPkxvZ2dlZEluTmFtZSgpKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRGcmllbmRseU5hbWUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9FeHBvcnRMb2dnZWRJblVzZXJWYXJpYWJsZXMoJGlkLCYkcGFyYW1zLCRyZXR1cm5pZCkgCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1c2VyaWQnLCAkdGhpcy0+TG9nZ2VkSW5JZCgpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAkdGhpcy0+TG9nZ2VkSW5OYW1lKCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsaW5rX2xvZ291dCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJsb2dvdXQiLCRyZXR1cm5pZCwKCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2xvZ291dCcpKSk7CiAgICAkcGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnKTsKICAgIGlmKCAkcGFnZSApCiAgICB7CiAgICAgICRpZCA9IENvbnRlbnRNYW5hZ2VyOjpHZXRQYWdlSURGcm9tQWxpYXMoICRwYWdlICk7CiAgICAgIGlmKCAkaWQgPT0gZmFsc2UgKQogICAgICB7CiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsaW5rX2NoYW5nZXNldHRpbmdzJywnPCEtLSBFcnJvciBjb3VsZCBub3QgZGV0ZXJtaW5lIHBhZ2UgZnJvbSBhbGlhcy9pZCAtLT4nKTsKICAgICAgfQogICAgICBlbHNlIAogICAgICB7CiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsaW5rX2NoYW5nZXNldHRpbmdzJywKICAgICAgICAgICAkdGhpcy0+Q3JlYXRlQ29udGVudExpbmsoICRpZCwgJHRoaXMtPkxhbmcoJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncycpKSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbGlua19jaGFuZ2VzZXR0aW5ncycsCgkJCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCJjaGFuZ2VzZXR0aW5ncyIsJHJldHVybmlkLAoJCQkJCSAgICAkdGhpcy0+TGFuZygncHJvbXB0X2NoYW5nZXNldHRpbmdzJykpKTsKICAgIH0KICAgICRwcm9wcyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcyggJHRoaXMtPkxvZ2dlZEluSWQoKSApOwogICAgZm9yZWFjaCggJHByb3BzIGFzICRwICkKICAgIHsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCRwWyd0aXRsZSddLCRwWydkYXRhJ10pOwogICAgfQogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEV2ZW50RGVzY3JpcHRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24gKCAkZXZlbnRuYW1lICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJy4kZXZlbnRuYW1lICk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RXZlbnRIZWxwKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRFdmVudEhlbHAgKCAkZXZlbnRuYW1lICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJy4kZXZlbnRuYW1lICk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RnJpZW5kbHlOYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUgKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEhhc0FkbWluKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBIYXNBZG1pbiAoKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9HZXRVc2Vyc0luQ1NWRm9ybWF0KCkKICAgTk9URTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgaW4gdGhlIGFwaQoKICAgR2V0IGEgbGlzdCBvZiBhbGwgdXNlcnMgaW4gQ1NWIGZvcm1hdCwgaW5jbHVkaW5nIGFsbCB1c2VyCiAgIHByb3BlcnRpZXMuCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0dldFVzZXJzSW5DU1ZGb3JtYXQoKQogIHsKICAgICAkc3RhcnQgPSAwOwogICAgICRudW0gPSAyOyAvLyB0b2RvLCBzaG91bGQgYmUgYSBwcmVmZXJlbmNlCiAgICAgJGRvbmUgPSAwOwoKICAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CgogICAgICR1aWQgPSAnJzsKICAgICAkZmlyc3QgPSAxOwogICAgIHdoaWxlKCAkZG9uZSA9PSAwICkKICAgICB7CiAgICAgICAkcXVlcnkgPSAic2VsZWN0IGRpc3RpbmN0IGdyb3VwbmFtZSx1c2VyaWQsdXNlcm5hbWUsY3JlYXRlZGF0ZSxleHBpcmVzLGRhdGEgZnJvbSBjbXNfbW9kdWxlX2ZldXNlcnNfZ3JvdXBzIEEsY21zX21vZHVsZV9mZXVzZXJzX2dyb3VwcHJvcG1hcCBCLCBjbXNfbW9kdWxlX2ZldXNlcnNfcHJvcGVydGllcyBDLCBjbXNfbW9kdWxlX2ZldXNlcnNfdXNlcnMgRCB3aGVyZSBBLmlkPUIuZ3JvdXBfaWQgYW5kIEMudGl0bGUgPSBCLm5hbWUgYW5kIEMudXNlcmlkID0gRC5pZCBvcmRlciBieSBncm91cG5hbWUsdXNlcmlkLHNvcnRfa2V5LG5hbWUgbGltaXQgJHN0YXJ0LCRudW0iOwogICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnkgKTsKICAgICAgIGlmKCAhJGRicmVzdWx0IHx8ICgkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgKQogICAgICAgewogICAgICAgICBlY2hvICRkYi0+RXJyb3JNc2coKTsKICAgICAgICAgJGRvbmUgPSAxOwogICAgICAgICBicmVhazsKICAgICAgIH0KCiAgICAgICAvLyBub3cgaXRlcmF0ZSB0aHJvdWdoIGFsbCBvZiB0aGUgcmVzdWx0cywgYW5kIGRvIHRoZSBleHBvcnQKICAgICAgICRvdXRwdXQgPSAnJzsKICAgICAgIHdoaWxlKCAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkKICAgICAgIHsKICAgICAgICAgIGlmKCAkdWlkICE9ICRyb3dbJ3VzZXJpZCddICkKICAgICAgICAgIHsgCiAgICAgICAgICAgIC8vIHVpZCBjaGFuZ2VkIGZyb20gdGhlIGxhc3Qgb25lCiAgICAgICAgICAgIGlmKCAkZmlyc3QgPT0gMCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkb3V0cHV0IC49ICJcbiI7ICAvLyBuZXdsaW5lCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpcnN0ID0gMDsKICAgICAgICAgICAgJG91dHB1dCAuPSAkcm93Wydncm91cG5hbWUnXS4iLCIuJHJvd1sndXNlcmlkJ10uIiwiLiRyb3dbJ3VzZXJuYW1lJ10uIiwiLgogICAgICAgICAgICAgICAgICAgICAgICRyb3dbJ2NyZWF0ZWRhdGUnXS4iLCIuJHJvd1snZXhwaXJlcyddOwogICAgICAgICAgICAkdWlkID0gJHJvd1sndXNlcmlkJ107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb3V0cHV0IHRoZSBwcm9wZXJ0eQogICAgICAgICAgJG91dHB1dCAuPSAiLCIuJHJvd1snZGF0YSddOwogICAgICAgfQoKICAgICAgIC8vIGdldCByZWFkeSBmb3IgYW5vdGhlciByb3VuZAogICAgICAgZWNobyAkb3V0cHV0OwogICAgICAgJHN0YXJ0ICs9ICRudW07CiAgICAgfQoKICAgICAvLyBvbmUgbGFzdCBuZXdsaW5lCiAgICAgZWNobyAiXG5lbmRcbiI7CiAgfQoKICBmdW5jdGlvbiBfR2V0VXNlckxvZ2luRm9ybSgkaWQsJiRwYXJhbXMsJHJldHVybmlkKSAKICB7CiAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2FwdGNoYSddKSAmJiAkcGFyYW1zWydjYXB0Y2hhJ10gPT0gMSkgCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5jbXMtPm1vZHVsZXNbJ0NhcHRjaGEnXSkpCiAgICAgICAgewogICAgICAgICAgICAkY2FwdGNoYSA9ICYkdGhpcy0+Z2V0TW9kdWxlSW5zdGFuY2UoJ0NhcHRjaGEnKTsKCiAgICAgICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignY2FwdGNoYV90aXRsZScsICR0aGlzLT5MYW5nKCdjYXB0Y2hhX3RpdGxlJykpOwogICAgICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhcHRjaGEnLCAkY2FwdGNoYS0+Z2V0Q2FwdGNoYSgpKTsKICAgICAgICB9CiAgICB9CgogICAgJHVzZXJuYW1lID0gKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10pPyRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ106JycpOwogICAgJHBhc3N3b3JkID0gKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3Bhc3N3b3JkJ10pPyRwYXJhbXNbJ2lucHV0X3Bhc3N3b3JkJ106JycpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcicsIGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pID8gJHBhcmFtc1snZXJyb3InXSA6ICcnKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgCgkJCSAgJHRoaXMtPmZlQ3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19sb2dpbicsICRyZXR1cm5pZCApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3VzZXJuYW1lJywgJHRoaXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdXNlcm5hbWUnLCAKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF91c2VybmFtZScsCgkJCQkJCSAgJHVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9sYWJlbCcsICRpZCApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcGFzc3dvcmQnLCAkdGhpcy0+TGFuZygncHJvbXB0X3Bhc3N3b3JkJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wYXNzd29yZCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0UGFzc3dvcmQoJGlkLCAnaW5wdXRfcGFzc3dvcmQnLAoJCQkJCQkgICAgICRwYXNzd29yZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfc3VibWl0JywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnYnRuX2xvZ2luJywKCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NpZ25pbl9idXR0b24nLCR0aGlzLT5MYW5nKCdsb2dpbicpKSwgJ2NsYXNzPSJzaWduaW5fYnV0dG9uIicpKTsKICAgICRwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcpOwogICAgaWYoICRwYWdlICkKICAgIHsKICAgICAgJGlkID0gQ29udGVudE1hbmFnZXI6OkdldFBhZ2VJREZyb21BbGlhcyggJHBhZ2UgKTsKICAgICAgaWYoICRpZCA9PSBmYWxzZSApCiAgICAgIHsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmtfZm9yZ290JywnPCEtLSBFcnJvciBjb3VsZCBub3QgZGV0ZXJtaW5lIHBhZ2UgZnJvbSBhbGlhcy9pZCAtLT4nKTsKICAgICAgfQogICAgICBlbHNlIAogICAgICB7CiAgICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsaW5rX2ZvcmdvdCcsCgkJCSAgICAkdGhpcy0+Q3JlYXRlQ29udGVudExpbmsoJGlkLCR0aGlzLT5MYW5nKCdmb3Jnb3RwdycpKSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgCiAgICB7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbGlua19mb3Jnb3QnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdmb3Jnb3RwdycsICRyZXR1cm5pZCwKCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2ZvcmdvdHB3JykpKTsKICAgIH0KCWlmIChpc3NldCgkcGFyYW1zWydvbmx5X2dyb3VwcyddKSkgewogICAgCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdvbmx5X2dyb3VwcycsICRwYXJhbXNbJ29ubHlfZ3JvdXBzJ10pIC4gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cgl9CgllbHNlIHsKICAgIAkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCX0KICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZmV1c2Vyc19sb2dpbmZvcm0nKTsKICB9CgoJCiBmdW5jdGlvbiBHZXRQYWdlSWQoJGFsaWFzKSB7CQkKICAgIGlmICgkYWxpYXM9PSIiKSByZXR1cm4gZmFsc2U7CiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAiU0VMRUNUIGNvbnRlbnRfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4iY29udGVudCBXSEVSRSBjb250ZW50X2FsaWFzID0gJyIuJGFsaWFzLiInIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQl7CiAgICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAgIHJldHVybiAkcm93Wydjb250ZW50X2lkJ107CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgZnVuY3Rpb24gX0dldFVzZXJMb2dvdXRGb3JtKCRpZCwmJHBhcmFtcywkcmV0dXJuaWQpIAogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2xvZ2dlZGluJywKCQkJICAkdGhpcy0+TGFuZygnbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VzZXJpZCcsICR0aGlzLT5Mb2dnZWRJbklkKCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICR0aGlzLT5Mb2dnZWRJbk5hbWUoKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmtfbG9nb3V0JywKCQkJICAkdGhpcy0+Q3JlYXRlRnJvbnRlbmRMaW5rKCRpZCwkcmV0dXJuaWQsImxvZ291dCIsCgkJCQkJCSAgICAkdGhpcy0+TGFuZygnbG9nb3V0JykpKTsKICAgICRwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycpOwogICAgaWYoICRwYWdlICkKICAgIHsKICAgICAgJGlkID0gQ29udGVudE1hbmFnZXI6OkdldFBhZ2VJREZyb21BbGlhcyggJHBhZ2UgKTsKICAgICAgaWYoICRpZCA9PSBmYWxzZSApCiAgICAgIHsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmtfY2hhbmdlc2V0dGluZ3MnLCc8IS0tIEVycm9yIGNvdWxkIG5vdCBkZXRlcm1pbmUgcGFnZSBmcm9tIGFsaWFzL2lkIC0tPicpOwogICAgICB9CiAgICAgIGVsc2UgCiAgICAgIHsKICAgICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xpbmtfY2hhbmdlc2V0dGluZ3MnLAogICAgICAgICAgICR0aGlzLT5DcmVhdGVDb250ZW50TGluayggJGlkLCAkdGhpcy0+TGFuZygncHJvbXB0X2NoYW5nZXNldHRpbmdzJykpKTsKICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdsaW5rX2NoYW5nZXNldHRpbmdzJywKCQkJICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsImNoYW5nZXNldHRpbmdzIiwkcmV0dXJuaWQsCgkJCQkJICAgICR0aGlzLT5MYW5nKCdwcm9tcHRfY2hhbmdlc2V0dGluZ3MnKSkpOwogICAgfQogICAgJHByb3BzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCAkdGhpcy0+TG9nZ2VkSW5JZCgpICk7CiAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJHAgKQogICAgewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJHBbJ3RpdGxlJ10sJHBbJ2RhdGEnXSk7CiAgICB9CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2ZldXNlcnNfbG9nb3V0Zm9ybScpOwogIH0KCgogZnVuY3Rpb24gX0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJHBlcm0gPSAnJyApCiAgewogIAkKICAJIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycsJzAnKSA9PSAnMScpCiAgCSAJewoJICAgICRwMSA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgQWRkIFVzZXJzJyApOwoJICAgICRwMiA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgTW9kaWZ5IFVzZXJzJyApOwoJICAgICRwMyA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgUmVtb3ZlIFVzZXJzJyApOwoJICAgICRwNCA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgQWRkIEdyb3VwcycgKTsKCSAgICAkcDUgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnRkVVIE1vZGlmeSBHcm91cHMnICk7CgkgICAgJHA2ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ0ZFVSBNb2RpZnkgR3JvdXAgQXNzaWdubWVudHMnICk7CgkgICAgJHA3ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ0ZFVSBSZW1vdmUgR3JvdXBzJyApOwoJICAgICRwOCA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnICk7CgkgICAgJHA5ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ0ZFVSBNb2RpZnkgRnJvbnRFbmRVc2VyUHJvcHMnICk7CgkgICAgJHAxMCA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdGRVUgTW9kaWZ5IFRlbXBsYXRlcycgKTsKCQl9CgkgZWxzZQoJIAl7CgkgICAgJHAxID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ0FkZCBVc2VycycgKTsKCSAgICAkcDIgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnTW9kaWZ5IFVzZXJzJyApOwoJICAgICRwMyA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdSZW1vdmUgVXNlcnMnICk7CgkgICAgJHA0ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ0FkZCBHcm91cHMnICk7CgkgICAgJHA1ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ01vZGlmeSBHcm91cHMnICk7CgkgICAgJHA2ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ01vZGlmeSBHcm91cCBBc3NpZ25tZW50cycgKTsKCSAgICAkcDcgPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnUmVtb3ZlIEdyb3VwcycgKTsKCSAgICAkcDggPSAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnICk7CgkgICAgJHA5ID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ01vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycgKTsKCSAgICAkcDEwID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ01vZGlmeSBUZW1wbGF0ZXMnICk7CiAgIAl9CgogICAgJHJldCA9IDA7CiAgICBzd2l0Y2goICRwZXJtICkKICAgICAgewogICAgICBjYXNlICcnOiAgLy8gYW55IHBlcm1pc3Npb24KCSRyZXQgPSAoJHAxIHx8ICRwMiB8fCAkcDMgfHwgJHA0IHx8ICRwNSB8fCAkcDYgfHwgJHA3IHx8ICRwOCB8fCAkcDkgfHwgJHAxMCApOwoJYnJlYWs7CgogICAgICBjYXNlICdhZGRncm91cCc6CgkkcmV0ID0gKCRwNCk7CglicmVhazsKCiAgICAgIGNhc2UgJ2FkZHVzZXInOgoJJHJldCA9ICgkcDEpOwoJYnJlYWs7CgogICAgICBjYXNlICdhZGRwcm9wJzoKICAgICAgY2FzZSAnYWRkcHJvcDInOgogICAgICBjYXNlICdlZGl0cHJvcCc6CiAgICAgIGNhc2UgJ2RlbGV0ZXByb3AnOgogICAgICBjYXNlICdwcm9wZXJ0aWVzJzsKICAgICAgICAkcmV0ID0gKCRwOSk7CiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlICdsaXN0dXNlcnMnOgoJJHJldCA9ICgkcDIgfHwgJHAzKTsKCWJyZWFrOwoKICAgICAgY2FzZSAnbGlzdGdyb3Vwcyc6CgkkcmV0ID0gKCRwNSB8fCAkcDYpOwoJYnJlYWs7CgogICAgICBjYXNlICdlZGl0Z3JvdXBzJzoKCSRyZXQgPSAoJHA1IHx8ICRwNik7CglicmVhazsKCiAgICAgIGNhc2UgJ2VkaXR1c2Vycyc6CgkkcmV0ID0gKCRwMik7CglicmVhazsKIAogICAgICBjYXNlICdyZW1vdmVncm91cHMnOgoJJHJldCA9ICgkcDcpOwoJYnJlYWs7CgogICAgICBjYXNlICdyZW1vdmV1c2Vycyc6CgkkcmV0ID0gKCRwMyk7CglicmVhazsKCiAgICAgIGNhc2UgJ2VkaXRwcmVmcyc6CiAgICAgIGNhc2UgJ3NpdGVwcmVmcyc6CgkkcmV0ID0gKCRwOCk7CglicmVhazsKCiAgICAgIGNhc2UgJ3VzZXJzbmdyb3Vwcyc6CiAgICAgICAgJHJldCA9ICgkcDEgfHwgJHAyIHx8ICRwMyB8fCAkcDQgfHwgJHA1IHx8ICRwNiB8fCAkcDcpOwogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAndGVtcGxhdGVzJzoKICAgICAgICAkcmV0ID0gKCRwMTApOwogICAgICAgIGJyZWFrOwoKICAgICAgZGVmYXVsdDoKCSRyZXQgPSAwOwoJYnJlYWs7CiAgICAgIH0KCiAgICByZXR1cm4gJHJldDsKICB9CgoKICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQl7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsbWVzc2FnZScpOwogIH0KCgogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogIAkgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmZXVzZXJzX3NwZWNpZmljX3Blcm1pc3Npb25zJywnMCcpID09ICcxJykKICAJIAl7CiAgICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFRlbXBsYXRlcycpIHx8CiAgICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0ZFVSBBZGQgR3JvdXBzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRkVVIE1vZGlmeSBHcm91cHMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdGRVUgUmVtb3ZlIEdyb3VwcycpIHx8CiAgICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0ZFVSBBZGQgVXNlcnMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFVzZXJzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRkVVIFJlbW92ZSBVc2VycycpIHx8CiAgICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0ZFVSBNb2RpZnkgRnJvbnRFbmRVc2VyUHJvcHMnKTsKCQl9CgkgZWxzZQoJICAgewogICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIEdyb3VwcycpIHx8CiAgICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBHcm91cHMnKSB8fAogICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdSZW1vdmUgR3JvdXBzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIFVzZXJzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFVzZXJzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUmVtb3ZlIFVzZXJzJykgfHwKICAgICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IEZyb250RW5kVXNlclByb3BzJyk7CiAgICAJfQogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkbWVzc2FnZSkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIFRoaXMgaXMgYW4gZXhhbXBsZSBvZiBhIHNpbXBsZSBtZXRob2QgdG8gZGlzcGxheQogICBlcnJvciBpbmZvcm1hdGlvbiBvbiB0aGUgYWRtaW4gc2lkZS4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfRGlzcGxheUVycm9yUGFnZSgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQsICRtZXNzYWdlPScnKQogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZygnZXJyb3InKSk7CiAgICBpZiAoJG1lc3NhZ2UgIT0gJycpCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsICRtZXNzYWdlKTsKICAgICAgfQogICAgICAKICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsKICB9CgoKICBmdW5jdGlvbiBfRG9BZGRHcm91cCggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIGFyZSB3ZSBjYW5jZWxsaW5nCiAgICBpZiAoaXNzZXQgKCRwYXJhbXNbJ2NhbmNlbCddKSkKICAgIHsKICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7CiAgICB9CgogICAgJGdyb3VwbmFtZSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSApICkKICAgICAgewoJJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogICAgICB9CiAgICAkZ3JvdXBkZXNjID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddICkgKQogICAgICB7CgkkZ3JvdXBkZXNjID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSk7CiAgICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogICAgaWYoICRncm91cG5hbWUgPT0gJycgfHwgJGdyb3VwZGVzYyA9PSAnJyApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIGdyb3VwIG5hbWUgZG9lc24ndCBhbHJlYWR5IGV4aXN0CiAgICBpZiggJHRoaXMtPkdldEdyb3VwSUQoICRncm91cG5hbWUgKSAhPSBmYWxzZSApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZ3JvdXBleGlzdHMnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgJHJlbG5hZGRlZCA9IDA7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCApCiAgICB7CiAgICAgICRwcm9wbmFtZSA9ICcnOwogICAgICAkc29ydG9yZGVyID0gJyc7CiAgICAgIGlmKCBwcmVnX21hdGNoKCAnL15pbnB1dF9yZXF1aXJlZF8vJywgJGtleSApICYmICgkdmFsICE9IDApICkKCXsKCSAgJHJlbG5hZGRlZCsrOwoJfQogICAgfQogICAgaWYoICRyZWxuYWRkZWQgPT0gMCApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9yZWxhdGlvbnMnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gd2UncmUgY2xlYXIgdG8gYWRkCiAgICAkcmV0ID0gJHRoaXMtPkFkZEdyb3VwKCAkZ3JvdXBuYW1lLCAkZ3JvdXBkZXNjICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkcmV0WzFdOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBhbHNvIGFkZCB0aGUgcHJvcGVydHkgY2hvaWNlcwogICAgJHRoaXMtPkRlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRyZXRbMV0gKTsKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsICkKICAgIHsKICAgICAgJHByb3BuYW1lID0gJyc7CiAgICAgICRzb3J0b3JkZXIgPSAnJzsKICAgICAgaWYoIHByZWdfbWF0Y2goICcvXmlucHV0X3JlcXVpcmVkXy8nLCAka2V5ICkgKQoJewoJICAkcHJvcG5hbWUgPSBzdWJzdHIoJGtleSxzdHJsZW4oJ2lucHV0X3JlcXVpcmVkXycpKTsKCX0KICAgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9zb3J0b3JkZXJfJy4kcHJvcG5hbWVdICkgKQoJewoJICAkc29ydG9yZGVyID0gJHBhcmFtc1snaW5wdXRfc29ydG9yZGVyXycuJHByb3BuYW1lXTsKCX0KCiAgICAgIGlmKCAkdmFsICE9IDAgJiYgJHByb3BuYW1lICE9ICcnKQoJewoJICAkdGhpcy0+QWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkcmV0WzFdLCAkcHJvcG5hbWUsICRzb3J0b3JkZXIsICR2YWwgKTsKCX0KICAgIH0KCiAgICAvLyBzZW5kIGFuIGV2ZW50CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWyduYW1lJ10gPSAkZ3JvdXBuYW1lOwogICAgJHBhcm1zWydkZXNjcmlwdGlvbiddID0gJGdyb3VwZGVzYzsKICAgICRwYXJtc1snaWQnXSA9ICRyZXRbMV07CiAgICAkdGhpcy0+U2VuZEV2ZW50KCdPbkNyZWF0ZUdyb3VwJywkcGFybXMpOwoKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnZ3JvdXBzJywgJHBhcmFtcyApOyAKICB9CgoKICBmdW5jdGlvbiBfRG9BZGRQcm9wKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgLy8gYXJlIHdlIGNhbmNlbGxpbmcKICAgIGlmIChpc3NldCAoJHBhcmFtc1snY2FuY2VsJ10pKQogICAgICB7CgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3Byb3BlcnRpZXMnICk7CiAgICAgIH0KICAgIAogICAgJG5hbWUgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9uYW1lJ10gKSApIHsKICAgICAgJG5hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7CiAgICAgICRuYW1lID0gc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy8gLycsJ18nLCRuYW1lKSk7CiAgICB9CiAgICAkcHJvbXB0ID0gJyc7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfcHJvbXB0J10gKSApIHsKICAgICAgJHByb21wdCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcHJvbXB0J10pOwogICAgfQogICAgJHR5cGUgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF90eXBlJ10pICkgewogICAgICAkdHlwZSA9ICRwYXJhbXNbJ2lucHV0X3R5cGUnXTsKICAgIH0KICAgICRzZWxvcHRpb25zID0gJyc7CiAgICAkb3B0aW9ucyA9ICcnOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3NlbG9wdGlvbnMnXSApICkgewogICAgICAkc2Vsb3B0aW9ucyA9ICRwYXJhbXNbJ2lucHV0X3NlbG9wdGlvbnMnXTsKICAgICAgJG9wdGlvbnMgPSBleHBsb2RlKCJcbiIsICRzZWxvcHRpb25zKTsKICAgIH0KICAgIAogICAgLy8gbm93IGNoZWNrIGV2ZXJ5dGhpbmcgb3V0CiAgICAvLyB0b2RvLCBhZGQgYSBtYXhpbXVtIGZpZWxkIGxlbmd0aCBwcmVmZXJlbmNlCiAgICBpZiggJG5hbWUgPT0gJycgfHwgJHByb21wdCA9PSAnJyApewogICAgICAkcGFyYW1zWydlcnJvciddID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCdhZGRwcm9wJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICAgIHJldHVybjsKICAgIH0gCgogICAgc3dpdGNoKCR0eXBlKXsKICAgIGNhc2UgMDoKICAgIGNhc2UgMjoKICAgICAgJGxlbmd0aCA9IDIwOwogICAgICAkbWF4bGVuZ3RoID0gMjA7CiAgICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ10gKSApIHsKCSRsZW5ndGggPSB0cmltKCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddKTsKICAgICAgfQogICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddICkgKSB7CgkkbWF4bGVuZ3RoID0gdHJpbSgkcGFyYW1zWydpbnB1dF9tYXhsZW5ndGgnXSk7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICBjYXNlIDE6CiAgICAgICRsZW5ndGggPSAxOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgJGxlbmd0aCA9IDI1NTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIC8vIGdldCB0aGUgbnVtYmVyIG9mIGVtcHR5IHZhbHVlcwogICAgICAvLyBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgYXJyYXkgY291bnQKICAgICAgJGVsZW1lbnRfY291bnRfYXJyYXkgPSBhcnJheV9jb3VudF92YWx1ZXMoJG9wdGlvbnMpOwogICAgICAkZW1wdHlfZWxlbWVudF9jb3VudCA9IAoJJGVsZW1lbnRfY291bnRfYXJyYXlbIiJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJcciJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJfXyJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJfX1xyIl07CiAgICAgICRsZW5ndGggPSBjb3VudCgkb3B0aW9ucykgLSAkZW1wdHlfZWxlbWVudF9jb3VudDsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAkbGVuZ3RoID0gMTsKICAgIH0KICAgIAogICAgCiAgICBpZiggKCgkdHlwZSA9PSAwIHx8ICR0eXBlID09IDIpICYmICggJGxlbmd0aCA8IDEgfHwgJGxlbmd0aCA+IDI1NSApKSB8fAoJKCR0eXBlID09IDQgJiYgJHNlbG9wdGlvbnMgPT0gJycgKSApewogICAgICAkcGFyYW1zWydlcnJvciddID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCdhZGRwcm9wMicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgICByZXR1cm47CiAgICB9CgogICAgCiAgICAvLyBBZGQgc2VsZWN0IG9wdGlvbnMKICAgIGlmICgkc2Vsb3B0aW9ucykgewogICAgICAkcmVzdWx0ID0gJHRoaXMtPkFkZFNlbGVjdE9wdGlvbnMoICRuYW1lLCAkb3B0aW9ucyApOwogICAgICBpZiggISRyZXN1bHRbMF0gKSB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXN1bHRbMV07CgkkdGhpcy0+bXlSZWRpcmVjdCgkaWQsJ2FkZHByb3AnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgfQogICAgfQoKICAgIAogICAgLy8gYW5kIGFkZCB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbgogICAgJHJlc3VsdCA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCApOwogICAgaWYoICEkcmVzdWx0WzBdICkgewogICAgICAkcGFyYW1zWydlcnJvciddID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHJlc3VsdFsxXTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCdhZGRwcm9wJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICB9CiAgICAKICAgICR0aGlzLT5teVJlZGlyZWN0dG9UYWIoICRpZCwgJ3Byb3BlcnRpZXMnICk7CiAgfQoKCiAgZnVuY3Rpb24gX0RvQWRkVXNlclN0ZXAxKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIGFyZSB3ZSBjYW5jZWxsaW5nCiAgICBpZiAoaXNzZXQgKCRwYXJhbXNbJ2NhbmNlbCddKSkKICAgIHsKICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICd1c2VycycgKTsKICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogICAgJHVzZXJuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF91c2VybmFtZSddKTsKICAgICRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSk7CiAgICAkcmVwZWF0ICAgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pOwoKICAgICRyZXQgPSAkdGhpcy0+X2hhbmRsZVVzZXJJbmZvVmFsaWRhdGlvbiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRtZXNzYWdlLCB0cnVlICk7CiAgICBzd2l0Y2goICRyZXQgKQogICAgICB7CiAgICAgIGNhc2UgLTE6IC8vIGVycm9yCgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRtZXNzYWdlOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZHVzZXInLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwoJYnJlYWs7CiAgICAgIGNhc2UgMDogIC8vIG5vIGVycm9yLCBidXQgZG9uJ3QgY29udGludWUgb3BlcmF0aW9uCgkkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkdXNlcicsICRyZXR1cm5pZCwkcGFyYW1zICk7CglyZXR1cm47CglicmVhazsKICAgICAgY2FzZSAxOiAgLy8gYWxsIGlzIGdvb2QsIGNvbnRpbnVlIG9wZXJhdGlvbgoJYnJlYWs7CiAgICAgIH0KCgogICAgLy8gY29udmVydCB0aGUgZXhwaXJlcyBmaWVsZCB0byBhIHJlYWwgdGltZQogICAgJGV4cGlyZXMgPSBOVUxMOwoKICAgIC8vIGFuZCBzdG9yZSB0aGlzIGFsbCBpbiB0aGUgcGFyYW1zLCAKICAgICRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiAgICAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddID0gJHBhc3N3b3JkOwogICAgJHBhcmFtc1snaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSA9ICRyZXBlYXQ7CgogICAgLy8gYW5kIGdvIHRvIHN0ZXAgMgogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2RvX2FkZHVzZXIyJywgJHJldHVybmlkLCRwYXJhbXMgKTsKCi8qICAgIAogLy8gYW5kIGFkZCB0aGUgdXNlcgogJHJldCA9ICR0aGlzLT5BZGRVc2VyKCAkdXNlcm5hbWUsICRlbWFpbCwgJHBhc3N3b3JkLCAkZXhwaXJlcyApOwogaWYoICRyZXRbMF0gPT0gZmFsc2UgKQogewogJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJHJldFsxXSApOwoJJHRoaXMtPl9EaXNwbGF5QWRtaW5BZGRVc2VyU3RlcDFQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJcmV0dXJuOwkKICAgICAgfQoKICAgICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsKICAgIGlmKCAkdWlkID09IGZhbHNlICkKICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2Vycm9yJywgIjEiKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ21lc3NhZ2UnLCAkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykgKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluQWRkVXNlclN0ZXAxUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCXJldHVybjsJCiAgICAgIH0KCiAgICAvLyBhbmQgdGhlbiBhZGQgaGltIHRvIGhpcyBncm91cHMgCiAgICBpZiggYXJyYXlfa2V5X2V4aXN0c19zdWJzdHIoICRwYXJhbXMsICdtZW1iZXJvZl8nKSApCiAgICAgIHsKICAgICAgCgkkZ3JwaWRzID0gc3BsaXQoIiwiLCRwYXJhbXNbJ21lbWJlcm9mJ10pOwoJZm9yZWFjaCggJGdycGlkcyBhcyAkZ2lkICkKCXsKCSAgJHJldCA9ICR0aGlzLT5Bc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApOwoJICBpZiggJHJldCA9PSBmYWxzZSApCgkgICAgewoJICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nKCdlcnJvcl9jYW50YXNzaWdudXNlcicpICk7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZFVzZXJTdGVwMVBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgICByZXR1cm47CQoJICAgIH0KCX0KICAgICAgfQoKICAgIC8vIGFuZCB0aGVuIGFkZCBoaXMgcHJvcGVydGllcwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWyd1c2VycHJvcHMnXSApICkKICAgICAgewoJJHByb3BzID0gc3BsaXQoIiwiLCRwYXJhbXNbJ3VzZXJwcm9wcyddKTsKCWZvcmVhY2goICRwcm9wcyBhcyAkcHJvcCApCgl7CgkgIGxpc3QoICRrLCAkdiApID0gc3BsaXQoIj0iLCRwcm9wKTsKCSAgJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJGssJHYsJHVpZCk7Cgl9CiAgICAgIH0KCiAgICAvLyBhbmQgd2UncmUgZG9uZQogICAgJHRoaXMtPm15UmVkaXJlY3QgKCRpZCwgJ2RlZmF1bHRhZG1pbicpOwoqLwogIH0KCgogIGZ1bmN0aW9uIF9Eb0FkZFVzZXJTdGVwMiggJGlkLCAmJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICAvLyBkbyB3ZSB3YW50IHRvIGdvIGJhY2sKICAgIGlmKCBpc3NldCggJHBhcmFtc1snYmFjayddICkgKQogICAgICB7CgkvLyB5dXAgd2UgZG8KCSRwYXJhbXMgPSBleHBsb2RlX3dpdGhfa2V5KCAkcGFyYW1zWydzdGVwMV9wYXJhbXMnXSApOzsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGR1c2VyJywgJHJldHVybmlkLCRwYXJhbXMgKTsKICAgICAgfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICAgICAgewoJLy8geXVwIHdlIGRvCgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCAkaWQsICd1c2VycycgKTsKICAgICAgfQoKICAgIC8vIGdldCB0aGUgZmllbGQgaW5mbwogICAgJGZsZGluZm8gPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApCiAgICAgIHsKCWlmKCBwcmVnX21hdGNoKCcvXmhpZGRlbl8vJywgJGsgKSApCgkgIHsKCSAgICAkZmxkbmFtZSA9IHN1YnN0ciggJGssIHN0cmxlbignaGlkZGVuXycpKTsKCSAgICAkcHJvcGluZm8gPSBzcGxpdCgnOycsJHYpOwoJICAgICRmbGRpbmZvWyRmbGRuYW1lXSA9ICRwcm9waW5mbzsKCSAgfQogICAgICB9CgogICAgLy8gbm93IGdldCBlYWNoIG9mIHRoZSBmaWVsZHMKICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApCiAgICAgIHsKCWlmKCBwcmVnX21hdGNoKCcvXmlucHV0Xy8nLCAkayApICkKCSAgewoJICAgICRmbGRuYW1lID0gc3Vic3RyKCAkaywgc3RybGVuKCdpbnB1dF8nKSk7CgkgICAgJGZpZWxkc1skZmxkbmFtZV0gPSAkdjsgCgkgIH0KICAgICAgfQoKICAgIC8vIG5vdyB2YWxpZGF0ZQogICAgZm9yZWFjaCggJGZsZGluZm8gYXMgJG5hbWUgPT4gJHZhbCApCiAgICAgIHsKCS8vIHByb2Nlc3MgZW1wdHkgcmVxdWlyZWQgZmllbGRzCgkvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGVtcHR5IG9wdGlvbmFsIG9uZXMKCWlmKCAkdmFsWzNdID09IDIgJiYgKCFpc3NldCggJGZpZWxkc1skbmFtZV0gKSB8fCAkZmllbGRzWyRuYW1lXSA9PSAnJykgKQoJICB7CgkgICAgLy8gYSByZXF1aXJlZCBmaWVsZCBpcyBlbXB0eQoJICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSggJHBhcmFtcywgZXhwbG9kZV93aXRoX2tleSggJHBhcmFtc1snc3RlcDFfcGFyYW1zJ10gKSk7CgkgICAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nLCRuYW1lKTsKCSAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZG9fYWRkdXNlcjInLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJICAgIHJldHVybjsKCSAgfQoKCS8vIHZhbGlkYXRlIGZpbGxlZCBpbiBmaWVsZHMKCWlmKCBpc3NldCggJGZpZWxkc1skbmFtZV0gKSApCgkgIHsKCSAgICBzd2l0Y2goICR2YWxbMV0gKQoJICAgICAgewoJICAgICAgY2FzZSAwOiAvLyB0ZXh0CgkJLy8gbm90IG11Y2ggd2UgY2FuIGRvIHRvIHZhbGlkYXRlIGEgdGV4dCBmaWVsZC4KCQlicmVhazsKCSAgICAgIGNhc2UgMTogLy8gY2hlY2tib3gKCQkvLyBvciBhIGNoZWNrYm94CgkJYnJlYWs7CgkgICAgICBjYXNlIDI6IC8vIGVtYWlsCgkJLy8gZW1haWwgYWRkcmVzc2VzIGNhbiBiZSB2YWxpZGF0ZWQgdGhvdWdoCgkJYnJlYWs7CgkgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCgkJLy8gYSB0ZXh0YXJlYSBjYW4gYmUgdmFsaWRhdGVkIGZvciBsZW5ndGguCgkJYnJlYWs7CgkgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCgkJLy8gaG93IGNhbiB3ZSB2YWxpZGF0ZSBhIGRyb3Bkb3duPwoJCWJyZWFrOwoJICAgICAgfQoJICB9CiAgICAgIH0KCiAgICAvLyBnZXQgdGhlIHBhcm1zIGZyb20gdGhlIGZpcnN0IHN0ZXAKICAgICRwYXJtczEgPSBleHBsb2RlX3dpdGhfa2V5KCAkcGFyYW1zWydzdGVwMV9wYXJhbXMnXSApOwogICAgCiAgICAvLyBhbmQgbWVyZ2UgZW0gaW50byAkcGFyYW1zIHNvIHdlIGNhbiBhY3R1YWxseSBhZGQgdGhlIHVzZXIgYWNjb3VudAogICAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCAkcGFyYW1zLCAkcGFybXMxICk7CgogICAgLy8gbm93IGZpbmQgb3V0IHdoaWNoIGdyb3VwcyBoZSdzIGEgbWVtYmVyIG9mCiAgICAkbWVtYmVyb2YgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApCiAgICAgIHsKCWlmKCBwcmVnX21hdGNoKCcvXm1lbWJlcm9mXy8nLCAkayApICkKCSAgewoJICAgICRtZW1iZXJvZltdID0gJHBhcmFtc1ska107CgkgIH0KICAgICAgfQoKICAgIC8vIG5vdyB3ZSBjYW4gYWN0dWFsbHkgYWRkIHRoZSB1c2VyCiAgICAkcmV0ID0gJHRoaXMtPkFkZFVzZXIoICRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10sIAoJCQkgICAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddLAoJCQkgICAkcGFyYW1zWydpbnB1dF9leHBpcmVzZGF0ZSddICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJJHBhcmFtc1snbWVzc2FnZSddID0gJHJldFsxXTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdkb19hZGR1c2VyMicsICRyZXR1cm5pZCwkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KICAgICR1aWQgPSAkcmV0WzFdOwoKICAgIC8vIGFuZCBhZGQgaGltIHRvIGhpcyBncm91cHMKICAgIGZvcmVhY2goICRtZW1iZXJvZiBhcyAkbWVtICkKICAgICAgewoJaWYoICEkdGhpcy0+QXNzaWduVXNlclRvR3JvdXAoICRyZXRbMV0sICRtZW0gKSApCgkgIHsKCSAgICAkcGFyYW1zWydlcnJvciddID0gMTsKCSAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGdyb3VwaWQnLCRtZW0pOwoJICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdkb19hZGR1c2VyMicsICRyZXR1cm5pZCwkcGFyYW1zICk7CgkgICAgcmV0dXJuOwoJICB9CiAgICAgIH0KCiAgICAvLyBhbmQgYWRkIGhpcyBwcm9wZXJ0aWVzCiAgICBmb3JlYWNoKCAkZmllbGRzIGFzICRrID0+ICR2ICkKICAgICAgewoJJHJldCA9ICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCAkaywgJHYsICR1aWQgKTsKCWlmKCAkcmV0ID09IGZhbHNlICkKCSAgewoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcicpOwoJICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdkb19hZGR1c2VyMicsICRyZXR1cm5pZCwkcGFyYW1zICk7CgkgICAgcmV0dXJuOwoJICB9CiAgICAgIH0KCiAgICAvLyBzZW5kIGFuIGV2ZW50CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWydpZCddID0gJHVpZDsKICAgICRwYXJtc1snbmFtZSddID0gJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXTsKICAgICR0aGlzLT5TZW5kRXZlbnQoJ09uQ3JlYXRlVXNlcicsJHBhcm1zKTsKCiAgICAvLyBrZWVwIGEgbG9nIG9mIGl0CiAgICAkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKCQkgICR0aGlzLT5MYW5nKCd1c2VyX2FkZGVkJyxhcnJheSgkdWlkLCRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10pKSk7CgogICAgLy8gYW5kIHRoYXQgc2hvdWxkIGJlIGl0CiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCAkaWQsICd1c2VycycgKTsKICB9CgoKICBmdW5jdGlvbiBfRG9BZG1pbkFjdGlvbnMoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2J1dHRvbl9leHBvcnQnXSApICkKICAgICAgewoJLy8gd2Ugd2FudCB0byBleHBvcnQgYSBjc3YgZmlsZSBkbyB3ZQoJaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsKCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ZmV1c2Vycy5jc3YnKTsKCXdoaWxlKEBvYl9lbmRfY2xlYW4oKSk7CgkkdGhpcy0+X0dldFVzZXJzSW5DU1ZGb3JtYXQoKTsKCWV4aXQoKTsKICAgICAgfQogIH0KCiAgZnVuY3Rpb24gX0RvRGVsZXRlR3JvdXAoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICBpZiAoIWlzc2V0ICgkcGFyYW1zWydncm91cF9pZCddKSB8fCAkcGFyYW1zWydncm91cF9pZCddID09ICIiKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJcmV0dXJuOwogICAgICB9ICAKCiAgICAkZ3JvdXAgPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCAkcGFyYW1zWydncm91cF9pZCddICk7CiAgICBwcmludF9yKCAkZ3JvdXAgKTsKICAgIGlmKCAhaXNzZXQoJGdyb3VwWydpZCddKSAmJiAkZ3JvdXBbMF0gPT0gRkFMU0UgKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZ3JvdXBbMV0gKTsKCXJldHVybjsKICAgICAgfQoKICAgICRyZXQgPSAkdGhpcy0+RGVsZXRlR3JvdXBGdWxsKCAkcGFyYW1zWydncm91cF9pZCddICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRncm91cFsxXSApOwoJcmV0dXJuOwogICAgICB9CgogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgICRwYXJtc1snaWQnXSA9ICRwYXJhbXNbJ2dyb3VwX2lkJ107CiAgICAkcGFybXNbJ25hbWUnXSA9ICRncm91cFsnZ3JvdXBuYW1lJ107CiAgICAkdGhpcy0+U2VuZEV2ZW50KCdPbkRlbGV0ZUdyb3VwJywkcGFybXMpOwoKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnZ3JvdXBzJyApOwogIH0KCgogIGZ1bmN0aW9uIF9Eb0RlbGV0ZVByb3BlcnR5KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoICFpc3NldCggJHBhcmFtc1sncHJvcG5hbWUnXSApICkKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2VudHBhcmFtcycpOwoJJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsJ3Byb3BlcnRpZXMnLCRwYXJhbXMpOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gZGVsZXRlIGFsbCBvY2N1cmFuY2VzIG9mIHRoaXMgcHJvcGVydHkgbmFtZSBpbiB0aGUgcHJvcGVydGllcyB0YWJsZQogICAgJHJlc3VsdCA9ICR0aGlzLT5EZWxldGVVc2VyUHJvcGVydHlCeU5hbWUoICRwYXJhbXNbJ3Byb3BuYW1lJ10gKTsKCiAgICAvLyBXZSBuZWVkIHRvIGRlbGV0ZSBzZWxlY3Qgb3B0aW9ucyByZWdhcmRsZXNzIG9mIHRoZSBjb250cm9sIHR5cGUsCiAgICAvLyBiZWNhdXNlIHdlIGRvbid0IGRlbGV0ZSBzZWxlY3Qgb3B0aW9ucyB3aGVuIGNoYW5naW5nIGNvbnRyb2wgdHlwZXMKICAgICRyZXN1bHQgPSAkdGhpcy0+RGVsZXRlU2VsZWN0T3B0aW9ucyggJHBhcmFtc1sncHJvcG5hbWUnXSApOwogICAgLy8gbm93IHJlYWR5IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkKICAgICRyZXN1bHQgPSAkdGhpcy0+RGVsZXRlUHJvcGVydHlEZWZuKCAkcGFyYW1zWydwcm9wbmFtZSddICk7CiAgICBpZiggISRyZXN1bHQgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90ZGVsZXRlcHJvcGVydHknKTsKICAgICAgfQogICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsJ3Byb3BlcnRpZXMnLCRwYXJhbXMpOwogIH0KCgogIGZ1bmN0aW9uIF9Eb0RlbGV0ZVVzZXIoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICBpZiAoIWlzc2V0ICgkcGFyYW1zWyd1c2VyX2lkJ10pIHx8ICRwYXJhbXNbJ3VzZXJfaWQnXSA9PSAiIikKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZyAoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCXJldHVybjsKICAgICAgfSAgCgogICAgJHVzZXIgPSAkdGhpcy0+R2V0VXNlckluZm8oICRwYXJhbXNbJ3VzZXJfaWQnXSApOwogICAgaWYoICR1c2VyWzBdID09IEZBTFNFICkKICAgICAgewoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJldFsxXSApOwoJcmV0dXJuOwogICAgICB9CgogICAgJHJldCA9ICR0aGlzLT5EZWxldGVVc2VyRnVsbCggJHBhcmFtc1sndXNlcl9pZCddICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRyZXRbMV0gKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIHNlbmQgYW4gZXZlbnQKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkcGFybXNbJ2lkJ10gPSAkcGFyYW1zWyd1c2VyX2lkJ107CiAgICAkcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlclsxXVsndXNlcm5hbWUnXTsKICAgICR0aGlzLT5TZW5kRXZlbnQoICdPbkRlbGV0ZVVzZXInLCAkcGFybXMgKTsKCiAgICAvLyBhbmQgbG9nIGl0CiAgICAkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKCQkgICR0aGlzLT5MYW5nKCd1c2VyX2RlbGV0ZWQnLCRwYXJhbXNbJ3VzZXJfaWQnXSkgKTsKCiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3VzZXJzJyApOwogIH0KCgogIGZ1bmN0aW9uIF9Eb0VkaXRHcm91cCggJGlkLCAmJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICBpZiAoaXNzZXQgKCRwYXJhbXNbJ2NhbmNlbCddKSkKICAgIHsKICAgICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7CiAgICB9CgogICAgaWYgKCFpc3NldCAoJHBhcmFtc1snZ3JvdXBfaWQnXSkgfHwgJHBhcmFtc1snZ3JvdXBfaWQnXSA9PSAiIikKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgkkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZWRpdGdyb3VwJywgJHJldHVybmlkLCRwYXJhbXMgKTsKCXJldHVybjsKICAgICAgfSAgCgogICAgJGdyb3VwbmFtZSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSApICkKICAgICAgewoJJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogICAgICB9CiAgICAkZ3JvdXBkZXNjID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddICkgKQogICAgICB7CgkkZ3JvdXBkZXNjID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSk7CiAgICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogICAgaWYoICRncm91cG5hbWUgPT0gJycgfHwgJGdyb3VwZGVzYyA9PSAnJyApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdlZGl0Z3JvdXAnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgJHJlbG5hZGRlZCA9IDA7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCApCiAgICB7CiAgICAgICRwcm9wbmFtZSA9ICcnOwogICAgICAkc29ydG9yZGVyID0gJyc7CiAgICAgIGlmKCBwcmVnX21hdGNoKCAnL15pbnB1dF9yZXF1aXJlZF8vJywgJGtleSApICYmICgkdmFsICE9IDApICkKCXsKCSAgJHJlbG5hZGRlZCsrOwoJfQogICAgfQogICAgaWYoICRyZWxuYWRkZWQgPT0gMCApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9yZWxhdGlvbnMnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAkcmV0ID0gJHRoaXMtPlNldEdyb3VwKCAkcGFyYW1zWydncm91cF9pZCddLCAkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSwKCQkJICAgICRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRyZXRbMV0gKTsKCXJldHVybjsKICAgICAgfQoKICAgIC8vIGFsc28gYWRkIHRoZSBwcm9wZXJ0eSBjaG9pY2VzCiAgICAkdGhpcy0+RGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJHBhcmFtc1snZ3JvdXBfaWQnXSApOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWwgKQogICAgewogICAgICBpZiggcHJlZ19tYXRjaCggJy9eaW5wdXRfcmVxdWlyZWRfLycsICRrZXkgKSApCgl7CgkgICRwcm9wbmFtZSA9IHN1YnN0cigka2V5LHN0cmxlbignaW5wdXRfcmVxdWlyZWRfJykpOwoJfQogICAgICBlbHNlIAoJewoJICBjb250aW51ZTsKCX0KICAgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9zb3J0b3JkZXJfJy4kcHJvcG5hbWVdICkgKQoJewoJICAkc29ydG9yZGVyID0gJHBhcmFtc1snaW5wdXRfc29ydG9yZGVyXycuJHByb3BuYW1lXTsKCX0KICAgICAgaWYoICR2YWwgIT0gMCAmJiAkcHJvcG5hbWUgIT0gJycgKQoJewoJICAkdGhpcy0+QWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkcGFyYW1zWydncm91cF9pZCddLCAkcHJvcG5hbWUsICRzb3J0b3JkZXIsICR2YWwgKTsKCX0KICAgIH0KCiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ2dyb3VwcycgKTsKICB9CgoKICBmdW5jdGlvbiBfRG9FZGl0UHJvcGVydHkoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgJG1heGxlbmd0aCA9IDI1NTsKICAgICRuYW1lID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X25hbWUnXSApICkgCiAgICAgIHsKCSRuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF9uYW1lJ10pOyAKCSRuYW1lID0gc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy8gLycsJ18nLCRuYW1lKSk7CiAgICAgIH0KICAgICRwcm9tcHQgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfcHJvbXB0J10gKSApewogICAgICAkcHJvbXB0ID0gdHJpbSgkcGFyYW1zWydpbnB1dF9wcm9tcHQnXSk7IAogICAgfQogICAgJHR5cGUgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfdHlwZSddICkgKSB7CiAgICAgICR0eXBlID0gdHJpbSgkcGFyYW1zWydpbnB1dF90eXBlJ10pOyAKICAgIH0KICAgICRzZWxvcHRpb25zID0gJyc7CiAgICAkb3B0aW9ucyA9ICcnOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2V4dHJhJ10gKSApIHsKICAgICAgJHNlbG9wdGlvbnMgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2V4dHJhJ10pOwogICAgICAkb3B0aW9ucyA9IGV4cGxvZGUoIlxuIiwgJHNlbG9wdGlvbnMpOwogICAgfQoJCiAgICBpZiggJG5hbWUgPT0gJycgfHwgJHByb21wdCA9PSAnJykKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgllY2hvICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCdwcm9wZXJ0aWVzJywkcGFyYW1zKTsKCXJldHVybjsKICAgICAgfQoKICAgIHN3aXRjaCgkdHlwZSl7CiAgICBjYXNlIDA6IC8vIHRleHQgaW5wdXQKICAgIGNhc2UgMjogLy8gZW1haWwKICAgICAgJGxlbmd0aCA9IDIwOwogICAgICAkbWF4bGVuZ3RoID0gMjA7CiAgICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ10gKSApIHsKCSRsZW5ndGggPSB0cmltKCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddKTsKICAgICAgfQogICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddICkgKSB7CgkkbWF4bGVuZ3RoID0gdHJpbSgkcGFyYW1zWydpbnB1dF9tYXhsZW5ndGgnXSk7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICRsZW5ndGggPSAxOwogICAgICBicmVhazsKICAgIGNhc2UgMzogLy8gdGV4dGFyZWEKICAgICAgJGxlbmd0aCA9IDI1NTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgIC8vIGdldCB0aGUgbnVtYmVyIG9mIGVtcHR5IHZhbHVlcwogICAgICAvLyBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgYXJyYXkgY291bnQKICAgICAgJGVsZW1lbnRfY291bnRfYXJyYXkgPSBhcnJheV9jb3VudF92YWx1ZXMoJG9wdGlvbnMpOwogICAgICAkZW1wdHlfZWxlbWVudF9jb3VudCA9IAoJJGVsZW1lbnRfY291bnRfYXJyYXlbIiJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJcciJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJfXyJdICsKCSRlbGVtZW50X2NvdW50X2FycmF5WyJfX1xyIl07CiAgICAgICRsZW5ndGggPSBjb3VudCgkb3B0aW9ucykgLSAkZW1wdHlfZWxlbWVudF9jb3VudDsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAkbGVuZ3RoID0gMTsKICAgIH0KCQogICAgaWYoICgkdHlwZSA9PSAwICYmICggJGxlbmd0aCA8IDEgfHwgJGxlbmd0aCA+IDI1NSApKSB8fAoJKCR0eXBlID09IDQgJiYgJHNlbG9wdGlvbnMgPT0gJycgKSApewogICAgICAkcGFyYW1zWydlcnJvciddID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICAgICAgZWNobyAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpOwogICAgICBlY2hvICJzZWxvcHRpb25zID0gIiAuICRzZWxvcHRpb25zOwogICAgICAkdGhpcy0+bXlSZWRpcmVjdCgkaWQsJ2FkZHByb3AnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgcmV0dXJuOwogICAgfQoJCiAgICAvLyBhbmQgYWRkIHRoZSBwcm9lcHJ0eSBkZWZpbml0aW9uCiAgICBpZiAoJHNlbG9wdGlvbnMpIHsKICAgICAgJHRoaXMtPkRlbGV0ZVNlbGVjdE9wdGlvbnMoICRuYW1lICk7CiAgICAgICRyZXN1bHQgPSAkdGhpcy0+QWRkU2VsZWN0T3B0aW9ucyggJG5hbWUsICRvcHRpb25zICk7CgogICAgICBpZiggISRyZXN1bHRbMF0gKSB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXN1bHRbMV07CgllY2hvICRyZXN1bHRbMV07CgkkdGhpcy0+bXlSZWRpcmVjdCgkaWQsJ2FkZHByb3AnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgfQogICAgfQoKICAgICRyZXMgPSAkdGhpcy0+U2V0UHJvcGVydHlEZWZuKCAkcGFyYW1zWydwcm9wbmFtZSddLCAkbmFtZSwgJHByb21wdCwgJGxlbmd0aCwgJHR5cGUsICRtYXhsZW5ndGggKTsKICAgIGlmKCAkcmVzID09IGZhbHNlICkKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZGJlcnJvcicpOwoJJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsJ3Byb3BlcnRpZXMnLCRwYXJhbXMpOwoJcmV0dXJuOwogICAgICB9CgogICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsJ3Byb3BlcnRpZXMnKTsKICB9CgoKICBmdW5jdGlvbiBfRG9FZGl0VXNlclN0ZXAxKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIGFyZSB3ZSBjYW5jZWxsaW5nCiAgICBpZiAoaXNzZXQgKCRwYXJhbXNbJ2NhbmNlbCddKSkKICAgICAgewoJJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICd1c2VycycgKTsKICAgICAgfQoKICAgIGlmICggIWlzc2V0KCRwYXJhbXNbJ3VzZXJfaWQnXSkgKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gbWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXJzIGFyZSBmaWxsZWQgaW4KICAgICR1c2VyX2lkICAgPSB0cmltKCRwYXJhbXNbJ3VzZXJfaWQnXSk7CiAgICAkdXNlcm5hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10pOwogICAgJHBhc3N3b3JkID0gdHJpbSgkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddKTsKICAgICRyZXBlYXQgICA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSk7CgogICAgJHJldCA9ICR0aGlzLT5faGFuZGxlVXNlckluZm9WYWxpZGF0aW9uKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UsIGZhbHNlLCAKCQkJCQkgICAgIHRydWUsIGZhbHNlICk7CiAgICBzd2l0Y2goICRyZXQgKQogICAgICB7CiAgICAgIGNhc2UgLTE6IC8vIGVycm9yCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlcnJvcicsICIxIik7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJG1lc3NhZ2UgKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluRWRpdFVzZXJTdGVwMVBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CglyZXR1cm47CiAgICAgIGNhc2UgMDogIC8vIG5vIGVycm9yLCBidXQgZG9uJ3QgY29udGludWUgb3BlcmF0aW9uCgkkdGhpcy0+X0Rpc3BsYXlBZG1pblVzZXJQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJcmV0dXJuOwogICAgICBjYXNlIDE6ICAvLyBhbGwgaXMgZ29vZCwgY29udGludWUgb3BlcmF0aW9uCglicmVhazsKICAgICAgfQoKICAgIC8vIGxvYWQgcHJvcGVydGllcyBhbmQgc2V0IHRoZW0gdXAKICAgIC8vIGZvciB0aGUgbmV4dCBwYWdlCiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoICR1c2VyX2lkICk7CiAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJHByb3AgKQogICAgewogICAgICAkcGFyYW1zWydpbnB1dF8nLiRwcm9wWyd0aXRsZSddXSA9IHVybGVuY29kZSgkcHJvcFsnZGF0YSddKTsKICAgIH0KCiAgICAvLyBBbmQgR28gdG8gc3RlcCAyCiAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZG9fZWRpdHVzZXIyJywgJHJldHVybmlkLCRwYXJhbXMgKTsKCiAgfQoKCiAgZnVuY3Rpb24gX0RvRWRpdFVzZXJTdGVwMyggJGlkLCAmJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICAvLyBkbyB3ZSB3YW50IHRvIGdvIGJhY2sKICAgIGlmKCBpc3NldCggJHBhcmFtc1snYmFjayddICkgKQogICAgICB7CgkvLyB5dXAgd2UgZG8KCSRwYXJhbXMgPSBleHBsb2RlX3dpdGhfa2V5KCAkcGFyYW1zWydzdGVwMV9wYXJhbXMnXSApOzsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdlZGl0dXNlcicsICRyZXR1cm5pZCwkcGFyYW1zICk7CiAgICAgIH0KCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWyd1c2VyX2lkJ10gKSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgICB9CgogICAgLy8gZ2V0IHRoZSBmaWVsZCBpbmZvCiAgICAkZmxkaW5mbyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrID0+ICR2ICkKICAgIHsKICAgICAgaWYoIHByZWdfbWF0Y2goJy9eaGlkZGVuXy8nLCAkayApICkKCXsKCSAgJGZsZG5hbWUgPSBzdWJzdHIoICRrLCBzdHJsZW4oJ2hpZGRlbl8nKSk7CgkgICRwcm9waW5mbyA9IHNwbGl0KCc7Jywkdik7CgkgICRmbGRpbmZvWyRmbGRuYW1lXSA9ICRwcm9waW5mbzsKCX0KICAgIH0KCiAgICAvLyBub3cgZ2V0IGVhY2ggb2YgdGhlIGZpZWxkcwogICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrID0+ICR2ICkKICAgIHsKICAgICAgaWYoIHByZWdfbWF0Y2goJy9eaW5wdXRfLycsICRrICkgKQoJewoJICAkZmxkbmFtZSA9IHN1YnN0ciggJGssIHN0cmxlbignaW5wdXRfJykpOwoJICAkZmllbGRzWyRmbGRuYW1lXSA9ICR2OyAKCX0KICAgIH0KCiAgICAvLyBub3cgdmFsaWRhdGUKICAgIGZvcmVhY2goICRmbGRpbmZvIGFzICRuYW1lID0+ICR2YWwgKQogICAgewogICAgICAvLyBwcm9jZXNzIGVtcHR5IHJlcXVpcmVkIGZpZWxkcwogICAgICAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGVtcHR5IG9wdGlvbmFsIG9uZXMKICAgICAgaWYoICR2YWxbM10gPT0gMiAmJiAoIWlzc2V0KCAkZmllbGRzWyRuYW1lXSApIHx8ICRmaWVsZHNbJG5hbWVdID09ICcnKSApCgl7CgkgIC8vIGEgcmVxdWlyZWQgZmllbGQgaXMgZW1wdHkKCSAgJHBhcmFtcyA9IGFycmF5X21lcmdlKCAkcGFyYW1zLCBleHBsb2RlX3dpdGhfa2V5KCAkcGFyYW1zWydzdGVwMV9wYXJhbXMnXSApKTsKCSAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSk7CgkgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdkb19hZGR1c2VyMicsICRyZXR1cm5pZCwkcGFyYW1zICk7CgkgIHJldHVybjsKCX0KCiAgICAgIC8vIHZhbGlkYXRlIGZpbGxlZCBpbiBmaWVsZHMKICAgICAgaWYoIGlzc2V0KCAkZmllbGRzWyRuYW1lXSApICkKCXsKCSAgc3dpdGNoKCAkdmFsWzFdICkKCSAgICB7CgkgICAgY2FzZSAwOiAvLyB0ZXh0CgkgICAgICAvLyBub3QgbXVjaCB3ZSBjYW4gZG8gdG8gdmFsaWRhdGUgYSB0ZXh0IGZpZWxkLgoJICAgICAgYnJlYWs7CgkgICAgY2FzZSAxOiAvLyBjaGVja2JveAoJICAgICAgLy8gb3IgYSBjaGVja2JveAoJICAgICAgYnJlYWs7CgkgICAgY2FzZSAyOiAvLyBlbWFpbAoJICAgICAgLy8gZW1haWwgYWRkcmVzc2VzIGNhbiBiZSB2YWxpZGF0ZWQgdGhvdWdoCgkgICAgICBicmVhazsKCSAgICBjYXNlIDM6IC8vIHRleHRhcmVhCgkgICAgICAvLyBtYXliZSBzaXplPwoJICAgICAgYnJlYWs7CgkgICAgY2FzZSA0OiAvLyBkcm9wZG93bgoJICAgICAgLy8gSG93IGNhbiB3ZSB2YWxpZGF0ZSBhIGRyb3Bkb3duPwoJICAgICAgYnJlYWs7CgkgICAgfQoJfQogICAgfQoKICAgIC8vIGdldCB0aGUgcGFybXMgZnJvbSB0aGUgZmlyc3Qgc3RlcAogICAgJHBhcm1zMSA9IGV4cGxvZGVfd2l0aF9rZXkoICRwYXJhbXNbJ3N0ZXAxX3BhcmFtcyddICk7CiAgICAKICAgIC8vIGFuZCBtZXJnZSBlbSBpbnRvICRwYXJhbXMgc28gd2UgY2FuIGFjdHVhbGx5IGFkZCB0aGUgdXNlciBhY2NvdW50CiAgICAkcGFyYW1zID0gYXJyYXlfbWVyZ2UoICRwYXJhbXMsICRwYXJtczEgKTsKCiAgICAvLyBub3cgZmluZCBvdXQgd2hpY2ggZ3JvdXBzIGhlJ3MgYSBtZW1iZXIgb2YKICAgICRncnBpZHMgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApCiAgICB7CiAgICAgIGlmKCBwcmVnX21hdGNoKCcvXm1lbWJlcm9mXy8nLCAkayApICkKCXsKCSAgJGdycGlkc1tdID0gJHBhcmFtc1ska107Cgl9CiAgICB9CgogICAgJHVzZXJfaWQgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1sndXNlcl9pZCddICkgKQogICAgICB7CgkkdXNlcl9pZCA9ICRwYXJhbXNbJ3VzZXJfaWQnXTsKICAgICAgfQogICAgZWxzZSAKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICRyZXRbMV0gKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluQWRkVXNlclN0ZXAyUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCXJldHVybjsJCiAgICAgIH0KCiAgICAkdXNlcm5hbWUgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXSApICkKICAgICAgewoJJHVzZXJuYW1lID0gJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXTsKICAgICAgfQogICAgJHBhc3N3b3JkID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3Bhc3N3b3JkJ10gKSAmJiAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddICE9ICcnICkKICAgICAgewoJJHBhc3N3b3JkID0gJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXTsKICAgICAgfQogICAgJGV4cGlyZXNkYXRlID0gc3RydG90aW1lKCcrMTAgeWVhcnMnLCB0aW1lKCkpOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9leHBpcmVzZGF0ZSddICkgKQogICAgICB7CgkkZXhwaXJlc2RhdGUgPSAkcGFyYW1zWydpbnB1dF9leHBpcmVzZGF0ZSddOwogICAgICB9CiAgICAKICAgIC8vIGFuZCBTZXQgdGhlIHVzZXIKICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlciggJHVzZXJfaWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlc2RhdGUgKTsKICAgIGlmKCAkcmV0WzBdID09IGZhbHNlICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICRyZXRbMV0gKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluQWRkVXNlclN0ZXAyUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCXJldHVybjsJCiAgICAgIH0KCiAgICAvLyBhbmQgdGhlbiBhZGQgaGltIHRvIGhpcyBncm91cHMKICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlckdyb3VwcyggJHVzZXJfaWQsICRncnBpZHMgKTsKICAgIGlmKCAkcmV0WzBdID09IGZhbHNlICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXJyb3InLCAiMSIpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnbWVzc2FnZScsICR0aGlzLT5MYW5nKCdlcnJvcl9jYW50YXNzaWdudXNlcicpICk7CgkkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZFVzZXJTdGVwMlBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CglyZXR1cm47CQogICAgICB9IAoKICAgIC8vIGFuZCB0aGVuIGFkZCBoaXMgcHJvcGVydGllcwogICAgJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoICIiLCAkdXNlcl9pZCwgdHJ1ZSApOwogICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkayA9PiAkdiApCiAgICB7CiAgICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCggJGssICR2LCAkdXNlcl9pZCApOwogICAgICBpZiggJHJldCA9PSBmYWxzZSApCgl7CgkgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3InKTsKCSAgJHRoaXMtPl9EaXNwbGF5QWRtaW5BZGRVc2VyU3RlcDJQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICByZXR1cm47Cgl9CiAgICB9CgogICAgLy8gYW5kIHdlJ3JlIGRvbmUKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAndXNlcnMnICk7CiAgfQoKCiAgZnVuY3Rpb24gX0RvRm9yZ290UGFzc3dvcmQoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddICkgKQogICAgICB7CgkkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm5pZCk7CglyZXR1cm47CiAgICAgIH0KCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICkgICkKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgkkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZm9yZ290cHcnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CiAgICAKICAgIC8vIHNlZSBpZiB3ZSBjYW4gZmluZCB0aGlzIHVzZXIKICAgICR1aWQgPSAkdGhpcy0+R2V0VXNlcklEKCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICk7CiAgICBpZiggISR1aWQgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBzZWUgaWYgd2UgY2FuIGRpZyB1cCBhbiBlbWFpbCBhZGRyZXNzIGZvciBoaW0KICAgICRlbWFpbCA9IGZhbHNlOwogICAgJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICRwcm9wcyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcyggJHVpZCApOwogICAgaWYoICRwcm9wcyApIAogICAgICB7CgkvLyB3ZSBoYXZlIHByb3BlcnRpZXMgZm9yIHRoaXMgdXNlcgoJLy8gbm93IHNlZSBpZiB3ZSBoYXZlIGFuIGVtYWlsIGZpZWxkCgkvLyB3ZSdyZSBnb25uYSBpdGVyYXRlIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgdGlsbCBvbmUgaXMgYW4gZW1haWwgdHlwZQoJLy8gdGhlbiB3ZSdyZSBnb25uYSBhc2sgdGhlIHVzZXIgaWYgdGhpcyBpcyB0aGUgcmlnaHQgYWRkcmVzcy4uCglmb3JlYWNoKCAkcHJvcHMgYXMgJHByb3BlICkKCXsKCSAgZm9yZWFjaCggJGRlZm5zIGFzICRkZWZuZSApCgkgIHsKCSAgICBpZiggJHByb3BlWyd0aXRsZSddID09ICRkZWZuZVsnbmFtZSddICYmICRkZWZuZVsndHlwZSddID09IDIgJiYgJGVtYWlsID09IGZhbHNlICkKCSAgICAgIHsKCQkvLyBmb3VuZCBhIG1hdGNoIGFuZCBpdCdzIGFuIGVtYWlsIGZpZWxkCgkJJGVtYWlsID0gJHByb3BlWydkYXRhJ107CgkJYnJlYWs7CgkgICAgICB9CgkgIH0KCgkgIGlmKCAkZW1haWwgIT0gZmFsc2UgKQoJICAgIHsKCSAgICAgIGJyZWFrOwoJICAgIH0KCX0KCglpZiggISRlbWFpbCApCgkgIHsKCSAgICAkcGFyYW1zWydlcnJvciddID0gMTsKCSAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9lbWFpbGFkZHJlc3MnKTsKCSAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZm9yZ290cHcnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJICAgIHJldHVybjsKCSAgfQoJZWxzZQoJICB7CgkgICAgJGNtc21haWxlciA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ01TTWFpbGVyJyk7CgkgICAgaWYoICEkY21zbWFpbGVyICkKCSAgICAgIHsKCQkkcGFyYW1zWydlcnJvciddID0gMTsKCQkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9tYWlsZXJtb2R1bGUnKTsKCQkkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZm9yZ290cHcnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJCXJldHVybjsKCSAgICAgIH0KCgkgICAgLy8gd2UgZm91bmQgYW5lIG1haWwgYWRkcmVzcwoJICAgIC8vIGdlbmVyYXRlIGEgY29kZSwgYW5kIHN0b3JlIGl0IHNvbWVwbGFjZQoJICAgIC8vIGJ1dCB0aGF0IG1lYW5zIHdlIGdvdHRhIGNsZWFuIHRoZXNlIHRoaW5ncyB1cAoJICAgIC8vIGZyb20gdGltZSB0byB0aW1lLgoJICAgICRjb2RlID0gJHRoaXMtPkdlbmVyYXRlUmFuZG9tUHJpbnRhYmxlU3RyaW5nKCk7CgkgICAgaWYoICEkdGhpcy0+U2V0VXNlclRlbXBDb2RlKCAkdWlkLCAkY29kZSApICkKCSAgICAgIHsKCQkkcGFyYW1zWydlcnJvciddID0gMTsKCQkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfcmVzZXRhbHJlYWR5c2VudCcpOwoJCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwkcGFyYW1zICk7CgkJcmV0dXJuOwoJICAgICAgfQoKCSAgICAvLyBzZW5kIG91ciBmdW5reSBlbWFpbAoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJywKCQkJCSAgJHRoaXMtPkxhbmcoJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcpKTsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+TGFuZygnbWVzc2FnZV9jb2RlJykpOwoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CgkgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbGluaycsJHRoaXMtPkxhbmcoJ3Byb21wdF9saW5rJykpOwoJICAgICRwYXJtcyA9IGFycmF5KCAnaW5wdXRfdWlkJyA9PiAkdWlkLCAnaW5wdXRfY29kZScgPT4gJGNvZGUgKTsKCSAgICAkbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndmVyaWZ5Y29kZScsJHJldHVybmlkLCcnLCRwYXJtcywgJycsIHRydWUpOwoJICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZGF0YV9saW5rJywKCQkJCSAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd2ZXJpZnljb2RlJywkcmV0dXJuaWQsJGxpbmssJHBhcm1zKSk7CgkgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkYXRhX3VybCcsJGxpbmspOwoKCSAgICAkYm9keSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmRlbWFpbGZvcm0nKTsKCgkgICAgJGNtc21haWxlci0+QWRkQWRkcmVzcyggJGVtYWlsICk7CgkgICAgJGNtc21haWxlci0+U2V0Qm9keSggJGJvZHkgKTsKCSAgICAkY21zbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7CgkgICAgaWYoIHN0cmlwX3RhZ3MoJGJvZHkpICE9ICRib2R5ICkKCSAgICAgIHsKCQkkY21zbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7CgkgICAgICB9CgkgICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkdGhpcy0+TGFuZygnbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCcpKTsKCSAgICAkY21zbWFpbGVyLT5TZW5kKCk7CgoJICAgIC8vIGFuZCB0ZWxsIHRoZSB1c2VyIHNvbWV0aGluZwoJICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnLCRlbWFpbCk7CgkgICAgJHBhcmFtc1snc2tpcGZvcm1kaXNwbGF5J10gPSAxOwoJICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwkcGFyYW1zICk7CgkgICAgcmV0dXJuIDE7CgkgIH0KICAgICAgfQoKICAgIC8vIHdlIGZvdW5kIG5vIGVtYWlsIGFkZHJlc3MKICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwogICAgJHBhcmFtc1snbWVzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY291bGRub3RmaW5kZW1haWwnKTsKICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwkcGFyYW1zICk7CiAgfQoKCiAgZnVuY3Rpb24gX0RvTG9naW4oICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewoJaWYgKGlzc2V0KCRwYXJhbXNbJ2NhcHRjaGEnXSkgJiYgJHBhcmFtc1snY2FwdGNoYSddID09IDEpIHsKCQlpZiAoaXNzZXQoJHRoaXMtPmNtcy0+bW9kdWxlc1snQ2FwdGNoYSddKSkKCQl7CgkJCSRjYXB0Y2hhID0gJiR0aGlzLT5nZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwoJCQlpZiAoISAkY2FwdGNoYS0+Q2hlY2tDYXB0Y2hhKCRfUE9TVFsnY2FwdGNoYV9waHJhc2UnXSkpCgkJCXsKCQkJCSRwYXJhbXNbJ2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJyk7CgkJCQkkdGhpcy0+X0dldFVzZXJMb2dpbkZvcm0oICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkJCQlyZXR1cm47CgkJCX0KCQl9Cgl9CgoJCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICkgfHwgJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXSA9PSAnJyApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3VzZXJuYW1lJyk7CgkkdGhpcy0+X0dldFVzZXJMb2dpbkZvcm0oICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CglyZXR1cm47CiAgICAgIH0KCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddICkgfHwgJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSA9PSAnJyApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJyk7CgkkdGhpcy0+X0dldFVzZXJMb2dpbkZvcm0oICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBub3cgdmFsaWRhdGUgdGhlIHBhc3N3b3JkIGFuZCB1c2VybmFtZQoJaWYgKGlzc2V0KCRwYXJhbXNbJ29ubHlfZ3JvdXBzJ10pKQoJewogICAgCSRyZXN1bHQgPSAkdGhpcy0+TG9naW4oICRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lJ10sICRwYXJhbXNbJ2lucHV0X3Bhc3N3b3JkJ10sICRwYXJhbXNbJ29ubHlfZ3JvdXBzJ10gKTsJCQkKCX0KCWVsc2UKCXsKICAgIAkkcmVzdWx0ID0gJHRoaXMtPkxvZ2luKCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddLCAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddICk7CQoJfQogICAgaWYoICRyZXN1bHRbMF0gPT0gZmFsc2UgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gJHJlc3VsdFsxXTsKCSR0aGlzLT5fR2V0VXNlckxvZ2luRm9ybSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCXJldHVybjsKICAgICAgfQogICAgJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksCgkJICAkdGhpcy0+TGFuZygnZnJvbnRlbmR1c2VyX2xvZ2dlZGluJykuIjogIi4kcGFyYW1zWydpbnB1dF91c2VybmFtZSddICk7CgogICAgLy8gd2UncmUgbG9nZ2VkIGluCiAgICAvLyByZWRpcmVjdCBzb21ld2hlcmUgCiAgICAkcGFnZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nKTsKICAgIGlmKCBpc3NldCggJHBhcmFtc1sncmV0dXJudG8nXSApICkKICAgICAgewoJJHBhZ2UgPSAkcGFyYW1zWydyZXR1cm50byddOwogICAgICB9CgogICAgLy8gcmVwbGFjZSB7JHVzZXJuYW1lfSB3aXRoIHRoZSB1c2VyIG5hbWUKICAgIC8vIHdlIHNob3VsZCBkbyBhIGNoZWNrIHRvIHNlZSBpZiB0aGUgcGFnZSBleGlzdHMKICAgICRwYWdlID0gc3RyX3JlcGxhY2UoICJ7XCR1c2VybmFtZX0iLCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddLCAkcGFnZSApOwoKICAgIC8vIHJlcGxhY2UgeyRncm91cG5hbWV9IHdpdGggdGhlIGZpcnN0IGdyb3VwbmFtZSB3ZSBjYW4gZmluZCB0aGF0IG1hdGNoZXMKICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR0aGlzLT5Mb2dnZWRpbklkKCkgKTsKICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICRwYWdlID0gc3RyX3JlcGxhY2UoICJ7XCRncm91cH0iLCAkZ3JvdXBuYW1lLCAkcGFnZSApOwoKICAgIC8vIHNlbmQgdGhlIGV2ZW50CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXTsKICAgICRwYXJtc1snaXAnXSA9IGdldGVudignUkVNT1RFX0FERFInKTsKICAgICR0aGlzLT5TZW5kRXZlbnQoICdPbkxvZ2luJywgJHBhcm1zICk7CgogICAgaWYoICRwYWdlICkKICAgICAgewoJJGlkID0gQ29udGVudE1hbmFnZXI6OkdldFBhZ2VJREZyb21BbGlhcyggJHBhZ2UgKTsKCWlmKCAkaWQgKQoJICB7CgkgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCggJGlkICk7CgkgICAgcmV0dXJuOwoJICB9CglkaWUoICJjb3VsZG4ndCBnZXQgcGFnZWlkIGZvciAkcGFnZSIgKTsKICAgICAgfQogICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCggJHJldHVybmlkICk7CiAgfQoKCiAgZnVuY3Rpb24gX0RvTG9nb3V0KCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICR1c2VybmFtZSA9ICR0aGlzLT5Mb2dnZWRJbk5hbWUoKTsKICAgICR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwoKICAgICR0aGlzLT5Mb2dvdXQoKTsKICAgICR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLAoJCSAgJHRoaXMtPkxhbmcoJ2Zyb250ZW5kdXNlcl9sb2dvdXQnKSk7CgogICAgLy8gd2UncmUgbG9nZ2VkIG91dAogICAgLy8gcmVkaXJlY3Qgc29tZXdoZXJlIAogICAgLy8gdG9kbywgYWRkIG1vcmUgb3B0aW9ucyBoZXJlLgogICAgJHBhZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydyZXR1cm50byddICkgKQogICAgICB7CgkkcGFnZSA9ICRwYXJhbXNbJ3JldHVybnRvJ107CiAgICAgIH0KCiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOwogICAgJHBhcm1zWydpZCddID0gJHVpZDsKICAgICR0aGlzLT5TZW5kRXZlbnQoICdPbkxvZ291dCcsICRwYXJtcyApOwoKICAgIC8vIHJlcGxhY2UgeyR1c2VybmFtZX0gd2l0aCB0aGUgdXNlciBuYW1lCiAgICAkcGFnZSA9IHN0cl9yZXBsYWNlKCAie1wkdXNlcm5hbWV9IiwgJHVzZXJuYW1lLCAkcGFnZSApOwoKICAgIC8vIHJlcGxhY2UgeyRncm91cG5hbWV9IHdpdGggdGhlIGZpcnN0IGdyb3VwbmFtZSB3ZSBjYW4gZmluZCB0aGF0IG1hdGNoZXMKICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICRwYWdlID0gc3RyX3JlcGxhY2UoICJ7XCRncm91cH0iLCAkZ3JvdXBuYW1lLCAkcGFnZSApOwoKICAgIGlmKCAkcGFnZSApCiAgICAgIHsKCSRpZCA9IENvbnRlbnRNYW5hZ2VyOjpHZXRQYWdlSURGcm9tQWxpYXMoICRwYWdlICk7CglpZiggJGlkICkKCSAgewoJICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoICRpZCApOwoJICAgIHJldHVybjsKCSAgfQogICAgICB9CiAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCAkcmV0dXJuaWQgKTsKICB9CgoKICBmdW5jdGlvbiBfRG9SZXNldFVzZXJBY2NvdW50KCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICR1aWQgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfdWlkJ10gKSApCiAgICAgIHsKCSR1aWQgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3VpZCddKTsKICAgICAgfQogICAgJGNvZGUgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfY29kZSddICkgKQogICAgICB7CgkkY29kZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfY29kZSddKTsKICAgICAgfQogICAgJHBhc3N3b3JkID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3Bhc3N3b3JkJ10gKSApCiAgICAgIHsKCSRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSk7CiAgICAgIH0KICAgICRyZXBlYXRwYXNzd29yZCA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9yZXBlYXRwYXNzd29yZCddICkgKQogICAgICB7CgkkcmVwZWF0cGFzc3dvcmQgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pOwogICAgICB9CgogICAgaWYoICRwYXNzd29yZCA9PSAnJyB8fCAkcmVwZWF0cGFzc3dvcmQgPT0gJycgfHwgCgkkcGFzc3dvcmQgIT0gJHJlcGVhdHBhc3N3b3JkIHx8ICEkdGhpcy0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkpCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXNzd29yZCcpOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ3ZlcmlmeWNvZGUnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gbm93IHdlIGhhdmUgdG8gdmVyaWZ5IHRoZSBjb2RlCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldFVzZXJUZW1wQ29kZSggJHVpZCApOwogICAgaWYoICRyZXN1bHRbMF0gPT0gRkFMU0UgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXN1bHRbMV07CgkkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAndmVyaWZ5Y29kZScsICRyZXR1cm5pZCwkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KICAgICRkYmNvZGUgPSAkcmVzdWx0WzFdWydjb2RlJ107CgogICAgaWYoICRkYmNvZGUgIT0gJGNvZGUgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY29kZScpOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ3ZlcmlmeWNvZGUnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gd2hldywgd2UgZ290IGl0Li4uIG5vdyB3ZSBjYW4gcmVzZXQgdGhlIHBhc3N3b3JkCiAgICAkcmV0ID0gJHRoaXMtPlNldFVzZXJQYXNzd29yZCggJHVpZCwgJHBhc3N3b3JkICk7CiAgICBpZiggJHJldFswXSAhPSBUUlVFICkKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkcmV0WzFdOwoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ3ZlcmlmeWNvZGUnLCAkcmV0dXJuaWQsJHBhcmFtcyApOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gYW5kIGRlbGV0ZSB0aGUgY29kZQogICAgJHRoaXMtPlJlbW92ZVVzZXJUZW1wQ29kZSggJHVpZCApOwoKICAgIC8vIGFuZCBkaXNwbGF5IGEgbmljZSB3YXJtIGZ1enp5IG1lc3NhZ2UKICAgIC8vIHRvZG8KICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdkZWZhdWx0JywgJHJldHVybmlkICk7CiAgICBicmVhazsKICB9CgogIAogIGZ1bmN0aW9uIF9Eb1NldENoYW5nZVNldHRpbmdzVGVtcGxhdGUoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydkZWZhdWx0cyddICkgKQogICAgICB7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfY2hhbmdlc2V0dGluZ3Nmb3JtJywgJHRoaXMtPmRmbHRfY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2NoYW5nZXNldHRpbmdzZm9ybScsICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddKTsKICAgICAgfQogICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZScgKTsKICB9CgoKICBmdW5jdGlvbiBfRG9TZXRGb3Jnb3RQV1RlbXBsYXRlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZGVmYXVsdHMnXSApICkKICAgICAgewoJJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkZm9ybScsICR0aGlzLT5kZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUxKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGVtYWlsZm9ybScsICR0aGlzLT5kZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUyKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZHZlcmlmeWZvcm0nLCR0aGlzLT5kZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUzKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmRmb3JtJywgJHBhcmFtc1sndGVtcGxhdGVjb250ZW50MSddKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGVtYWlsZm9ybScsICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudDInXSk7OwoJJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkdmVyaWZ5Zm9ybScsICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudDMnXSk7OwogICAgICB9CiAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJyApOwogIH0KCgogIGZ1bmN0aW9uIF9Eb1NldExvZ2luVGVtcGxhdGUoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydkZWZhdWx0cyddICkgKQogICAgICB7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfbG9naW5mb3JtJywgJHRoaXMtPmRmbHRfbG9naW5mb3JtdGVtcGxhdGUpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19sb2dpbmZvcm0nLCAkcGFyYW1zWyd0ZW1wbGF0ZWxvZ2luZm9ybSddKTsKICAgICAgfQogICAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICdsb2dpbnRlbXBsYXRlJyApOwogIH0KCiAgCiAgZnVuY3Rpb24gX0RvU2V0TG9nb3V0VGVtcGxhdGUoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydkZWZhdWx0cyddICkgKQogICAgICB7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfbG9nb3V0Zm9ybScsICR0aGlzLT5kZmx0X2xvZ291dGZvcm10ZW1wbGF0ZSk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2xvZ291dGZvcm0nLCAkcGFyYW1zWyd0ZW1wbGF0ZWxvZ291dGZvcm0nXSk7CiAgICAgIH0KICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAnbG9nb3V0dGVtcGxhdGUnLCAkcGFyYW1zKTsKICB9CgogIAogIGZ1bmN0aW9uIF9Eb1NldFByZWZzKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9JiAkZ0Ntcy0+R2V0REIoKTsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfcmVtb3ZlYWxsJ10gKSApCiAgICAgIHsKCSR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy01IHllYXJzJyk7CglyZXR1cm47CiAgICAgIH0KCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3JlbW92ZTF3ZWVrJ10gKSApCiAgICAgIHsKCSR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIHdlZWsnKTsKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnKTsKICAgICAgfQoKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfcmVtb3ZlMW1vbnRoJ10gKSApCiAgICAgIHsKCSR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIG1vbnRoJyk7CgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3ByZWZzJyk7CiAgICAgIH0KCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2NhbmNlbCddICkgKQogICAgICB7CgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwgJ3ByZWZzJyApOwogICAgICB9CgogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9taW5wd2xlbiddICkgJiYgCglpc3NldCggJHBhcmFtc1snaW5wdXRfbWF4cHdsZW4nXSApICkKICAgICAgewoJaWYoICRwYXJhbXNbJ2lucHV0X21pbnB3bGVuJ10gPj0gJHBhcmFtc1snaW5wdXRfbWF4cHdsZW4nXSB8fAoJICAgICRwYXJhbXNbJ2lucHV0X21pbnB3bGVuJ10gPD0gMCApCgkgIHsKCSAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnKSApOwoJICAgIHJldHVybjsKCSAgfQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsJHBhcmFtc1snaW5wdXRfbWlucHdsZW4nXSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJywkcGFyYW1zWydpbnB1dF9tYXhwd2xlbiddKTsKICAgICAgfQoKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfbWludW5sZW4nXSApICYmIAoJaXNzZXQoICRwYXJhbXNbJ2lucHV0X21heHVubGVuJ10gKSApCiAgICAgIHsKCWlmKCAkcGFyYW1zWydpbnB1dF9taW51bmxlbiddID49ICRwYXJhbXNbJ2lucHV0X21heHVubGVuJ10gfHwKCSAgICAkcGFyYW1zWydpbnB1dF9taW51bmxlbiddIDw9IDAgKQoJICB7CgkgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXNlcm5hbWVsZW5ndGhzJykgKTsKCSAgICByZXR1cm47CgkgIH0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnLCRwYXJhbXNbJ2lucHV0X21pbnVubGVuJ10pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcsJHBhcmFtc1snaW5wdXRfbWF4dW5sZW4nXSk7CiAgICAgIH0KCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnLCAkcGFyYW1zWydpbnB1dF9zZXNzaW9udGltZW91dCddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJywgJHBhcmFtc1snaW5wdXRfZGZsdGdyb3VwJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NpZ25pbl9idXR0b24nLCAkcGFyYW1zWydpbnB1dF9zaWduaW5fYnV0dG9uJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RvX3NtdHBfdmFsaWRhdGVfZW1haWwnLCAkcGFyYW1zWydpbnB1dF9zbXRwdmFsaWRhdGUnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfbWFya2VyJywgJHBhcmFtc1snaW5wdXRfcmVxdWlyZWRmaWVsZG1hcmtlciddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkZmllbGRjb2xvciddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlX29uZWdyb3VwJywgJHBhcmFtc1snaW5wdXRfcmVxdWlyZW9uZWdyb3VwJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInLCAkcGFyYW1zWydpbnB1dF9oaWRkZW5maWVsZG1hcmtlciddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfY29sb3InLCAkcGFyYW1zWydpbnB1dF9oaWRkZW5maWVsZGNvbG9yJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcsICRwYXJhbXNbJ2lucHV0X2ZvcmdvdHB3X3BhZ2UnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJywgJHBhcmFtc1snaW5wdXRfY2hhbmdlc2V0dGluZ3NfcGFnZSddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nLCAkcGFyYW1zWydpbnB1dF9sb2dpbl9wYWdlJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dvdXQnLCAkcGFyYW1zWydpbnB1dF9sb2dvdXRfcGFnZSddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJywgJHBhcmFtc1snaW5wdXRfYWxsb3dfZHVwbGljYXRlX2VtYWlscyddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywgJHBhcmFtc1snaW5wdXRfYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcsICRwYXJhbXNbJ2lucHV0X3B3ZmxkbGVuJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJywgJHBhcmFtc1snaW5wdXRfdW5mbGRsZW4nXSk7CiAgICAKCSAkcXVlcnkgPSAiU0VMRUNUIHBlcm1pc3Npb25faWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4icGVybWlzc2lvbnMgV0hFUkUgcGVybWlzc2lvbl9uYW1lIExJS0UgJ0ZFVSAlJyI7CgkgJGNvdW50ID0gJGRiLT5HZXRPbmUoJHF1ZXJ5KTsKCSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycsJHBhcmFtc1snaW5wdXRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucyddKTsKCgkgaWYgKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZldXNlcnNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSkgJiYgJHBhcmFtc1snaW5wdXRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucyddPT0xKQogICAgCXsKCQkvLyB1c2luZyBGRVVzZXItc3BlY2lmaWMgcGVybWlzc2lvbnMsIHNvIGNyZWF0ZSB0aGVtIGlmIG5lY2Vzc2FyeQoJCWlmIChpbnR2YWwoJGNvdW50KSA9PSAwKQoJCQl7CgkJCS8vIGNyZWF0ZSAnZW0KCQkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0ZFVSBBZGQgVXNlcnMnLCdBZGQgRnJvbnQtRW5kIFVzZXJzJyk7CgkJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFVzZXJzJywnTW9kaWZ5IEZyb250LUVuZCBVc2VycycpOwoJCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRkVVIFJlbW92ZSBVc2VycycsJ1JlbW92ZSBGcm9udC1FbmQgVXNlcnMnKTsKCQkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0ZFVSBBZGQgR3JvdXBzJywnQWRkIEZyb250LUVuZCBVc2VyIEdyb3VwcycpOwoJCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRkVVIE1vZGlmeSBHcm91cHMnLCdNb2RpZnkgRnJvbnQtRW5kIFVzZXIgR3JvdXBzJyk7CgkJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IEdyb3VwIEFzc2lnbm1lbnRzJywnTW9kaWZ5IEZyb250LUVuZCBVc2VyIEdyb3VwIEFzc2lnbm1lbnRzJyk7CgkJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdGRVUgUmVtb3ZlIEdyb3VwcycsJ1JlbW92ZSBGcm9udC1FbmQgVXNlciBHcm91cHMnKTsKCQkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0ZFVSBNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycsJ01vZGlmeSBGcm9udC1FbmQgVXNlcnMgU2l0ZSBQcmVmcycpOwoJCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRkVVIE1vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycsJ01vZGlmeSBGcm9udC1FbmQgVXNlciBQcm9wZXJ0aWVzJyk7CgkJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFRlbXBsYXRlcycsJ01vZGlmeSBGcm9udC1FbmQgVXNlciBUZW1wbGF0ZXMnKTsKCQkJfQoJCX0KCWVsc2UKCQl7CgkJLy8gc2hhcmluZyBhY2Nlc3MgcGVybWlzc2lvbnMgd2l0aCBBZG1pbiwgc28gZGVsZXRlIEZFVXNlci1zcGVjaWZpYyBwZXJtaXNzaW9ucyBpZiBuZWNlc3NhcnkKCQlpZiAoaW50dmFsKCRjb3VudCkgIT0gMCkKCQkJewoJCQkvLyBkZWxldGUgJ2VtCgkJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgQWRkIFVzZXJzJyk7CgkJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFVzZXJzJyk7CgkJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgUmVtb3ZlIFVzZXJzJyk7CgkJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgQWRkIEdyb3VwcycpOwoJCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRkVVIE1vZGlmeSBHcm91cHMnKTsKCQkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBNb2RpZnkgR3JvdXAgQXNzaWdubWVudHMnKTsKCQkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBSZW1vdmUgR3JvdXBzJyk7CgkJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKCQkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBNb2RpZnkgRnJvbnRFbmRVc2VyUHJvcHMnKTsKCQkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBNb2RpZnkgVGVtcGxhdGVzJyk7CgkJCX0KCQl9CiAgICAKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnKTsKICB9CgogIAogIGZ1bmN0aW9uIF9Eb1NldFByb3BlcnRpZXMoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICAgICAgewoJLy8gd2UgYXJlIGNhbmNlbGxpbmcKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIgKCRpZCwgJ3Byb3BlcnRpZXMnICk7CiAgICAgIH0KCiAgICAvLyBjaGVjayBpZiB3ZSBhcmUgYWRkaW5nIGEgcHJvcGVydHkKICAgIGlmKCBpc3NldCggJHBhcmFtc1sncHJvcGFkZCddICkgKQogICAgICB7CgkvLyB5dXAKCS8vIHZhbGlkYXRlIGZpZWxkcwoJJG5hbWUgPSB0cmltKCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7CgkkbmFtZSA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvIC8nLCdfJywkbmFtZSkpOwoJJHByb21wdCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcHJvbXB0J10pOwoJJGxlbmd0aCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ10pOwoJJHR5cGUgPSAkcGFyYW1zWydpbnB1dF90eXBlJ107CgoJaWYoICRuYW1lID09ICcnIHx8ICRwcm9tcHQgPT0gJycgKQoJICB7CgkgICAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkgICAgJHBhcmFtc1snbWVzc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSAgICAkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCAkaWQsICdwcm9wZXJ0aWVzJywgJHBhcmFtcyApOwoJICAgIHJldHVybjsKCSAgfQoKCWlmKCBpc3NldCgkcGFyYW1zWydwcm9wZGVmbiddKSApCgkgIHsKCSAgICAkcHJvcHMgPSBzcGxpdCgiLCIsJHBhcmFtc1sncHJvcGRlZm4nXSk7CgkgICAgZm9yZWFjaCggJHByb3BzIGFzICRwcm9wICkKCSAgICB7CgkgICAgICBsaXN0KCAkZW5hbWUsICRlcHJvbXB0LCAkZXR5cGUsICRlbGVuZ3RoICkgPSBzcGxpdCgiOyIsJHByb3ApOwoJICAgICAgaWYoICRuYW1lID09ICRlbmFtZSApIAoJCXsKCQkgIC8vIG5hbWUgaXMgYWxyZWFkeSB0YWtlbgoJCSAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkJICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZHVwbGljYXRlbmFtZScpOwoJCSAgJHRoaXMtPm15UmVkaXJlY3RUb1RhYiggJGlkLCAncHJvcGVydGllcycsICRwYXJhbXMgKTsKCQkgIHJldHVybjsKCQl9CgkgICAgfQoJICB9CgoJJGVudHJ5ID0gaW1wbG9kZSgiOyIsYXJyYXkoJG5hbWUsJHByb21wdCwkdHlwZSwkbGVuZ3RoKSk7CglpZiggaXNzZXQoJHBhcmFtc1sncHJvcGRlZm4nXSkpCgkgIHsKCSAgICAkcGFyYW1zWydwcm9wZGVmbiddIC49ICIsIi4kZW50cnk7CgkgIH0KCWVsc2UgCgkgIHsKCSAgICAkcGFyYW1zWydwcm9wZGVmbiddID0gJGVudHJ5OwoJICB9CgkkcGFyYW1zWydkb25vdGxvYWRwcm9wcyddID0gMTsKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIoICRpZCwgJ3Byb3BlcnRpZXMnLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KICAgIGVsc2UgaWYoIGFycmF5X2tleV9leGlzdHNfc3Vic3RyKCAkcGFyYW1zLCAncHJvcGVkaXRfJykgJiYgaXNzZXQoJHBhcmFtc1sncHJvcGRlZm4nXSkpCiAgICAgIHsKCSRrID0gYXJyYXlfZmluZF9rZXlfcmVnZXhwKCAkcGFyYW1zLCAnL15wcm9wZWRpdF8vJyApOwoJJHBvczEgPSBzdHJwb3MoICRrLCAnLScgKTsKCSRwb3MyID0gc3RycnBvcyggJGssICdfJyApOwoJJGtleSAgPSBzdWJzdHIoICRrICwgJHBvczErMSwgJHBvczIgLSAkcG9zMSAtIDEpOwoKCS8vIHdlJ3JlIGVkaXRpbmcgYSBwcm9wZXJ0eQoJLy8gc28gd2UgdGFrZSB0aGUgY3VycmVudCBwcm9wZXJ0eSAoJGtleSkgYW5kIHJlbW92ZSBpdAoJLy8gZnJvbSBwcm9wcywgYW5kIHB1dCBpdCBpbiB0aGUgcGFyYW1zCgkkcHJvcHMgPSBzcGxpdCgnLCcsJHBhcmFtc1sncHJvcGRlZm4nXSk7CgkkbmV3cHJvcHMgPSAiIjsKCWZvcmVhY2goICRwcm9wcyBhcyAkcCApCgl7CgkgICRhcHJvcCA9IHNwbGl0KCI7IiwkcCk7CgkgIGlmKCAkYXByb3BbMF0gPT0gJGtleSApCgkgICAgewoJICAgICAgJHBhcmFtc1snaW5wdXRfbmFtZSddID0gJGFwcm9wWzBdOwoJICAgICAgJHBhcmFtc1snaW5wdXRfcHJvbXB0J10gPSAkYXByb3BbMV07CgkgICAgICAkcGFyYW1zWydpbnB1dF90eXBlJ10gPSAkYXByb3BbMl07CgkgICAgICAkcGFyYW1zWydpbnB1dF9sZW5ndGgnXSA9ICRhcHJvcFszXTsKCSAgICB9CgkgIGVsc2UgCgkgICAgewoJICAgICAgaWYoICRuZXdwcm9wcyA9PSAnJyApCgkJewoJCSAgJG5ld3Byb3BzID0gJHA7CgkJfQoJICAgICAgZWxzZQoJCXsKCQkgICRuZXdwcm9wcyA9ICRuZXdwcm9wcy4iLCIuJHA7CgkJfQoJICAgIH0KCX0KCSRwYXJhbXNbJ3Byb3BkZWZuJ10gPSAkbmV3cHJvcHM7CgkkcGFyYW1zWydkb25vdGxvYWRwcm9wcyddID0gMTsKCSR0aGlzLT5teVJlZGlyZWN0VG9UYWIoICRpZCwgJ3Byb3BlcnRpZXMnLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KICAgIGVsc2UgaWYoIGFycmF5X2tleV9leGlzdHNfc3Vic3RyKCAkcGFyYW1zLCAncHJvcGRlbGV0ZV8nKSAmJiBpc3NldCgkcGFyYW1zWydwcm9wZGVmbiddKSkKICAgICAgewoJJGsgPSBhcnJheV9maW5kX2tleV9yZWdleHAoICRwYXJhbXMsICcvXnByb3BkZWxldGVfLycgKTsKCWxpc3QoICRqdW5rLCAka2V5ICkgPSBzcGxpdCggIl8iLCAkayApOwoKCS8vIHdlJ3JlIGRlbGV0aW5nIGEgcHJvcGVydHkKCS8vIHNvIHdlIHRha2UgdGhlIGN1cnJlbnQgcHJvcGVydHkgKCRrZXkpIGFuZCByZW1vdmUgaXQKCS8vIGZyb20gcHJvcHMsIAoJJHByb3BzID0gc3BsaXQoJywnLCRwYXJhbXNbJ3Byb3BkZWZuJ10pOwoJJG5ld3Byb3BzID0gIiI7Cglmb3JlYWNoKCAkcHJvcHMgYXMgJHAgKQoJewoJICAkYXByb3AgPSBzcGxpdCgiOyIsJHApOwoJICBpZiggJGFwcm9wWzBdID09ICRrZXkgKQoJICAgIHsKCSAgICAgIGNvbnRpbnVlOwoJICAgIH0KCSAgZWxzZSAKCSAgICB7CgkgICAgICBpZiggJG5ld3Byb3BzID09ICcnICkKCQl7CgkJICAkbmV3cHJvcHMgPSAkcDsKCQl9CgkgICAgICBlbHNlCgkJewoJCSAgJG5ld3Byb3BzID0gJG5ld3Byb3BzLiIsIi4kcDsKCQl9CgkgICAgfQoJfQoJJHBhcmFtc1sncHJvcGRlZm4nXSA9ICRuZXdwcm9wczsKCSRwYXJhbXNbJ2Rvbm90bG9hZHByb3BzJ10gPSAxOwogICAgICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoICRpZCwgJ3Byb3BlcnRpZXMnLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCgogICAgLy8gd2UncmUgc3VibWl0dGluZyB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAgICRwcm9wcyA9IHNwbGl0KCcsJywkcGFyYW1zWydwcm9wZGVmbiddKTsKICAgICR0aGlzLT5EZWxldGVQcm9wZXJ0eURlZm5zKCk7CiAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJHByb3AgKQogICAgewogICAgICAkYXByb3AgPSBzcGxpdCgiOyIsJHByb3ApOwoKICAgICAgJHJldCA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oICRhcHJvcFswXSwgJGFwcm9wWzFdLCAkYXByb3BbMl0sICRhcHJvcFszXSwgJGFwcm9wWzRdICk7CiAgICAgIGlmKCAkcmV0WzBdID09IGZhbHNlICkKCXsKCSAgLy8gbmFtZSBpcyBhbHJlYWR5IHRha2VuCgkgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAncHJvcGVydGllcycgKTsKCSAgcmV0dXJuOwoJfQogICAgfQoKICAgICR0aGlzLT5teVJlZGlyZWN0VG9UYWIoJGlkLCAncHJvcGVydGllcycsICRwYXJhbXMgKTsKICAgIHJldHVybjsKICB9CgoKICBmdW5jdGlvbiBfRG9Vc2VyQWN0aW9uKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZm9ybSddICkgKQogICAgICB7Cglzd2l0Y2goICRwYXJhbXNbJ2Zvcm0nXSApIAoJICB7CgkgIGNhc2UgJ2xvZ2luJzoKCSAgICAkdGhpcy0+X0dldFVzZXJMb2dpbkZvcm0oJGlkLCRwYXJhbXMsJHJldHVybmlkKTsKCSAgICBicmVhazsKCSAgY2FzZSAnbG9nb3V0JzoKCSAgICAkdGhpcy0+X0dldFVzZXJMb2dvdXRGb3JtKCRpZCwkcGFyYW1zLCRyZXR1cm5pZCk7CgkgICAgYnJlYWs7CgkgIGNhc2UgJ2ZvcmdvdHB3JzoKCSAgICAkdGhpcy0+X0Rpc3BsYXlVc2VyRm9yZ290UGFzc3dvcmRQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIGJyZWFrOwoJICBjYXNlICdjaGFuZ2VzZXR0aW5ncyc6CgkgICAgJHRoaXMtPl9EaXNwbGF5VXNlclNldHRpbmdzUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICBicmVhazsKCSAgY2FzZSAnc2lsZW50JzoKCSAgICAkdGhpcy0+X0V4cG9ydExvZ2dlZEluVXNlclZhcmlhYmxlcyggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICBicmVhazsKCSAgfQoJcmV0dXJuOwogICAgICB9CgogICAgaWYoICEkdGhpcy0+TG9nZ2VkSW4oKSApIAogICAgICB7CgkkdGhpcy0+X0dldFVzZXJMb2dpbkZvcm0oJGlkLCRwYXJhbXMsJHJldHVybmlkKTsKICAgICAgfQogICAgZWxzZSAKICAgICAgewoJJHRoaXMtPl9HZXRVc2VyTG9nb3V0Rm9ybSgkaWQsJHBhcmFtcywkcmV0dXJuaWQpOwogICAgICB9CiAgfQoKCiAgZnVuY3Rpb24gX0RvVXNlckNoYW5nZVNldHRpbmdzKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAKICAgICAgewoJJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJuaWQpOwogICAgICB9CgogICAgJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiggJHVpZCA9PSBmYWxzZSApIAogICAgICB7CgkvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdlcnJvcl9ub3Rsb2dnZWRpbicpKTsKCXJldHVybjsKICAgICAgfQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHVpZCApOwogICAgaWYoICRyZXN1bHRbMF0gPT0gRkFMU0UgKQogICAgICB7CgkvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkgICRyZXN1bHRbMV0pOwoJcmV0dXJuOwogICAgICB9CiAgICAkdWluZm8gPSAkcmVzdWx0WzFdOwoKICAgICRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSk7CiAgICAkcmVwZWF0ICAgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pOwogICAgaWYoICRwYXNzd29yZCAhPSAkcmVwZWF0ICYmICRwYXNzd29yZCAhPSAnJykKICAgICAgewoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2NoYW5nZXNldHRpbmdzJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICAgIH0KCiAgICAvLyBkbyB2YWxpZGF0aW9uIG9mIHRoZSBmaWVsZHMuCiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbCApCiAgICB7CiAgICAgIGlmKCBwcmVnX21hdGNoKCAnL15oaWRkZW5fLycsICRrZXkgKSApCgl7CgkgICRwcm9wbmFtZSA9IHN1YnN0ciggJGtleSwgc3RybGVuKCdoaWRkZW5fJykpOwoJICAkYXJyID0gc3BsaXQoIjsiLCRwYXJhbXNbJGtleV0pOwoJICAkcmVxdWlyZWQgPSAkYXJyWzNdOwoJICBpZiggJHJlcXVpcmVkID09IDIgJiYgCgkgICAgICAoIWlzc2V0KCRwYXJhbXNbJ2lucHV0XycuJHByb3BuYW1lXSkgfHwgJHBhcmFtc1snaW5wdXRfJy4kcHJvcG5hbWVdID09ICcnICkgKQoJICAgIHsKCSAgICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCRwcm9wbmFtZSk7CgkgICAgICAkdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2NoYW5nZXNldHRpbmdzJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgfQoKCSAgaWYoICRhcnJbMV0gPT0gJzInICkKCSAgICB7CgkgICAgICAkcmVzdWx0ID0gJHRoaXMtPklzVmFsaWRFbWFpbEFkZHJlc3MoICRwYXJhbXNbJ2lucHV0XycuJHByb3BuYW1lXSwKCQkJCQkJICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkb19zbXRwX3ZhbGlkYXRlX2VtYWlsJyksICR1aWQgKTsKCSAgICAgIGlmKCAkcmVzdWx0WzBdID09IGZhbHNlICkKCQl7CgkJICAkcGFyYW1zWydlcnJvciddID0gMTsKCQkgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXN1bHRbMV07CgkJICAkdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2NoYW5nZXNldHRpbmdzJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkJfQoJICAgIH0KCX0KICAgIH0KCiAgICAvLwogICAgLy8gbm93IHdlIGFjdHVhbGx5IGNoYW5nZSB0aGUgdXNlciBzZXR0aW5ncwogICAgLy8KCiAgICAvLyBwYXNzd29yZAogICAgaWYoICRwYXNzd29yZCAhPSAnJykKICAgICAgewoJJHJlc3VsdCA9ICR0aGlzLT5TZXRVc2VyKCAkdWlkLCAkdWluZm9bJ3VzZXJuYW1lJ10sICRwYXNzd29yZCApOwoJaWYoICRyZXN1bHRbMF0gPT0gRkFMU0UgKQoJICB7CgkgICAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHJlc3VsdFsxXTsKCSAgICAkdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2NoYW5nZXNldHRpbmdzJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgIH0KICAgICAgfQoKICAgIC8vIG5vdyB0aGUgcHJvcGVydGllcwogICAgJHRoaXMtPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoICIiLCAkdWlkLCB0cnVlICk7CgogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWwgKQogICAgewogICAgICBpZiggcHJlZ19tYXRjaCggJy9eaGlkZGVuXy8nLCAka2V5ICkgKQoJewoJICAkcHJvcG5hbWUgPSBzdWJzdHIoICRrZXksIHN0cmxlbignaGlkZGVuXycpKTsKCSAgJGFyciA9IHNwbGl0KCI7IiwkcGFyYW1zWyRrZXldKTsKCSAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF8nLiRwcm9wbmFtZV0gKSApCgkgICAgewoJICAgICAgJHZhbCA9ICRwYXJhbXNbJ2lucHV0XycuJHByb3BuYW1lXTsKCSAgICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCggJHByb3BuYW1lLCAkdmFsLCAkdWlkICk7CgkgICAgICBpZiggJHJldCA9PSBmYWxzZSApCgkJewoJCSAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkJICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3InKTsKCQkgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKCQkgIHJldHVybjsKCQl9CgkgICAgfQoJfQogICAgfQoKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfcmV0dXJudG8nXSApICkKICAgICAgewoJJGlkID0gQ29udGVudE1hbmFnZXI6OkdldFBhZ2VJREZyb21BbGlhcyggJHBhcmFtc1snaW5wdXRfcmV0dXJudG8nXSApOwoJaWYoICRpZCApCgkgIHsKCSAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCAkaWQgKTsKCSAgICByZXR1cm47CgkgIH0KICAgICAgfQoKICAgIC8vIGFuZCByZWRpcmVjdCBiYWNrIHRvIGRlZmF1bHQKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoIENvbnRlbnRNYW5hZ2VyOjpHZXREZWZhdWx0UGFnZUlEKCkgKTsKICB9CgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5BZG1pblRhYiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIGEgZm9ybSBmb3IgcGVyZm9ybWluZyB2YXJpb3VzIGFkbWluIHRhc2tzCiAgICAvLyBsaWtlIGV4cG9ydGluZyB1c2VycyB0byBDU1YsIHJlc2V0dGluZyBleHBpcnkgZGF0ZXMsIGV0YywgZXRjLgogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2FkbWludGFza3MnICkgKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9leHBvcnQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZXhwb3J0Y3N2JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9leHBvcnQnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2J1dHRvbl9leHBvcnQnLAoJCQkJCQkgICAkdGhpcy0+TGFuZygnZXhwb3J0Y3N2JykpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW50YXNrcy50cGwnKTsKICB9CgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5BZGRHcm91cFBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICAkcHJvcGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgaWYoIGNvdW50KCRwcm9wZGVmbikgPT0gMCApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9wcm9wZXJ0aWVzJykpOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCRwYXJhbXNbJ2Vycm9yJ10pOwogICAgICB9CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkcGFyYW1zWydtZXNzYWdlJ10pOwogICAgICB9CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ2FkZGdyb3VwJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnc3RhcnRmb3JtJywKCQkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLAoJCQkJCQkJICAnZG9fYWRkZ3JvdXAnLAoJCQkJCQkJICAkcmV0dXJuaWQpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdzdWJtaXQnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdjYW5jZWwnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9ncm91cG5hbWUnLAoJCQkgICAkdGhpcy0+TGFuZyAoJ25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9ncm91cG5hbWUnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9ncm91cG5hbWUnLAoJCQkJCQkgICAiIiwgMjAsIDgwKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfZ3JvdXBkZXNjJywKCQkJICAgJHRoaXMtPkxhbmcgKCdkZXNjcmlwdGlvbicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X2dyb3VwZGVzYycsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQgKCRpZCwgJ2lucHV0X2dyb3VwZGVzYycsCgkJCQkJCSAgICIiLCA4MCwgMjU1KSk7ICAgIAoKICAgIC8vIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0aWVzIGluIGEgZm9ybQogICAgLy8gdG8gYWxsb3cgdGhlIHVzZXIgdG8gcGljayB3aGljaCBvbmVzIGFyZSByZXF1aXJlZCBhbmQgd2hpY2ggb25lcyBhcmVudC4KICAgICRyb3dhcnJheSA9IGFycmF5KCk7CiAgICAkcm93Y2xhc3MgPSAncm93MSc7CiAgICAka2V5cyA9IGFycmF5X2tleXMoJHRoaXMtPnR5cGVzKTsKICAgICRvcHRpb25zID0gYXJyYXkoICR0aGlzLT5MYW5nKCdvZmYnKSA9PiAwLAoJCSAgICAgICR0aGlzLT5MYW5nKCdvcHRpb25hbCcpID0+IDEsCgkJICAgICAgJHRoaXMtPkxhbmcoJ3JlcXVpcmVkJykgPT4gMiwKCQkgICAgICAkdGhpcy0+TGFuZygnaGlkZGVuJykgPT4gMyk7CiAgICAKICAgIGZvcmVhY2goICRwcm9wZGVmbiBhcyAkZGVmbiApCiAgICAgIHsKCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAkb25lcm93LT5uYW1lID0gJGRlZm5bJ25hbWUnXTsKICAgICAgICAkb25lcm93LT5wcm9tcHQgPSAkZGVmblsncHJvbXB0J107Cgkkb25lcm93LT50eXBlID0gJHRoaXMtPkxhbmcoICRrZXlzWyRkZWZuWyd0eXBlJ11dICk7Cgkkb25lcm93LT5zb3J0b3JkZXIgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF9zb3J0b3JkZXJfJy4kZGVmblsnbmFtZSddLCAnJywgMywgMiApOwoJJG9uZXJvdy0+cmVxdWlyZWQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRSYWRpb0dyb3VwKCAkaWQsICdpbnB1dF9yZXF1aXJlZF8nLiRkZWZuWyduYW1lJ10sICRvcHRpb25zICk7Cgkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCglhcnJheV9wdXNoICgkcm93YXJyYXksICRvbmVyb3cpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3MgPSAicm93MiIgOiAkcm93Y2xhc3MgPSAicm93MSIpOwogICAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9wcycsICRyb3dhcnJheSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb3Bjb3VudCcsY291bnQoJHJvd2FycmF5KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRvcmRlcnRleHQnLCAkdGhpcy0+TGFuZygnc29ydG9yZGVyJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1ldGV4dCcsJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdHRleHQnLCAkdGhpcy0+TGFuZygncHJvbXB0JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0eXBldGV4dCcsJHRoaXMtPkxhbmcoJ3R5cGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlcXVpcmVkdGV4dCcsJHRoaXMtPkxhbmcoJ3JlcXVpcmVkJykpOwoKICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnYWRkZ3JvdXAudHBsJyk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pbkFkZFByb3BlcnR5UGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZWRpdHByb3AnXSApICl7CiAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydvcmlnX3R5cGUnXSkgJiYgJHBhcmFtc1snb3JpZ190eXBlJ10gPT0gJHBhcmFtc1snbmV3X3R5cGUnXSApewoJJHBhcmFtc1snaW5wdXRfdHlwZSddID0gJHBhcmFtc1snbmV3X3R5cGUnXTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkb19lZGl0cHJvcCcsJHJldHVybmlkLCAkcGFyYW1zKTsKCXJldHVybjsKICAgICAgfQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdzdGFydGZvcm0nLCAKCQkJICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZWRpdHByb3AnLCRyZXR1cm5pZCkpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdoaWRkZW4nLAoJCQkgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3Byb3BuYW1lJywkcGFyYW1zWydlZGl0cHJvcCddKSk7CiAgICB9CiAgICBlbHNlIAogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdzdGFydGZvcm0nLCAKCQkJICAgICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZGRwcm9wMicsJHJldHVybmlkKSk7CiAgICAgIH0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5mb21zZzEnLAoJCQkgICR0aGlzLT5MYW5nKCdtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnZW5kZm9ybScsCgkJCSAgICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsICRwYXJhbXNbJ21lc3NhZ2UnXSApOwogICAgICB9CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCAkcGFyYW1zWydlcnJvciddICk7CiAgICAgIH0KICAgIAogICAgJG5hbWUgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9uYW1lJ10gKSApICRuYW1lID0gJHBhcmFtc1snaW5wdXRfbmFtZSddOwogICAgJHByb21wdCA9ICcnOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3Byb21wdCddICkgKSAkcHJvbXB0ID0gJHBhcmFtc1snaW5wdXRfcHJvbXB0J107CiAgICAkdHlwZSA9ICcnOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ25ld190eXBlJ10pICkgewogICAgICAkdHlwZSA9ICRwYXJhbXNbJ25ld190eXBlJ107CiAgICB9IGVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3R5cGUnXSkgKSB7CiAgICAgICR0eXBlID0gJHBhcmFtc1snaW5wdXRfdHlwZSddOwogICAgfQogICAgaWYoJHRoaXMtPmRldmRlYnVnKXsKICAgICAgZWNobyAiaW5wdXRfdHlwZSA9ICIgLiAkcGFyYW1zWydpbnB1dF90eXBlJ10gLiAiPGJyPiI7CiAgICAgIGVjaG8gInR5cGUgPSAiIC4gJHR5cGUgLiAiPGJyPiI7CiAgICB9CiAgICAKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZWRpdHByb3AnXSApICkJewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luZm9tc2cyJywkdGhpcy0+TGFuZygnZWRpdHByb3BfaW5mb21zZycpKTsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlZGl0cHJvcCcsICAKCQkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdlZGl0cHJvcCcsICRwYXJhbXNbJ2VkaXRwcm9wJ10pKTsKICAgICAgCiAgICAgIGlmKCAkdHlwZSA9PSAwIHx8ICR0eXBlID09IDIgKXsgLy8gdGV4dCBvciBlbWFpbCBpbnB1dAoJJGxlbmd0aCA9ICcnOwoJaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddICkgKSB7CgkgICRsZW5ndGggPSAkcGFyYW1zWydpbnB1dF9sZW5ndGgnXTsKCX0KCSRtYXhsZW5ndGggPSAnJzsKCWlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9tYXhsZW5ndGgnXSApICkgewoJICAkbWF4bGVuZ3RoID0gJHBhcmFtc1snaW5wdXRfbWF4bGVuZ3RoJ107Cgl9CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdCcsJHRoaXMtPkxhbmcoJ2xlbmd0aCcpCgkJCSAgICAgIC4kdGhpcy0+TGFuZygnbGVuZ3RoY29tbWVudCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXQnLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfbGVuZ3RoJywkbGVuZ3RoLCAzLCAzICkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHQyJywkdGhpcy0+TGFuZygnbWF4bGVuZ3RoJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dDInLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfbWF4bGVuZ3RoJywkbWF4bGVuZ3RoLCAzLCAzICkpOwogICAgICB9IGVsc2UgaWYoJHR5cGUgPT0gNCl7IC8vIGRyb3Bkb3duCgkkc2Vsb3B0aW9ucyA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCAkbmFtZSwgMSApOwoJJHNlbG9wdGlvbnNTdHIgPSBpbXBsb2RlKCJcbiIsICRzZWxvcHRpb25zKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0JywkdGhpcy0+TGFuZygnc2Vsb3B0aW9ucycpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXQnLCAgCgkJCSAgICAgICR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgJGlkLCAkc2Vsb3B0aW9uc1N0ciwgJ2lucHV0X2V4dHJhJykpOwogICAgICB9CiAgICB9CiAgICAKICAgICRzdWJtaXQgPSAkdGhpcy0+TGFuZygnbmV4dCcpOwogICAgJHRpdGxlID0gJHRoaXMtPkxhbmcoJ2FkZHByb3AnKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydlZGl0cHJvcCddICkgKSAKICAgICAgewoJJHRpdGxlID0gJHRoaXMtPkxhbmcoJ2VkaXRwcm9wJyk7Cgkkc3VibWl0ID0gJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpOwogICAgICB9CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICd0aXRsZScsICR0aXRsZSApOwogICAgJGlkeCA9IGZpbmRfaW5kZXhfb2ZfdmFsdWUoJHRoaXMtPnR5cGVzLCR0eXBlLC0xKTsKICAgICR0eXBlcyA9ICR0aGlzLT5sYW5naWZ5S2V5cygkdGhpcy0+dHlwZXMpOwogICAgCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9uYW1lJywkdGhpcy0+TGFuZygnbmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfbmFtZScsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X25hbWUnLCRuYW1lLCAzMCwgMzAgKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wcm9tcHQnLCR0aGlzLT5MYW5nKCdwcm9tcHQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3Byb21wdCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X3Byb21wdCcsJHByb21wdCwgNTAsIDgwICkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdHlwZScsJHRoaXMtPkxhbmcoJ3R5cGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3R5cGUnLCAgCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oICRpZCwgJ2lucHV0X3R5cGUnLCAkdHlwZXMsCgkJCQkJCSAgICAgICRpZHgsICR0eXBlKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ29yaWdfdHlwZScsICAKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnb3JpZ190eXBlJywgJHR5cGUpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3N1Ym1pdCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywgJHN1Ym1pdCApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2NhbmNlbCcsCgkJCSAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywKCQkJCQkJICAgICAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkcHJvcC50cGwnKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluQWRkUHJvcGVydHlQYWdlMiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCRwYXJhbXNbJ2lucHV0X3R5cGUnXSA9PSAxIHx8IC8vY2hlY2tib3gKICAgICAgICRwYXJhbXNbJ2lucHV0X3R5cGUnXSA9PSAzICl7IC8vdGV4dGFyZWEKICAgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydlZGl0cHJvcCddICkgKSB7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZG9fZWRpdHByb3AnLCRyZXR1cm5pZCwgJHBhcmFtcyk7CglyZXR1cm47CiAgICAgIH0gZWxzZSB7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZG9fYWRkcHJvcCcsJHJldHVybmlkLCAkcGFyYW1zKTsKCXJldHVybjsKICAgICAgfQogICAgfQoKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZWRpdHByb3AnXSApICkgewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdzdGFydGZvcm0nLCAKCQkJICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZG9fZWRpdHByb3AnLCRyZXR1cm5pZCkpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdoaWRkZW4nLAoJCQkgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3Byb3BuYW1lJywkcGFyYW1zWydlZGl0cHJvcCddKSk7CiAgICB9IGVsc2UgewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdzdGFydGZvcm0nLCAKCQkJICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZG9fYWRkcHJvcCcsJHJldHVybmlkKSk7CiAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnZW5kZm9ybScsICAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkgewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10gKTsKICAgIH0KICAgIGlmKCBpc3NldCggJHBhcmFtc1snZXJyb3InXSApICkJewogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9yJywgJHBhcmFtc1snZXJyb3InXSApOwogICAgfQoKICAgIGlmICgkcGFyYW1zWydpbnB1dF90eXBlJ10gPT0gNCkgeyAvL2Ryb3AtZG93bgogICAgICAkc2Vsb3B0aW9ucyA9ICcnOwogICAgICBpZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfc2Vsb3B0aW9ucyddICkgKSB7Cgkkc2Vsb3B0aW9ucyA9ICRwYXJhbXNbJ2lucHV0X3NlbG9wdGlvbnMnXTsKICAgICAgfQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdDEnLCR0aGlzLT5MYW5nKCdzZWxvcHRpb25zJykpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0MScsICAKCQkJICAgICR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgJGlkLCAkc2Vsb3B0aW9ucywgJ2lucHV0X3NlbG9wdGlvbnMnKSk7CiAgICB9IGVsc2UgeyAvL3RleHQgaW5wdXQgb3IgZW1haWwKICAgICAgJGxlbmd0aCA9ICcnOwogICAgICBpZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ10gKSApIHsKCSRsZW5ndGggPSAkcGFyYW1zWydpbnB1dF9sZW5ndGgnXTsKICAgICAgfQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdDEnLCR0aGlzLT5MYW5nKCdsZW5ndGgnKQoJCQkgICAgLiR0aGlzLT5MYW5nKCdsZW5ndGhjb21tZW50JykpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0MScsCgkJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfbGVuZ3RoJywkbGVuZ3RoLCAzLCAzICkpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdDInLCR0aGlzLT5MYW5nKCdtYXhsZW5ndGgnKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXQyJywKCQkJICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9tYXhsZW5ndGgnLCRsZW5ndGgsIDMsIDMgKSk7CiAgICB9CiAgICAkdGl0bGUgPSAkdGhpcy0+TGFuZygnYWRkcHJvcCcpOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2VkaXRpbmcnXSApICkgewogICAgICAkdGl0bGUgPSAkdGhpcy0+TGFuZygnZWRpdHByb3AnKTsKICAgIH0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiggJ3RpdGxlJywgJHRpdGxlICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X25hbWUnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF9uYW1lJywgJHBhcmFtc1snaW5wdXRfbmFtZSddKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3Byb21wdCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaW5wdXRfcHJvbXB0JywkcGFyYW1zWydpbnB1dF9wcm9tcHQnXSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90eXBlJywgIAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF90eXBlJywgJHBhcmFtc1snaW5wdXRfdHlwZSddKSk7CiAgICAKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywKCQkJCQkJCSAgICAgICAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywKCQkJCQkJCSAgICAgICAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkcHJvcDIudHBsJyk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pbkFkZFVzZXJTdGVwMVBhZ2UoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICAgICAgewoJJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsICd1c2VycycgKTsKICAgICAgfQoKICAgICRnaWQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsIC0xKTsKICAgIGlmKCAkZ2lkICE9IC0xICkKICAgICAgewoJLy8gdGhlIGRlZmF1bHQgZ3JvdXAgaGFzIGJlZW4gc2V0CgkvLyBzbyB3ZSdsbCBwdXQgdGhpcyBpbiB0aGUgbWVtYmVyb2YgcGFyYW1ldGVyCgkvLyBpZiBpdCdzIG5vdCBhbHJlYWR5IHNldAoJaWYoICFpc3NldCggJHBhcmFtc1snbWVtYmVyb2YnXSApICkKCSAgewoJICAgICRwYXJhbXNbJ21lbWJlcm9mXycuJGdpZF0gPSAkZ2lkOwoJICB9CiAgICAgIH0KCiAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pblVzZXJQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5BZGRVc2VyU3RlcDJQYWdlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10gKTsKICAgICAgfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydlcnJvciddICkgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9yJywgJHBhcmFtc1snZXJyb3InXSApOwogICAgICB9CgogICAgLy8gY2FsY3VsYXRlIHRoZSB1bmlvbiAoeWVwLCB1bmlvbiwgbm90IGludGVyc2VjdGlvbikKICAgIC8vIG9mIGFsbCBvZiB0aGUgcHJvcGVydGllcyBvZiBhbGwgb2YgdGhlIG1lbWJlciBncm91cHMKICAgIC8vIHByZWZlcnJpbmcgYWxsIGl0ZW1zIHdpdGggYSBwcmlvcml0eSBvZiAyCiAgICAkcHJvcGVydGllcyA9IGFycmF5KCk7CiAgICAkZ3JvdXBzID0gMDsKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsICkKICAgIHsKICAgICAgaWYoIHByZWdfbWF0Y2goICcvXm1lbWJlcm9mXy8nLCAka2V5ICkgKQoJewoJICAkZ3JvdXBzKys7CgkgIC8vIGdldCB0aGUgZ3JvdXBpZCBmcm9tIHRoZSBjaGVja2JveAoJICAkZ3JwaWQgPSBzdWJzdHIoJGtleSxzdHJsZW4oJ21lbWJlcm9mXycpKTsKCSAgCgkgIC8vIGhhdmUgdGhlIGdyb3VwIGlkLCBub3cgZ2V0IGEgbGlzdCBvZiB0aGUgcHJvcGVydAoJICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKTsKCSAgJHByb3BlcnRpZXMgPSBhcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCAkcHJvcGVydGllcywgJHByb3ByZWxhdGlvbnMgKTsKCSAgdWFzb3J0KCAkcHJvcGVydGllcywgJ2NvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleScgKTsKCX0KICAgIH0JICAKICAgIGlmKCAkZ3JvdXBzID09IDAgKQogICAgICB7CglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSA9PSAxICkKCSAgewoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9vbmVncm91cHJlcXVpcmVkJyk7CgkgICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZHVzZXInLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKCSAgICByZXR1cm47CgkgIH0KCQoJJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2RvX2FkZHVzZXIzJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICAgIH0KICAgIGlmKCBjb3VudCgkcHJvcGVydGllcykgPT0gMCApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb3BlcnRpZXMnKTsKCSR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGR1c2VyJywgJHJldHVybmlkLCAkcGFyYW1zICk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBub3cgd2UncmUgcmVhZHkgdG8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCiAgICAkcm93YXJyYXkgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHByb3BlcnRpZXMgYXMgJHByb3AgKQogICAgewogICAgICAvLyBnZXQgdGhlIHByb3BlcnR5IGRlZmluaXRpb24KICAgICAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCAkcHJvcFsnbmFtZSddICk7CiAgICAgIAogICAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CgogICAgICAkY29sb3IgPSAnJzsKICAgICAgaWYoICRwcm9wWydyZXF1aXJlZCddID09IDIgKSAkY29sb3IgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdXJpZWRfZmllbGRfY29sb3InLCdibHVlJyk7CiAgICAgIGlmKCAkcHJvcFsncmVxdWlyZWQnXSA9PSAzICkgJGNvbG9yID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsJ2dyZWVuJyk7CiAgICAgICRtYXJrZXIgPSAnJzsKICAgICAgaWYoICRwcm9wWydyZXF1aXJlZCddID09IDIgKSAkbWFya2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVyaWVkX2ZpZWxkX21hcmtlcicsJyonKTsKICAgICAgaWYoICRwcm9wWydyZXF1aXJlZCddID09IDMgKSAkbWFya2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInLCchIScpOwogICAgICAkb25lcm93LT5yZXF1aXJlZCA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSAyKTsKICAgICAgJG9uZXJvdy0+Y29sb3IgICAgPSAkY29sb3I7CiAgICAgICRvbmVyb3ctPm1hcmtlciAgID0gJG1hcmtlcjsKICAgICAgJG9uZXJvdy0+aGlkZGVuID0gbXlDcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAnaGlkZGVuXycuJHByb3BbJ25hbWUnXSwKCQkJCQkgICAgIGltcGxvZGUoIjsiLGFycmF5KCRwcm9wWyduYW1lJ10sJGRlZm5bJ3R5cGUnXSwKCQkJCQkJCSAgICAgICAkZGVmblsnbGVuZ3RoJ10sJHByb3BbJ3JlcXVpcmVkJ10sCgkJCQkJCQkgICAgICAgJGRlZm5bJ21heGxlbmd0aCddKSkpOwoKICAgICAgJHZhbCA9IGlzc2V0KCRwYXJhbXNbJ2lucHV0XycuJHByb3BbJ25hbWUnXV0pID8gJHBhcmFtc1snaW5wdXRfJy4kcHJvcFsnbmFtZSddXSA6ICcnOwogICAgICAkdmFsID0gdXJsZGVjb2RlKCR2YWwpOwogICAgICAkb25lcm93LT5wcm9tcHQgPSAkZGVmblsncHJvbXB0J107CiAgICAgIHN3aXRjaCggJGRlZm5bJ3R5cGUnXSApCgl7CgljYXNlIDA6IC8vIHRleHQKCSAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2lucHV0XycuJHByb3BbJ25hbWUnXSwKCQkJCQkJICAgICAkdmFsLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSApOwoJICBicmVhazsKCgljYXNlIDE6IC8vIGNoZWNrYm94CgkgICRvbmVyb3ctPmNvbnRyb2wgPSBteUNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0XycuJHByb3BbJ25hbWUnXSwgMSwgJHZhbCApOwoJICBicmVhazsKCgljYXNlIDI6IC8vIGVtYWlsCgkgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF8nLiRwcm9wWyduYW1lJ10sCgkJCQkJCSAgICAgJHZhbCwgJGRlZm5bJ2xlbmd0aCddLCAkZGVmblsnbWF4bGVuZ3RoJ10gKTsKCSAgYnJlYWs7CgoJY2FzZSAzOiAvLyB0ZXh0YXJlYQoJICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCAkaWQsICR2YWwsICdpbnB1dF8nLiRwcm9wWyduYW1lJ10pOwoJICBicmVhazsKCgljYXNlIDQ6IC8vIGRyb3Bkb3duCgkgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigKCQkJCQkJCSRpZCwgCgkJCQkJCQknaW5wdXRfJy4kcHJvcFsnbmFtZSddLCAKCQkJCQkJCSR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10sIDEpLCAKCQkJCQkJCS0xLCAKCQkJCQkJCSR2YWwpOwoJICBicmVhazsKCX0KCiAgICAgIGFycmF5X3B1c2goICRyb3dhcnJheSwgJG9uZXJvdyApOwogICAgfQoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgCgkJCSAgbXlDcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAnc3RlcDFfcGFyYW1zJywgJHBhcmFtcyApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignY29udHJvbHMnLCAkcm93YXJyYXkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250cm9sY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2JhY2snLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdiYWNrJykpKTsKICAgIGlmKCBpc3NldCggJHBhcmFtc1sndXNlcl9pZCddICkgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbjInLCAKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwndXNlcl9pZCcsJHBhcmFtc1sndXNlcl9pZCddKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCQkgICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsCgkJCQkJCQkgICAgICAnZG9fZWRpdHVzZXIzJywKCQkJCQkJCSAgICAgICRyZXR1cm5pZCkpOwogICAgICB9CiAgICBlbHNlIAogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCQkgICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsCgkJCQkJCQkgICAgICAnZG9fYWRkdXNlcjMnLAoJCQkJCQkJICAgICAgJHJldHVybmlkKSk7CiAgICAgIH0KICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCAnYWRkdXNlcjIudHBsJyApOwogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5Vc2VyUGFnZSggJGlkLCAmJHBhcmFtcywgJHJldHVybmlkICkKICB7CiAgICBnbG9iYWwgJGdDbXM7CgogICAgLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCiAgICAkZWRpdGluZyA9IDA7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2FjdGlvbiddICkgJiYgCgkoJHBhcmFtc1snYWN0aW9uJ10gPT0gJ2VkaXR1c2VyJ3x8ICRwYXJhbXNbJ2FjdGlvbiddID09ICdkb19lZGl0dXNlcjEnICkgKQogICAgICB7CgkkZWRpdGluZyA9IDE7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsIAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd1c2VyX2lkJywkcGFyYW1zWyd1c2VyX2lkJ10pKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGhpcy0+TGFuZygnZWRpdHVzZXInKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCQkgICAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0ICgkaWQsCgkJCQkJCQkgICAgICAnZG9fZWRpdHVzZXIxJywKCQkJCQkJCSAgICAgICRyZXR1cm5pZCkpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGhpcy0+TGFuZygnYWRkdXNlcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywKCQkJCSAgICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwKCQkJCQkJCSAgICAgICdkb19hZGR1c2VyMScsCgkJCQkJCQkgICAgICAkcmV0dXJuaWQpKTsKICAgICAgfQoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydlcnJvciddKSApCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCRwYXJhbXNbJ2Vycm9yJ10pOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkgKQogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCRwYXJhbXNbJ21lc3NhZ2UnXSk7CiAgICAkdXNlcm5hbWUgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF91c2VybmFtZSddKSApCiAgICAgICR1c2VybmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXSk7CiAgICAkcGFzc3dvcmQgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddKSApCiAgICAgICRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSk7CiAgICAkcmVwZWF0cGFzc3dvcmQgPSAnJzsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9yZXBlYXRwYXNzd29yZCddKSApCiAgICAgICRyZXBlYXRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSk7CiAgICAkZXhwaXJlcyA9ICcnOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2V4cGlyZXMnXSkgKQogICAgICAkZXhwaXJlcyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZXhwaXJlcyddKTsKICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ25leHQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfdXNlcm5hbWUnLAoJCQkgICAkdGhpcy0+TGFuZyAoJ3VzZXJuYW1lJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfdXNlcm5hbWUnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF91c2VybmFtZScsCgkJCQkJCSAgICR1c2VybmFtZSwgCgkJCQkJCSAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcpLCAKCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcpKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X3Bhc3N3b3JkJywKCQkJICAgJHRoaXMtPkxhbmcgKCdwYXNzd29yZCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3Bhc3N3b3JkJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0UGFzc3dvcmQgKCRpZCwgJ2lucHV0X3Bhc3N3b3JkJywKCQkJCQkJICAgICAgICRwYXNzd29yZCwgCgkJCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwKCQkJCQkJICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgncHJvbXB0X3JlcGVhdHBhc3N3b3JkJywKCQkJICAgJHRoaXMtPkxhbmcgKCdyZXBlYXRwYXNzd29yZCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ2lucHV0X3JlcGVhdHBhc3N3b3JkJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0UGFzc3dvcmQgKCRpZCwgJ2lucHV0X3JlcGVhdHBhc3N3b3JkJywKCQkJCQkJICAgICAgICRyZXBlYXRwYXNzd29yZCwKCQkJCQkJICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcpLAoJCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKSk7CgogICAgaWYoICRlZGl0aW5nID09IDEgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbmZvX3Bhc3N3b3JkJywKCQkJICAgICAgICR0aGlzLT5MYW5nICgnaW5mb19hZG1pbl9wYXNzd29yZCcpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5mb19yZXBlYXRwYXNzd29yZCcsCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnKSk7CiAgICAgIH0KCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdwcm9tcHRfZXhwaXJlcycsCgkJCSAgICR0aGlzLT5MYW5nKCdleHBpcmVzJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXhwaXJlc19kYXRlcHJlZml4JywgJGlkLidleHBpcmVzZGF0ZV8nKTsKICAgICRleHBpcmVzZGF0ZSA9IHN0cnRvdGltZSgnKzEwIHllYXJzJywgdGltZSgpKTsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZXhwaXJlc2RhdGUnXSApICkKICAgICAgewoJJGV4cGlyZXNkYXRlID0gJHBhcmFtc1snaW5wdXRfZXhwaXJlc2RhdGUnXTsKICAgICAgfQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnZXhwaXJlc2RhdGUnLCAkZXhwaXJlc2RhdGUgKTsKICAgIAoKICAgIC8vIERpc3BsYXkgdGhpcyB1c2VyJ3MgcHJvcGVydGllcyBhbmQgYWxsb3cgdXMgdG8gZWRpdCB0aGVtCgogICAgLy8gZGlzcGxheSBhbmQgZWRpdCBncm91cHMKICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpICkKICAgICAgewoJLy8gbm93IGRpc3BsYXkgYSBsaXN0IG9mIGdyb3VwcyB0aGF0IHRoaXMgdXNlciBtYXkgb3B0aW9uYWxseSBiZSBpbgoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnaWR0ZXh0JywgJHRoaXMtPkxhbmcoJ2lkJykgKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ25hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSApOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAnZGVzY3RleHQnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKSApOwoJCgkkZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKCSRyb3dhcnJheSA9IGFycmF5KCk7Cgkkcm93Y2xhc3MgPSAncm93MSc7Cglmb3JlYWNoKCAkZ3JvdXBzIGFzICRncm91cCApCgl7CgkgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCSAgJG9uZXJvdy0+aWQgPSAkZ3JvdXBbJ2lkJ107CgkgICRvbmVyb3ctPm5hbWUgPSAkZ3JvdXBbJ2dyb3VwbmFtZSddOwoJICAkb25lcm93LT5kZXNjID0gJGdyb3VwWydncm91cGRlc2MnXTsKCSAgJG9uZXJvdy0+bWVtYmVyID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdtZW1iZXJvZl8nLiRncm91cFsnaWQnXSwKCQkJCQkJICAkZ3JvdXBbJ2lkJ10sCgkJCQkJCSAgKGlzc2V0KCRwYXJhbXNbJ21lbWJlcm9mXycuJGdyb3VwWydpZCddXSkgPyAKCQkJCQkJICAgJHBhcmFtc1snbWVtYmVyb2ZfJy4kZ3JvdXBbJ2lkJ11dIDogLTEpKTsKCSAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgkgIAoJICBhcnJheV9wdXNoICgkcm93YXJyYXksICRvbmVyb3cpOwoJICAoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7Cgl9CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsY291bnQoJHJvd2FycmF5KSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywkcm93YXJyYXkpOwogICAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9wYWRkJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCAkaWQsICdwcm9wYWRkJywKCQkJCQkJCSAgICAgICAkdGhpcy0+TGFuZygnYWRkJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZ3JvdXBzdGl0bGUnLCAkdGhpcy0+TGFuZygnZ3JvdXBzJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9wZXJ0aWVzdGl0bGUnLCAkdGhpcy0+TGFuZygncHJvcGVydGllcycpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb3BzJywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAncHJvcHMnLCAkdGhpcy0+TGFuZygncHJvcGVydGllcycpLiIuLi4iKSk7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZHVzZXIxLnRwbCcpOwogIH0KCgogIGZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gLTEpIAogIHsKICAgIHN3aXRjaCAoJGFjdGlvbikKICAgICAgewogICAgICBjYXNlICdhZGRncm91cCc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2FkZGdyb3VwJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZEdyb3VwUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UgCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnYWRkcHJvcCc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2FkZHByb3AnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUFkbWluQWRkUHJvcGVydHlQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZSAKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICAvLyBUaGlzIGlzIHJlc3BvbnNpYmxlIGZvciBzdGVwIDIgaW4gYWRkaW5nIGEgcHJvcGVydHkKICAgICAgY2FzZSAnYWRkcHJvcDInOgoJewoJICAvLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdhZGRwcm9wJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZFByb3BlcnR5UGFnZTIoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2FkZHVzZXInOgoJewoJICAvLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdhZGR1c2VyJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZFVzZXJTdGVwMVBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgImNoYW5nZXNldHRpbmdzIjsKICAgICAgICB7CgkgICR0aGlzLT5fRGlzcGxheVVzZXJTZXR0aW5nc1BhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGNhc2UgImRlZmF1bHQiOiAKCXsKCSAgJHRoaXMtPl9Eb1VzZXJBY3Rpb24oICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAiZGVmYXVsdGFkbWluIjogCgl7CgkgIGlmICgkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygpKSAgewoJICAgICR0aGlzLT5fRGlzcGxheUFkbWluUGFuZWwoJGlkLCRwYXJhbXMsJHJldHVybmlkKTsKCSAgfSBlbHNlIHsKCSAgICBlY2hvICJCcmVha2luZyBhbiBlbnRyeSwgYXJlIHdlPyI7CgkgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19hZGRncm91cCc6Cgl7CgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2FkZGdyb3VwJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvQWRkR3JvdXAoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2FkZHByb3AnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdhZGRwcm9wJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvQWRkUHJvcCggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UgCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fYWRkdXNlcjEnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdhZGR1c2VyJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvQWRkVXNlclN0ZXAxKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZSAKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICAKICAgICAgY2FzZSAnZG9fYWRkdXNlcjInOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdhZGR1c2VyJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkZFVzZXJTdGVwMlBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIAogICAgICBjYXNlICdkb19hZGR1c2VyMyc6Cgl7CgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2FkZHVzZXInICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRG9BZGRVc2VyU3RlcDIoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2FkbWludGFza3MnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzbmdyb3VwcycpICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvQWRtaW5BY3Rpb25zKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2RlbGV0ZWdyb3VwJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAncmVtb3ZlZ3JvdXBzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvRGVsZXRlR3JvdXAoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZGVsZXRlcHJvcCc6Cgl7CgkgIC8vIGNoZWNrIHBlcm1pc3Npb25zIGFnYWluCgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2RlbGV0ZXByb3AnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRG9EZWxldGVQcm9wZXJ0eSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UgCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZGVsZXRldXNlcic6Cgl7CgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3JlbW92ZXVzZXJzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvRGVsZXRlVXNlciggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19lZGl0Z3JvdXAnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdlZGl0Z3JvdXBzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvRWRpdEdyb3VwKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2VkaXRwcm9wJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZWRpdHByb3AnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRG9FZGl0UHJvcGVydHkoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fZWRpdHVzZXIxJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZWRpdHVzZXJzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvRWRpdFVzZXJTdGVwMSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19lZGl0dXNlcjInOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdlZGl0dXNlcnMnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUFkbWluQWRkVXNlclN0ZXAyUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19lZGl0dXNlcjMnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdlZGl0dXNlcnMnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRG9FZGl0VXNlclN0ZXAzKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2ZvcmdvdHB3JzoKCXsKCSAgJHRoaXMtPl9Eb0ZvcmdvdFBhc3N3b3JkKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX2hhbmRsZXByb3BlcnR5JzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZWRpdHByZWZzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvU2V0UHJvcGVydGllcyggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19sb2dpbic6Cgl7CgkgICR0aGlzLT5fRG9Mb2dpbiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19zZXRjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndGVtcGxhdGVzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvU2V0Q2hhbmdlU2V0dGluZ3NUZW1wbGF0ZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19zZXRmb3Jnb3Rwd3RlbXBsYXRlJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndGVtcGxhdGVzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvU2V0Rm9yZ290UFdUZW1wbGF0ZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19zZXRsb2dpbnRlbXBsYXRlJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndGVtcGxhdGVzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvU2V0TG9naW5UZW1wbGF0ZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb19zZXRsb2dvdXR0ZW1wbGF0ZSc6Cgl7CgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3RlbXBsYXRlcycgKSApCgkgICAgewoJICAgICAgJHRoaXMtPl9Eb1NldExvZ291dFRlbXBsYXRlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICAgIH0KCSAgZWxzZQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ2RvX3NldHByZWZzJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZWRpdHByZWZzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0RvU2V0UHJlZnMoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZG9fdXNlcmNoYW5nZXNldHRpbmdzJzoKCXsKCSAgJHRoaXMtPl9Eb1VzZXJDaGFuZ2VTZXR0aW5ncyggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdkb192ZXJpZnljb2RlJzoKCXsKCSAgJHRoaXMtPl9Eb1Jlc2V0VXNlckFjY291bnQoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdlZGl0Z3JvdXAnOgoJewoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICdlZGl0Z3JvdXBzJyApICkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pbkVkaXRHcm91cFBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQogICAgCiAgICAgIGNhc2UgJ2VkaXRwcm9wJzoKCXsKCSAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAnZWRpdHByb3AnICkgKQoJICAgIHsKCSAgICAgICR0aGlzLT5fRGlzcGxheUFkbWluRWRpdFByb3BlcnR5UGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdlZGl0dXNlcic6Cgl7CgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2VkaXR1c2VycycgKSApCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5QWRtaW5FZGl0VXNlclN0ZXAxUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgY2FzZSAnZm9yZ290cHcnOgoJewoJICAvLyB1c2VyIGl0ZW0KCSAgJHRoaXMtPl9EaXNwbGF5VXNlckZvcmdvdFBhc3N3b3JkUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdsb2dvdXQnOgoJewoJICAkdGhpcy0+X0RvTG9nb3V0KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICBicmVhazsKCX0KCiAgICAgIGNhc2UgJ3ZlcmlmeWNvZGUnOgoJewoJICAkdGhpcy0+X0Rpc3BsYXlVc2VyRm9yZ290UGFzc3dvcmRWZXJpZmljYXRpb25QYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJICBicmVhazsKCX0KICAgICAgfQogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5FZGl0R3JvdXBQYWdlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGlmKCAhaXNzZXQoICRwYXJhbXNbJ2dyb3VwX2lkJ10gKSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgJHRoaXMtPkxhbmcgKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBub3cgZ2V0IHRoZSBncm91cCBpbmZvCiAgICAkZ3JvdXAgPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCAkcGFyYW1zWydncm91cF9pZCddICk7CiAgICBpZiggIWlzc2V0KCAkZ3JvdXBbJ2lkJ10gKSApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRncm91cFsxXSApOwoJCQkJIAoJcmV0dXJuOwogICAgICB9CgogICAgLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCRwYXJhbXNbJ2Vycm9yJ10pOwogICAgICB9CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkcGFyYW1zWydtZXNzYWdlJ10pOwogICAgICB9CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ2VkaXRncm91cCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywgCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdncm91cF9pZCcsICRncm91cFsnaWQnXSApICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCQkgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwKCQkJCQkJCSAgJ2RvX2VkaXRncm91cCcsCgkJCQkJCQkgICRyZXR1cm5pZCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywKCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJycsICcnLCAKCQkJCQkJICAgICR0aGlzLT5MYW5nKCdjb25maXJtX2VkaXRncm91cCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2dyb3VwbmFtZScsJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdpbnB1dF9ncm91cG5hbWUnLAoJCQkgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0ICgkaWQsICdpbnB1dF9ncm91cG5hbWUnLAoJCQkJCQkgICAkZ3JvdXBbJ2dyb3VwbmFtZSddLCAyMCwgODApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiAoJ3Byb21wdF9ncm91cGRlc2MnLAoJCQkgICAkdGhpcy0+TGFuZyAoJ2Rlc2NyaXB0aW9uJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgnaW5wdXRfZ3JvdXBkZXNjJywKCQkJICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCAoJGlkLCAnaW5wdXRfZ3JvdXBkZXNjJywKCQkJCQkJICAgJGdyb3VwWydncm91cGRlc2MnXSwgODAsIDI1NSkpOwoKICAgIC8vIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0aWVzIGluIGEgZm9ybQogICAgLy8gdG8gYWxsb3cgdGhlIHVzZXIgdG8gcGljayB3aGljaCBvbmVzIGFyZSByZXF1aXJlZCBhbmQgd2hpY2ggb25lcyBhcmVudC4KICAgICRwcm9wZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAkZ3JvdXBwcm9wbWFwID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncm91cFsnaWQnXSApOwogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICRyb3djbGFzcyA9ICdyb3cxJzsKICAgICRrZXlzID0gYXJyYXlfa2V5cygkdGhpcy0+dHlwZXMpOwogICAgJG9wdGlvbnMgPSBhcnJheSggJHRoaXMtPkxhbmcoJ29mZicpID0+IDAsCgkJICAgICAgJHRoaXMtPkxhbmcoJ29wdGlvbmFsJykgPT4gMSwKCQkgICAgICAkdGhpcy0+TGFuZygncmVxdWlyZWQnKSA9PiAyLAoJCSAgICAgICR0aGlzLT5MYW5nKCdoaWRkZW4nKSA9PiAzKTsKICAgIGZvcmVhY2goICRwcm9wZGVmbiBhcyAkZGVmbiApCiAgICAgIHsKCS8vIGZpbmQgdGhlIGdyb3VwIHByb3BlcnR5IG1hcCBmb3IgdGhpcyBncm91cAoJLy8gaWYgaXQgZXhpc3RzLCBpZiBpdCBkb2Vzbid0LCB0aGVuIHRoZSB2YWx1ZSBpcyAtMQoJJHNlbGVjdGVkdmFsdWUgPSAwOwoJJHNvcnRvcmRlciA9ICcnOwoJZm9yZWFjaCggJGdyb3VwcHJvcG1hcCBhcyAkbWFwICkKCXsKCSAgaWYoICRtYXBbJ25hbWUnXSA9PSAkZGVmblsnbmFtZSddICkKCSAgICB7CgkgICAgICAkc2VsZWN0ZWR2YWx1ZSA9ICRtYXBbJ3JlcXVpcmVkJ107CgkgICAgICAkc29ydG9yZGVyID0gJG1hcFsnc29ydF9rZXknXTsKCSAgICAgIGJyZWFrOwoJICAgIH0KCX0KCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAkb25lcm93LT5uYW1lID0gJGRlZm5bJ25hbWUnXTsKICAgICAgICAkb25lcm93LT5wcm9tcHQgPSAkZGVmblsncHJvbXB0J107Cgkkb25lcm93LT50eXBlID0gJHRoaXMtPkxhbmcoICRrZXlzWyRkZWZuWyd0eXBlJ11dICk7Cgkkb25lcm93LT5zb3J0b3JkZXIgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF9zb3J0b3JkZXJfJy4kZGVmblsnbmFtZSddLAoJCQkJCQkgICAgICRzb3J0b3JkZXIsIDMsIDIpOwoJJG9uZXJvdy0+cmVxdWlyZWQgPSAkdGhpcy0+Q3JlYXRlSW5wdXRSYWRpb0dyb3VwKCAkaWQsICdpbnB1dF9yZXF1aXJlZF8nLiRkZWZuWyduYW1lJ10sCgkJCQkJCQkgICRvcHRpb25zLCRzZWxlY3RlZHZhbHVlICApOwoJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgoJYXJyYXlfcHVzaCAoJHJvd2FycmF5LCAkb25lcm93KTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKICAgICAgfQoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvcHMnLCAkcm93YXJyYXkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9wY291bnQnLGNvdW50KCRyb3dhcnJheSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1ldGV4dCcsJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdHRleHQnLCAkdGhpcy0+TGFuZygncHJvbXB0JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0eXBldGV4dCcsJHRoaXMtPkxhbmcoJ3R5cGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NvcnRvcmRlcnRleHQnLCR0aGlzLT5MYW5nKCdzb3J0b3JkZXInKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlcXVpcmVkdGV4dCcsJHRoaXMtPkxhbmcoJ3JlcXVpcmVkJykpOwoKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSAoJ2FkZGdyb3VwLnRwbCcpOwogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5FZGl0UHJvcGVydHlQYWdlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIEZvciB0aGUgYmVsb3cgY29udHJvbCB0eXBlcyBkb24ndCByZWRyYXcgdGhlIHBhZ2UsIGp1c3QgdXBkYXRlLgogICAgLy8gT3RoZXJ3aXNlIHdlJ2xsIG5lZWQgdG8gcmVkcmF3IHRoZSBwYWdlIHdpdGggYWRkaXRpb25hbCBwYXJhbXMsCiAgICAvLyBzdWNoIGFzIGxlbmd0aCBvciBkcm9wZG93biBzZWxlY3Qgb3B0aW9ucy4KICAgIC8vIFRoZSBpbnB1dCB0eXBlIHdpbGwgYmUga25vd24gb25seSBhdCB0aGUgc2Vjb25kIGdvLgogICAgaWYoJHBhcmFtc1snaW5wdXRfdHlwZSddID09IDEgfHwgLy9jaGVja2JveAogICAgICAgJHBhcmFtc1snaW5wdXRfdHlwZSddID09IDIgfHwgLy9lbWFpbAogICAgICAgJHBhcmFtc1snaW5wdXRfdHlwZSddID09IDMgKXsgLy90ZXh0YXJlYQogICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZG9fZWRpdHByb3AnLCRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBkaXNwbGF5IGEgZnVua3kgcGFnZSB0byB0aGUgdXNlciB0byBhbGxvdyBoaW0gdG8gZWRpdCBhIHByb3BlcnR5IGRlZmluaXRpb24KICAgIC8vIGFjdHVhbGx5LCB3ZSdsbCBqdXN0IHNldCBzb21lIHN0dWZmIHVwIGFuZCB1c2UgdGhlIGFkZCBwcm9wZXJ0eSBwYWdlCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydwcm9wbmFtZSddICkgKQogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljZW50cGFyYW1zJyk7CgkkdGhpcy0+bXlSZWRpcmVjdFRvVGFiKCRpZCwncHJvcGVydGllcycsJHBhcmFtcyk7CglyZXR1cm47CiAgICAgIH0KCiAgICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oICRwYXJhbXNbJ3Byb3BuYW1lJ10gKTsKICAgIGlmKCAkZGVmbiA9PSBGQUxTRSApIAogICAgICB7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb3Bub3Rmb3VuZCcpOwoJJHRoaXMtPm15UmVkaXJlY3RUb1RhYigkaWQsJ3Byb3BlcnRpZXMnLCRwYXJhbXNbJ3Byb3BuYW1lJ10pOwoJcmV0dXJuOwogICAgICB9CiAgICAKICAgICRwYXJhbXNbJ2VkaXRwcm9wJ10JPSAkcGFyYW1zWydwcm9wbmFtZSddOwogICAgaWYgKCFpc3NldCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pKSB7CiAgICAgICRwYXJhbXNbJ2lucHV0X25hbWUnXSAJPSAkcGFyYW1zWydwcm9wbmFtZSddOwogICAgfQogICAgaWYgKCFpc3NldCgkcGFyYW1zWydpbnB1dF9wcm9tcHQnXSkpIHsKICAgICAgJHBhcmFtc1snaW5wdXRfcHJvbXB0J10JPSAkZGVmblsncHJvbXB0J107CiAgICB9CiAgICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF90eXBlJ10pKXsKICAgICAgJHBhcmFtc1snbmV3X3R5cGUnXQk9ICRwYXJhbXNbJ2lucHV0X3R5cGUnXTsKICAgIH0KICAgICRwYXJhbXNbJ2lucHV0X3R5cGUnXQk9ICRkZWZuWyd0eXBlJ107CiAgICBpZiAoIWlzc2V0KCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddKSkgewogICAgICAkcGFyYW1zWydpbnB1dF9sZW5ndGgnXQk9ICRkZWZuWydsZW5ndGgnXTsKICAgIH0KICAgIGlmICghaXNzZXQoJHBhcmFtc1snaW5wdXRfbWF4bGVuZ3RoJ10pKSB7CiAgICAgICRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddID0gJGRlZm5bJ21heGxlbmd0aCddOwogICAgfQoKICAgICR0aGlzLT5teVJlZGlyZWN0KCRpZCwnYWRkcHJvcCcsJHJldHVybmlkLCAkcGFyYW1zKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluRWRpdFVzZXJTdGVwMVBhZ2UoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgaWYoICFpc3NldCggJHBhcmFtc1sndXNlcl9pZCddICkgKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkJICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwoJcmV0dXJuOwogICAgICB9CgogICAgLy8gbm93IGdldCB0aGUgdXNlciBpbmZvCiAgICAkdXNlciA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHBhcmFtc1sndXNlcl9pZCddICk7CiAgICBpZiggJHVzZXJbMF0gPT0gZmFsc2UgKQogICAgICB7CgkkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdXNlclsxXSApOwoJcmV0dXJuOwogICAgICB9CiAgICAkdXNlciA9ICR1c2VyWzFdOwoKICAgIC8vIGdldCB0aGUgdXNlciBwcm9wZXJ0aWVzCiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoICRwYXJhbXNbJ3VzZXJfaWQnXSApOwogICAgCiAgICAvLyBnZXQgdGhlIGdyb3VwIG1lbWJlcnNoaXBzCiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkcGFyYW1zWyd1c2VyX2lkJ10gKTsKLy8gdG9kbywgdXNlcnMgbWF5IChvcHRpb25hbGx5KSBub3QgYmUgcGFydCBvZiBhbnkgZ3J1b3BzCi8vICAgICBpZiggJGdyb3VwcyA9PSBmYWxzZSApCi8vICAgICAgIHsKLy8gCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9tZW1iZXJncm91cHMnKSApOwovLyAJcmV0dXJuOwovLyAgICAgICB9CgogICAgLy8gcG9wdWxhdGUgdGhlIHBhcmFtcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdHVmZgogICAgLy8gdGhhdCB3ZSBqdXN0IGxvYWRlZAogICAgJHBhcmFtc1snaW5wdXRfdXNlcm5hbWUnXSA9ICR1c2VyWyd1c2VybmFtZSddOwogICAgJHBhcmFtc1snaW5wdXRfZXhwaXJlc2RhdGUnXSA9ICR1c2VyWydleHBpcmVzJ107Ci8vICAgICAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddID0gJHVzZXJbJ3Bhc3N3b3JkJ107ICAvLyB0aGUgcGFzc3dvcmQgcm93IGlzIG1kNSBoYXNoZWQsIGRvbid0IGJvdGhlciBkaXNwbGF5aW5nIGl0Ci8vICAgICAkcGFyYW1zWydpbnB1dF9yZXBlYXRwYXNzd29yZCddID0gJHVzZXJbJ3Bhc3N3b3JkJ107CiAgICAkdXNlcnByb3BzID0gJyc7CiAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJHByb3AgKQogICAgewogICAgICBpZiggJHVzZXJwcm9wcyA9PSAnJyApCgl7CgkgICR1c2VycHJvcHMgPSAkcHJvcFsndGl0bGUnXS4iPSIuJHByb3BbJ2RhdGEnXTsKCX0KICAgICAgZWxzZQoJewoJICAkdXNlcnByb3BzIC49ICIsIi4kcHJvcFsndGl0bGUnXS4iPSIuJHByb3BbJ2RhdGEnXTsKCX0KICAgIH0KICAgICRwYXJhbXNbJ3VzZXJwcm9wcyddID0gJHVzZXJwcm9wczsKCiAgICAkbWVtYmVyb2YgPSAnJzsKICAgIGlmKCAkZ3JvdXBzICE9IGZhbHNlICkKICAgICAgewoJZm9yZWFjaCggJGdyb3VwcyBhcyAkZ3JvdXAgKQoJewoJICAkcGFyYW1zWydtZW1iZXJvZl8nLiRncm91cFsnZ3JvdXBpZCddXSA9ICRncm91cFsnZ3JvdXBpZCddOwoJfQogICAgICB9CgogICAgLy8gYW5kIGRpc3BsYXkgdGhlIHVzZXIgcGFnZQogICAgLy8gdG9kbywgcHV0IGEgcmVkaXJlY3QgaGVyZQogICAgJHRoaXMtPl9EaXNwbGF5QWRtaW5Vc2VyUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluR3JvdXBzVGFiKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAkcm93Y2xhc3MgPSAncm93MSc7CgogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2dyb3Vwc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ2dyb3Vwc2ZvdW5kJykpOwogICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkb25lZ3JvdXAgKQogICAgewogICAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2xpc3Rncm91cHMnKSApCgl7CgkgICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKCSAgJG9uZXJvdy0+aWQgPSAkb25lZ3JvdXBbJ2lkJ107CgkgICRvbmVyb3ctPm5hbWUgPQoJICAgICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdlZGl0Z3JvdXAnLCAkcmV0dXJuaWQsICRvbmVncm91cFsnZ3JvdXBuYW1lJ10sCgkJCSAgICAgICBhcnJheSAoJ2dyb3VwX2lkJyA9PiAkb25lZ3JvdXBbJ2lkJ10pKTsJCQkgICAgICAgCgkgICRvbmVyb3ctPmRlc2MgPSAkb25lZ3JvdXBbJ2dyb3VwZGVzYyddOwoJICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCgkgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpICkKCSAgICB7CgkgICAgICAkb25lcm93LT5lZGl0bGluayA9CgkJJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2VkaXRncm91cCcsICRyZXR1cm5pZCwKCQkJCSAgICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlICgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKCQkJCQkJCQkJCSAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkJICAgYXJyYXkgKCdncm91cF9pZCcgPT4gJG9uZWdyb3VwWydpZCddKSk7CgkJfQoJICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3JlbW92ZWdyb3VwcycpICkKCSAgICB7CgkgICAgICAkb25lcm93LT5kZWxldGVsaW5rID0KCQkkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZG9fZGVsZXRlZ3JvdXAnLCAkcmV0dXJuaWQsCgkJCQkgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSAoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKCQkJCQkJCQkJCSAkdGhpcy0+TGFuZyAoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCgkJCQkgICBhcnJheSAoJ2dyb3VwX2lkJyA9PiAkb25lZ3JvdXBbJ2lkJ10pLAoJCQkJICAgJHRoaXMtPkxhbmcgKCdhcmV5b3VzdXJlX2RlbGV0ZWdyb3VwJykpOwoJICAgIH0KCSAgCgkgIGFycmF5X3B1c2ggKCRyb3dhcnJheSwgJG9uZXJvdyk7CgkgICgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKCX0KCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50Jyxjb3VudCgkcm93YXJyYXkpKTsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsJHJvd2FycmF5KTsKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdncm91cHNmb3VuZCcsICR0aGlzLT5MYW5nKCdncm91cHNmb3VuZCcpICk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaWR0ZXh0JywgJHRoaXMtPkxhbmcoICdpZCcgKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbmFtZXRleHQnLCAkdGhpcy0+TGFuZyggJ25hbWUnICkpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Rlc2N0ZXh0JywgJHRoaXMtPkxhbmcoICdkZXNjcmlwdGlvbicgKSk7CiAgICB9CgogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdsaXN0Z3JvdXBzJykgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkZGdyb3VwJywKCQkJCQkJICRyZXR1cm5pZCwKCQkJCQkJICR0aGlzLT5MYW5nKCdhZGRncm91cCcpLAoJCQkJCQkgYXJyYXkoKSwgJycsIGZhbHNlLAoJCQkJCQkgZmFsc2UsCgkJCQkJCSAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKICAgICAgfQoKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSggJ2dyb3VwbGlzdC50cGwnICk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pbkNoYW5nZVNldHRpbmdzVGVtcGxhdGVUYWIoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAoJCQkgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX3NldGNoYW5nZXNldHRpbmdzdGVtcGxhdGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZScsCgkJCSAgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCBmYWxzZSwgJGlkLAoJCQkJCSAgICAgJHRoaXMtPkdldFRlbXBsYXRlICgnZmV1c2Vyc19jaGFuZ2VzZXR0aW5nc2Zvcm0nKSwKCQkJCQkJICd0ZW1wbGF0ZWNvbnRlbnQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZGVmYXVsdHMnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2RlZmF1bHRzJywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnZGVmYXVsdHMnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVtcGxhdGVmb3JtLnRwbCcpOwogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5Gb3Jnb3RQYXNzd29yZFRlbXBsYXRlVGFiKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywKCQkJICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19zZXRmb3Jnb3Rwd3RlbXBsYXRlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUxJywkdGhpcy0+TGFuZygnZm9yZ290cGFzc3dvcmRfdGVtcGxhdGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlMScsCgkJCSAgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCBmYWxzZSwgJGlkLAoJCQkJCSAgICAgJHRoaXMtPkdldFRlbXBsYXRlICgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGZvcm0nKSwKCQkJCQkJICd0ZW1wbGF0ZWNvbnRlbnQxJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUyJywkdGhpcy0+TGFuZygnZm9yZ290cGFzc3dvcmRfZW1haWx0ZW1wbGF0ZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGUyJywKCQkJICAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoIGZhbHNlLCAkaWQsCgkJCQkJICAgICAkdGhpcy0+R2V0VGVtcGxhdGUgKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkZW1haWxmb3JtJyksCgkJCQkJCSAndGVtcGxhdGVjb250ZW50MicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlMycsJHRoaXMtPkxhbmcoJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZTMnLAoJCQkgICR0aGlzLT5DcmVhdGVUZXh0QXJlYSggZmFsc2UsICRpZCwKCQkJCQkgICAgICR0aGlzLT5HZXRUZW1wbGF0ZSAoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmR2ZXJpZnlmb3JtJyksCgkJCQkJCSAndGVtcGxhdGVjb250ZW50MycpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0cycsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnZGVmYXVsdHMnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdkZWZhdWx0cycpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmb3Jnb3Rwd190ZW1wbGF0ZWZvcm0udHBsJyk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pbkxvZ2luVGVtcGxhdGVUYWIoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAoJCQkgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX3NldGxvZ2ludGVtcGxhdGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3RlbXBsYXRlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZScsCgkJCSAgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCBmYWxzZSwgJGlkLAoJCQkJCSAgICAgJHRoaXMtPkdldFRlbXBsYXRlICgnZmV1c2Vyc19sb2dpbmZvcm0nKSwKCQkJCQkJICd0ZW1wbGF0ZWxvZ2luZm9ybScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0cycsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnZGVmYXVsdHMnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdkZWZhdWx0cycpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZW1wbGF0ZWZvcm0udHBsJyk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pbkxvZ291dFRlbXBsYXRlVGFiKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywKCQkJICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19zZXRsb2dvdXR0ZW1wbGF0ZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlJywkdGhpcy0+TGFuZygndGVtcGxhdGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywKCQkJICAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoIGZhbHNlLCAkaWQsCgkJCQkJICAgICAkdGhpcy0+R2V0VGVtcGxhdGUgKCdmZXVzZXJzX2xvZ291dGZvcm0nKSwKCQkJCQkJICd0ZW1wbGF0ZWxvZ291dGZvcm0nKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnc3VibWl0JywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZGVmYXVsdHMnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2RlZmF1bHRzJywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnZGVmYXVsdHMnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVtcGxhdGVmb3JtLnRwbCcpOwogIH0KCgogIGZ1bmN0aW9uIF9EaXNwbGF5QWRtaW5Qcm9wZXJ0aWVzVGFiKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRtZXNzYWdlID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgJG1lc3NhZ2UpOwogICAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkxhbmcoJ3Byb3BlcnRpZXMnKSk7CgogICAgJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICRyb3dhcnJheSA9IGFycmF5KCk7CiAgICAkcm93Y2xhc3MgPSAncm93MSc7CiAgICAka2V5cyA9IGFycmF5X2tleXMoJHRoaXMtPnR5cGVzKTsKICAgIGZvcmVhY2goICRkZWZucyBhcyAkZGVmbiApCiAgICB7CiAgICAgICRwcm9wZ3JvdXBzID0gJHRoaXMtPkdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJGRlZm5bJ25hbWUnXSk7CgogICAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHByb3AnKSkgCgl7CgkgICRvbmVyb3ctPm5hbWUgPSAKCSAgICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHByb3AnLCAkcmV0dXJuaWQsICRkZWZuWyduYW1lJ10sCgkJCSAgICAgICBhcnJheSgncHJvcG5hbWUnID0+ICRkZWZuWyduYW1lJ10pKTsKCX0KICAgICAgZWxzZQoJewoJICAkb25lcm93LT5uYW1lID0gJGRlZm5bJ25hbWUnXTsKCX0KICAgICAgJG9uZXJvdy0+cHJvbXB0ID0gJGRlZm5bJ3Byb21wdCddOwogICAgICAkb25lcm93LT50eXBlID0gJHRoaXMtPkxhbmcoICRrZXlzWyRkZWZuWyd0eXBlJ11dICk7CiAgICAgICRvbmVyb3ctPmxlbmd0aCA9ICRkZWZuWydsZW5ndGgnXTsKICAgICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgogICAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRwcm9wJykpCgl7CgkgICRvbmVyb3ctPmVkaXRsaW5rID0KCSAgICAkdGhpcy0+Q3JlYXRlTGluayAoJGlkLCAnZWRpdHByb3AnLCAkcmV0dXJuaWQsCgkJCSAgICAgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKCQkJCQkJCQkJICAgICR0aGlzLT5MYW5nICgnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCgkJCSAgICAgICBhcnJheSgncHJvcG5hbWUnID0+ICRkZWZuWyduYW1lJ10pKTsKCgkgIGlmKCBjb3VudCgkcHJvcGdyb3VwcykgPT0gMCApCgkgICAgewoJICAgICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9CgkJJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2RvX2RlbGV0ZXByb3AnLCAkcmV0dXJuaWQsCgkJCQkgICAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJCQkJCQkJJHRoaXMtPkxhbmcgKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkJICAgYXJyYXkoJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddLCAncHJvcHR5cGUnID0+ICRkZWZuWyd0eXBlJ10pLCAKCQkJCSAgICR0aGlzLT5MYW5nKCdjb25maXJtX2RlbGV0ZV9wcm9wJykpOwoJICAgIH0KCX0KCiAgICAgIGFycmF5X3B1c2ggKCRyb3dhcnJheSwgJG9uZXJvdyk7CiAgICAgICgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzID0gInJvdzIiIDogJHJvd2NsYXNzID0gInJvdzEiKTsKICAgIH0KCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywkdGhpcy0+TGFuZygnbmFtZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignbGVuZ3RodGV4dCcsJHRoaXMtPkxhbmcoJ2xlbmd0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0dGV4dCcsJHRoaXMtPkxhbmcoJ3Byb21wdCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigndHlwZXRleHQnLCR0aGlzLT5MYW5nKCd0eXBlJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9wcycsJHJvd2FycmF5KTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvcGNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb3BzZm91bmQnLCR0aGlzLT5MYW5nKCdwcm9wc2ZvdW5kJykpOwoKICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpICkKICAgICAgewoJLy8gdG9kbywgYWRkIGEgcGVybWlzc2lvbiBjaGVjayBhcm91bmQgdGhpcwoJLy8gbWF5YmUgY3JlYXRlIGFuICJlZGl0IGZyb250ZW5kdXNlciBwcm9wZXJ0aWVzIiBwZXJtaXNzaW9uCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoICRpZCwgJ2FkZHByb3AnLAoJCQkJCQkgJHJldHVybmlkLAoJCQkJCQkgJHRoaXMtPkxhbmcoJ2FkZHByb3AnKSwKCQkJCQkJIGFycmF5KCksICcnLCBmYWxzZSwKCQkJCQkJIGZhbHNlLAoJCQkJCQkgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKSk7CiAgICAgIH0KCgogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcm9wZXJ0aWVzZm9ybS50cGwnKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluVXNlcnNUYWIoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQogIHsKICAgIC8vIHRoaXMgdGFiIGhhcyBtZXJlbHkgb25lIG1vZm8gbGlzdCBvZiB1c2VzIGFuZCB0aGUgYWJpbGl0eSB0byBlZGl0IHRoZW0sIAogICAgLy8gc2VlIGRldGFpbHMgYWJvdXQgdGhlbSwgYW5kIHRoZW4gZGVsZXRlIHRoZW0KICAgIC8vIG1heWJlIHNlbmQgYW4gZW1haWwgdG8gdGhlbSB0b28gaWYgSSBnZXQgYXJvdW5kIHRvIGl0IHRoYXQgaXMuCgogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdsaXN0dXNlcnMnKSApCiAgICAgIHsKCS8vIGZpbHRlcmluZyBzdHVmZgoJaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXInXSkgKQoJICB7CgkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXJfZ3JvdXAnXSApICkKCSAgICAgIHsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9ncm91cCcsICRwYXJhbXNbJ2ZpbHRlcl9ncm91cCddICk7CgkgICAgICB9CgkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXJfcmVnZXgnXSApICkKCSAgICAgIHsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9yZWdleCcsICRwYXJhbXNbJ2ZpbHRlcl9yZWdleCddICk7CgkgICAgICB9CgkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXJfbGltaXQnXSApICkKCSAgICAgIHsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9saW1pdCcsICRwYXJhbXNbJ2ZpbHRlcl9saW1pdCddICk7CgkgICAgICB9CgkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXJfc29ydGJ5J10gKSApCgkgICAgICB7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfc29ydCcsICRwYXJhbXNbJ2ZpbHRlcl9zb3J0YnknXSApOwoJICAgICAgfQoJICAgIGlmKCBpc3NldCggJHBhcmFtc1snZmlsdGVyX3Byb3BlcnR5c2VsJ10gKSApCgkgICAgICB7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2N1cnJlbnRfcHJvcHNlbCcsICRwYXJhbXNbJ2ZpbHRlcl9wcm9wZXJ0eXNlbCddICk7CgkgICAgICB9CgkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydmaWx0ZXJfcHJvcGVydHlzZWwnXSApICkKCSAgICAgIHsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3VycmVudF9wcm9wdmFsJywgJHBhcmFtc1snZmlsdGVyX3Byb3BlcnR5J10gKTsKCSAgICAgIH0KCSAgfQoJJGN1cmdyb3VwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2N1cnJlbnRfZ3JvdXAnLCAnJyk7CgkkY3VycmVnZXggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9yZWdleCcsICcnKTsKCSRjdXJsaW1pdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X2xpbWl0JywgMTAwKTsKCSRjdXJzb3J0ICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3NvcnQnLCAnJyk7CgkkY3VycHJvcHNlbCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjdXJyZW50X3Byb3BzZWwnLCAnbm9uZScpOwoJJGN1cnByb3B2YWwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3VycmVudF9wcm9wdmFsJywgJycpOyAKCQoJLy8gZ2V0IGEgZ3JvdXAgbGlzdCBmb3IgdGhlIGZpbHRlcgoJLy8gaXQgc2hvdWxkIGJlIHJlYWR5IHRvIGdvIHJpZ2h0IGludG8gdGhlIGRyb3Bkb3duIChjb29sIGVoKQoJJGdyb3VwczEgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CgkkZ3JvdXBzID0gYXJyYXlfbWVyZ2UoIGFycmF5KCJBbGwgR3JvdXBzIiA9PiAtMSksICRncm91cHMxICk7CgkKCS8vIGEgcHVsbGRvd24gbGlzdCBmb3IgbGltaXRzCgkkbGltaXRzID0gYXJyYXkoICcxMDAnID0+IDEwMCwKCQkJICcxMCcgPT4gMTAsCgkJCSAnMjUnID0+IDI1LAoJCQkgJzUwJyA9PiA1MCwKCQkJICcyNTAnID0+IDI1MCwKCQkJICc1MDAnID0+IDUwMCApOwoKCS8vIGEgcHVsbGRvd24gbGlzdCBmb3IgcHJvcGVydHkgZGVmaW5pdGlvbnMKCSRkZWZuczEgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwoJJGRlZm5zID0gYXJyYXkoKTsKCSRkZWZuc1snTm9uZSddID0gJ25vbmUnOwoJZm9yZWFjaCggJGRlZm5zMSBhcyAkZGVmICkKCSAgewoJICAgICRkZWZuc1skZGVmWydwcm9tcHQnXV0gPSAkZGVmWyduYW1lJ107CgkgIH0KCQoJLy8gYSBwdWxsZG93biBsaXN0IGZvciBzb3J0aW5nCgkkc29ydHMgPSBhcnJheSAoJ1VzZXJuYW1lJyA9PiAndXNlcm5hbWUnLAoJCQknVXNlcm5hbWUgKGRlc2NlbmRpbmcpJyA9PiAndXNlcm5hbWUgZGVzYycsCgkJCSdDcmVhdGUgRGF0ZScgPT4gJ2NyZWF0ZWRhdGUnLAoJCQknQ3JlYXRlIERhdGUgKGRlc2NlbmRpbmcpJyA9PiAnY3JlYXRlZGF0ZSBkZXNjJywKCQkJJ0V4cGlyeSBEYXRlJyA9PiAnZXhwaXJlcycsCgkJCSdFeHBpcnkgRGF0ZSAoZGVzY2VuZGluZyknID0+ICdleHBpcmVzIGRlc2MnKTsKCS8vIG5vdyBzZXR1cCB0aGUgdGVtcGxhdGUgZmllbGRzCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdwcm9tcHRfZmlsdGVyJywgJHRoaXMtPkxhbmcoJ2ZpbHRlcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ3Byb21wdF9zb3J0JywgJHRoaXMtPkxhbmcoJ3NvcnQnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdzdGFydGZvcm0nLAoJCQkgICAgICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZGVmYXVsdGFkbWluJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAncHJvbXB0X2dyb3VwJywgJHRoaXMtPkxhbmcoJ2dyb3VwJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAndXNlcnNmb3VuZCcsICR0aGlzLT5MYW5nKCd1c2Vyc2ZvdW5kJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAndXNlcnNpbmdyb3VwJywgJHRoaXMtPkxhbmcoJ3VzZXJzaW5ncm91cCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2ZpbHRlcl9ncm91cCcsCgkJCSAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wRG93biggJGlkLCAnZmlsdGVyX2dyb3VwJywgJGdyb3VwcywgLTEsCgkJCQkJCQkgICAkY3VyZ3JvdXApKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ3Byb21wdF91c2VyZmlsdGVyJywgJHRoaXMtPkxhbmcoJ3VzZXJmaWx0ZXInKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdmaWx0ZXJfcmVnZXgnLCAKCQkJICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2ZpbHRlcl9yZWdleCcsCgkJCQkJCSAgICAgICAkY3VycmVnZXgsIDIwLCAyMCApKTsKCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdwcm9tcHRfcHJvcGVydHlmaWx0ZXJzZWwnLCR0aGlzLT5MYW5nKCdwcm9wZXJ0eWZpbHRlcicpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2ZpbHRlcl9wcm9wZXJ0eXNlbCcsCgkJCSAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wRG93biggJGlkLCAnZmlsdGVyX3Byb3BlcnR5c2VsJywKCQkJCQkJCSAgICRkZWZucywgLTEsICRjdXJwcm9wc2VsICkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCAncHJvbXB0X3Byb3BlcnR5ZmlsdGVyJywkdGhpcy0+TGFuZygndmFsdWVyZWdleCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2ZpbHRlcl9wcm9wZXJ0eScsCgkJCSAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdmaWx0ZXJfcHJvcGVydHknLAoJCQkJCQkgICAgICAgJGN1cnByb3B2YWwsIDIwLCAyMCApKTsKCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oICdwcm9tcHRfbGltaXQnLAoJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3VzZXJsaW1pdCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2ZpbHRlcl9saW1pdCcsCgkJCSAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wRG93biggJGlkLCAnZmlsdGVyX2xpbWl0JywgJGxpbWl0cywgLTEsCgkJCQkJCQkgICAkY3VybGltaXQpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ3Byb21wdF9zb3J0YnknLAoJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbiggJ2ZpbHRlcl9zb3J0YnknLAoJCQkgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcERvd24oICRpZCwgJ2ZpbHRlcl9zb3J0YnknLCAkc29ydHMsIC0xLAoJCQkJCQkJICAgJGN1cnNvcnQpKTsKCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3NlbGVjdCcsCgkJCSAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCggJGlkLCAnZmlsdGVyJywKCQkJCQkJCSR0aGlzLT5MYW5nKCdhcHBseWZpbHRlcicpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2hpZGRlbicsCgkJCSAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAnYWN0aXZlX3RhYicsICd1c2VycycpCgkJCSAgICAgICk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQgKCkpOwoKCgkkdXNlcnMgPSAkdGhpcy0+R2V0VXNlcnNJbkdyb3VwKCAkY3VyZ3JvdXAsICRjdXJyZWdleCwgJGN1cmxpbWl0LCAkY3Vyc29ydCwKCQkJCQkgJGN1cnByb3BzZWwsICRjdXJwcm9wdmFsICk7CglpZiggIWlzX2FycmF5KCR1c2VycykgKQoJICB7CgkgICAgLy8gYW4gZXJyb3Igb2NjdXJyZWQKCSAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwKCQkJCSAgICAgICRkYi0+RXJyb3JNc2coKSApOwoJICAgIHJldHVybjsKCSAgfQoKCS8vIGdldCB0aGUgdG90YWwgbnVtYmVyIG9mIHVzZXJzCgkkbnVtdXNlcnMgPSAkdGhpcy0+Q291bnRVc2Vyc0luR3JvdXAoICRjdXJncm91cCApOwoKCSRyb3dhcnJheSA9IGFycmF5KCk7Cgkkcm93Y2xhc3MgPSAicm93MSI7CglnbG9iYWwgJGdDbXM7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ251bXVzZXJzJywgJG51bXVzZXJzICk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1ldGV4dCcsICR0aGlzLT5MYW5nKCd1c2VybmFtZScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW1haWx0ZXh0JywgJHRoaXMtPkxhbmcoJ2VtYWlsJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGF0dXN0ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY3JlYXRlZHRleHQnLCAkdGhpcy0+TGFuZygnY3JlYXRlZCcpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXhwaXJlc3RleHQnLCAkdGhpcy0+TGFuZygnZXhwaXJlcycpKTsKCWZvcmVhY2goICR1c2VycyBhcyAkcm93ICkKCXsKCSAgJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOwoJICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCSAgJG9uZXJvdy0+Y3JlYXRlZCAgPSAkcm93WydjcmVhdGVkYXRlJ107CgkgICRvbmVyb3ctPnVzZXJuYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHVzZXInLCAkcmV0dXJuaWQsICRyb3dbJ3VzZXJuYW1lJ10sCgkJCQkJCWFycmF5KCd1c2VyX2lkJyA9PiAkcm93WydpZCddKSk7CgkgICRvbmVyb3ctPmV4cGlyZXMgID0gJHJvd1snZXhwaXJlcyddOwoJICAkb25lcm93LT5lZGl0bGluayA9CgkgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2VkaXR1c2VyJywgJHJldHVybmlkLAoJCQkgICAgICAgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCgkJCQkJCQkJCSAgICAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAoJCQkgICAgICAgYXJyYXkgKCd1c2VyX2lkJyA9PiAkcm93WydpZCddICkpOwoJICAkb25lcm93LT5kZWxldGVsaW5rID0gCgkgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwnZG9fZGVsZXRldXNlcicsJHJldHVybmlkLAoJCQkgICAgICAgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywKCQkJCQkJCQkJICAgICR0aGlzLT5MYW5nICgnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKCQkJICAgICAgIGFycmF5ICgndXNlcl9pZCcgPT4gJHJvd1snaWQnXSksCgkJCSAgICAgICAkdGhpcy0+TGFuZyAoJ2FyZXlvdXN1cmUnKSk7CgkgIAoJICBhcnJheV9wdXNoICgkcm93YXJyYXksICRvbmVyb3cpOwoJICAoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7Cgl9CgoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsJHJvd2FycmF5KTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiAgICAgIH0KCiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZHVzZXInKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkbGluaycsIAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnYWRkdXNlcicsCgkJCQkJCSAkcmV0dXJuaWQsCgkJCQkJCSAkdGhpcy0+TGFuZygnYWRkdXNlcicpLAoJCQkJCQkgYXJyYXkoKSwgJycsIGZhbHNlLAoJCQkJCQkgZmFsc2UsCgkJCQkJCSAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKICAgICAgfQoKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSggJ3VzZXJsaXN0LnRwbCcgKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluUGFuZWwoJGlkLCYkcGFyYW1zLCRyZXR1cm5pZCkKICB7CiAgICAkZGIgPSAkdGhpcy0+Y21zLT5kYjsKCiAgICAkYWN0aXZlX3RhYiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhY3RpdmVfdGFiJywtMSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2FjdGl2ZV90YWInXSApICkKICAgICAgewoJJGFjdGl2ZV90YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107CiAgICAgIH0KCiAgICAvLyB0aGUgdGFicwogICAgZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CgogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdwcm9wZXJ0aWVzJykgKQogICAgICB7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoICdwcm9wZXJ0aWVzJywgJHRoaXMtPkxhbmcoJ3Byb3BlcnRpZXMnKSwKCQkJICAgICAgKCRhY3RpdmVfdGFiID09ICdwcm9wZXJ0aWVzJykpOwogICAgICB9CiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3VzZXJzbmdyb3VwcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAnZ3JvdXBzJywgJHRoaXMtPkxhbmcoJ2dyb3VwcycpLCgkYWN0aXZlX3RhYiA9PSAnZ3JvdXBzJykpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAndXNlcnMnLCAkdGhpcy0+TGFuZygndXNlcnMnKSwoJGFjdGl2ZV90YWIgPT0gJ3VzZXJzJykpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAnYWRtaW4nLCAkdGhpcy0+TGFuZygnYWRtaW4nKSwoJGFjdGl2ZV90YWIgPT0gJ2FkbWluJykpOwogICAgICB9CiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3NpdGVwcmVmcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAncHJlZnMnLCAkdGhpcy0+TGFuZygncHJlZmVyZW5jZXMnKSwoJGFjdGl2ZV90YWIgPT0gJ3ByZWZzJykpOwogICAgICB9CiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3RlbXBsYXRlcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAnbG9naW50ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdsb2dpbl90ZW1wbGF0ZScpLAoJCQkJICAoJGFjdGl2ZV90YWIgPT0gJ2xvZ2ludGVtcGxhdGUnKSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoICdsb2dvdXR0ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdsb2dvdXRfdGVtcGxhdGUnKSwKCQkJCSAgKCRhY3RpdmVfdGFiID09ICdsb2dvdXR0ZW1wbGF0ZScpKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlciggJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJywgJHRoaXMtPkxhbmcoJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJyksCgkJCQkgICgkYWN0aXZlX3RhYiA9PSAnY2hhbmdlc2V0dGluZ3NfdGVtcGxhdGUnKSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoICdmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZScpLAoJCQkJICAoJGFjdGl2ZV90YWIgPT0gJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJykpOwogICAgICB9CiAgICBlY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgogICAgLy8gVGhlY29udGVudCBvZiB0aGUgdGFicwogICAgZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdwcm9wZXJ0aWVzJykgKQogICAgICB7CgllY2hvICR0aGlzLT5TdGFydFRhYigncHJvcGVydGllcycpOwoJJHRoaXMtPl9EaXNwbGF5QWRtaW5Qcm9wZXJ0aWVzVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgICAgIH0KICAgIAogICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2Vyc25ncm91cHMnKSApCiAgICAgIHsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdncm91cHMnKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluR3JvdXBzVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3VzZXJzJyk7CgkkdGhpcy0+X0Rpc3BsYXlBZG1pblVzZXJzVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2FkbWluJyk7CgkkdGhpcy0+X0Rpc3BsYXlBZG1pbkFkbWluVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgICAgIH0KCiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3NpdGVwcmVmcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZzJyk7CgkkdGhpcy0+X0Rpc3BsYXlBZG1pblByZWZzVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgICAgIH0KCiAgICBpZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3RlbXBsYXRlcycpICkKICAgICAgewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2xvZ2ludGVtcGxhdGUnKTsKCSR0aGlzLT5fRGlzcGxheUFkbWluTG9naW5UZW1wbGF0ZVRhYiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdsb2dvdXR0ZW1wbGF0ZScpOwoJJHRoaXMtPl9EaXNwbGF5QWRtaW5Mb2dvdXRUZW1wbGF0ZVRhYiggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgKTsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZScpOwoJJHRoaXMtPl9EaXNwbGF5QWRtaW5DaGFuZ2VTZXR0aW5nc1RlbXBsYXRlVGFiKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJyk7CgkkdGhpcy0+X0Rpc3BsYXlBZG1pbkZvcmdvdFBhc3N3b3JkVGVtcGxhdGVUYWIoICRpZCwgJHBhcmFtcywgJHJldHVybmlkICk7CgllY2hvICR0aGlzLT5FbmRUYWIoKTsKICAgICAgfQoKICAgIGVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheUFkbWluUHJlZnNUYWIoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgLy8gZmlsbCBvdXQgdGhlIHRlbXBsYXRlCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fc2V0cHJlZnMnKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcHdmbGRsZW4nLCAkdGhpcy0+TGFuZygncHJvbXB0X3B3ZmxkbGVuJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wd2ZsZGxlbicsIAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfcHdmbGRsZW4nLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJywyMCksIAoJCQkJCQkgMiwgMiApKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9taW5wd2xlbicsICR0aGlzLT5MYW5nKCdwcm9tcHRfbWlucHdsZW4nKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X21pbnB3bGVuJywgCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9taW5wd2xlbicsCgkJCQkJCSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWluX3Bhc3N3b3JkbGVuZ3RoJyksIDIsIDIgKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luZm9fbWlucHdsZW4nLAoJCQkgICR0aGlzLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X21heHB3bGVuJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9tYXhwd2xlbicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfbWF4cHdsZW4nLCAKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X21heHB3bGVuJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKSwgMiwgMiApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5mb19tYXhwd2xlbicsCgkJCSAgJHRoaXMtPkxhbmcoJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJykpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3VuZmxkbGVuJywgJHRoaXMtPkxhbmcoJ3Byb21wdF91bmZsZGxlbicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdW5mbGRsZW4nLCAKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3VuZmxkbGVuJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcsMjApLCAKCQkJCQkJIDIsIDIgKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbWludW5sZW4nLCAkdGhpcy0+TGFuZygncHJvbXB0X21pbnVubGVuJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9taW51bmxlbicsIAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfbWludW5sZW4nLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21pbl91c2VybmFtZWxlbmd0aCcpLCAyLCAyICkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbmZvX21pbnVubGVuJywKCQkJICAkdGhpcy0+TGFuZygnd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9tYXh1bmxlbicsICR0aGlzLT5MYW5nKCdwcm9tcHRfbWF4dW5sZW4nKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X21heHVubGVuJywgCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9tYXh1bmxlbicsCgkJCQkJCSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJyksIDIsIDIgKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luZm9fbWF4dW5sZW4nLAoJCQkgICR0aGlzLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zaWduaW5fYnV0dG9uJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9zaWduaW5fYnV0dG9uJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zaWduaW5fYnV0dG9uJywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3NpZ25pbl9idXR0b24nLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NpZ25pbl9idXR0b24nLCR0aGlzLT5MYW5nKCdsb2dpbicpKSwgMTUsIDE1ICkpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3Nlc3Npb250aW1lb3V0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9zZXNzaW9udGltZW91dCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfc2Vzc2lvbnRpbWVvdXQnLCAKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3Nlc3Npb250aW1lb3V0JywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycpLCA0LCA0ICkpOwoJCQkgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3JlcXVpcmVvbmVncm91cCcsIAoJCQkgIG15Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbnB1dF9yZXF1aXJlb25lZ3JvdXAnLCAxLAoJCQkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfc210cHZhbGlkYXRlJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9zbXRwdmFsaWRhdGUnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3NtdHB2YWxpZGF0ZScsIAoJCQkgIG15Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbnB1dF9zbXRwdmFsaWRhdGUnLCAxLAoJCQkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZG9fc210cF92YWxpZGF0ZV9lbWFpbCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luZm9fc210cHZhbGlkYXRlJywgJHRoaXMtPkxhbmcoJ2luZm9fc210cHZhbGlkYXRlJykpOwoKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLCAKCQkJICBteUNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfYWxsb3dfZHVwbGljYXRlX2VtYWlscycsIDEsCgkJCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJywgJHRoaXMtPkxhbmcoJ2luZm9fYWxsb3dfZHVwbGljYXRlX2VtYWlscycpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnLAoJCQkgIG15Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbnB1dF9hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywgMSwKCQkJCQkJJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnKSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbmZvX2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnLCAkdGhpcy0+TGFuZygnaW5mb19hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJykpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2ZldXNlcnNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLAoJCQkgICR0aGlzLT5MYW5nKCdwcm9tcHRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycsCgkJCSAgbXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2lucHV0X2ZldXNlcnNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLCAxLAoJCQkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2luZm9fZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycsICR0aGlzLT5MYW5nKCdpbmZvX2ZldXNlcnNfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSk7CgoKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kZmx0Z3JvdXAnLCAkdGhpcy0+TGFuZygncHJvbXB0X2RmbHRncm91cCcpKTsKICAgICRncm91cHMxID0gJHRoaXMtPkdldEdyb3VwTGlzdCgpOwogICAgJGdyb3VwcyA9IGFycmF5X21lcmdlKCBhcnJheSgiTm9uZSIgPT4gLTEpLCAkZ3JvdXBzMSApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kZmx0Z3JvdXAnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dERyb3BEb3duKCAkaWQsICdpbnB1dF9kZmx0Z3JvdXAnLCAkZ3JvdXBzLCAtMSwKCQkJCQkJICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnKSkpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLAoJCQkJCQkJICAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwnJywnJywKCQkJCQkJCSAgICAkdGhpcy0+TGFuZygnY29uZmlybV9zdWJtaXRwcmVmcycpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdjYW5jZWwnLAoJCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ2NhbmNlbCcsCgkJCQkJCQkgICAgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVxdWlyZWRtYXJrZXInLAoJCQkgICR0aGlzLT5MYW5nKCdyZXF1aXJlZGZpZWxkbWFya2VyJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yZXF1aXJlZG1hcmtlcicsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X3JlcXVpcmVkZmllbGRtYXJrZXInLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsJyonKSwyLDIpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZXF1aXJlZGNvbG9yJywKCQkJICAkdGhpcy0+TGFuZygncmVxdWlyZWRmaWVsZGNvbG9yJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yZXF1aXJlZGNvbG9yJywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfcmVxdWlyZWRmaWVsZGNvbG9yJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsJ2JsdWUnKSwxMCwxMCkpOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2hpZGRlbm1hcmtlcicsCgkJCSAgJHRoaXMtPkxhbmcoJ2hpZGRlbmZpZWxkbWFya2VyJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9oaWRkZW5tYXJrZXInLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9oaWRkZW5maWVsZG1hcmtlcicsCgkJCQkJCSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsJyEhJyksMiwyKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfaGlkZGVuY29sb3InLAoJCQkgICR0aGlzLT5MYW5nKCdoaWRkZW5maWVsZGNvbG9yJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9oaWRkZW5jb2xvcicsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2hpZGRlbmZpZWxkY29sb3InLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsJ2dyZWVuJyksMTAsMTApKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9mb3Jnb3Rwd19wYWdlJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZvcmdvdHB3X3BhZ2UnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9mb3Jnb3Rwd19wYWdlJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKSwgMTUsIDE1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2NoYW5nZXNldHRpbmdzX3BhZ2UnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9jaGFuZ2VzZXR0aW5nc19wYWdlJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnKSwgMTUsIDE1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9sb2dpbl9wYWdlJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X2xvZ2luX3BhZ2UnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2xvZ2luX3BhZ2UnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9sb2dpbl9wYWdlJywKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nKSwgMTUsIDE1KSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9sb2dvdXRfcGFnZScsCgkJCSAgJHRoaXMtPkxhbmcoJ3Byb21wdF9sb2dvdXRfcGFnZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfbG9nb3V0X3BhZ2UnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9sb2dvdXRfcGFnZScsCgkJCQkJCSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpLCAxNSwgMTUpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnLAoJCQkgICR0aGlzLT5MYW5nKCdwcm9tcHRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnLAoJCQkgIG15Q3JlYXRlSW5wdXRDaGVja2JveCggJGlkLCAnaW5wdXRfYWxsb3dfcmVwZWF0ZWRfbG9naW4nLCAxLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycpKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbmZvX3N0YXInLCR0aGlzLT5MYW5nKCdpbmZvX3N0YXInKSk7CiAgICAkbnVtID0gJHRoaXMtPkNvdW50VGVtcENvZGVSZWNvcmRzKCk7CiAgICBpZiggJG51bSApCiAgICB7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X251bXJlc2V0cmVjb3JkcycsCgkJCSAgICAkdGhpcy0+TGFuZygncHJvbXB0X251bXJlc2V0cmVjb3JkJykpOwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2RhdGFfbnVtcmVzZXRyZWNvcmRzJywgJG51bSk7IC8vdG9kbwogICAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3JlbW92ZWFsbCcsCgkJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdpbnB1dF9yZW1vdmVhbGwnLAoJCQkJCQkgICAgICR0aGlzLT5MYW5nKCdyZW1vdmVhbGwnKSwKCQkJCQkJICAgICAnb25jbGljaz0icmV0dXJuIGNvbmZpcm0oXCcnLiR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykuJ1wnKSInKSk7CiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMXdlZWsnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnaW5wdXRfcmVtb3ZlMXdlZWsnLAoJCQkJCQkgICAgICR0aGlzLT5MYW5nKCdyZW1vdmUxd2VlaycpLAoJCQkJCQkgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKICAgICAgCiAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMW1vbnRoJywKCQkJICAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2lucHV0X3JlbW92ZTFtb250aCcsCgkJCQkJCSAgICAgJHRoaXMtPkxhbmcoJ3JlbW92ZTFtb250aCcpLAoJCQkJCQkgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKICAgIH0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucHJlZnMudHBsJyk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlVc2VyRm9yZ290UGFzc3dvcmRQYWdlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICR1c2VybmFtZSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICkgKQogICAgICB7CgkkdXNlcm5hbWUgPSB0cmltKCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICk7CiAgICAgIH0KCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCAkcGFyYW1zWydlcnJvciddICk7CiAgICAgIH0KICAgIGlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10gKTsKICAgICAgfQogICAgCiAgICBpZiggIWlzc2V0KCAkcGFyYW1zWydza2lwZm9ybWRpc3BsYXknXSApICkKICAgICAgewoJLy8gc2V0dXAgdGhlIHRlbXBsYXRlCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJCSAgICAgICR0aGlzLT5mZUNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZm9yZ290cHcnLCAkcmV0dXJuaWQgKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGUnLAoJCQkgICAgICAkdGhpcy0+TGFuZygnZm9yZ290cHcnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xvc3Rwd19tZXNzYWdlJywKCQkJICAgICAgJHRoaXMtPkxhbmcoJ2xvc3Rwd19tZXNzYWdlJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLAoJCQkgICAgICAkdGhpcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJykpOwogICAgICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfbGFiZWwnLCRpZCk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3VzZXJuYW1lJywKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnaW5wdXRfdXNlcm5hbWUnLAoJCQkJCQkgICAgICAkdXNlcm5hbWUsIAoJCQkJCQkgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSwgCgkJCQkJCSAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CglpZiggaXNzZXQoICRwYXJhbXNbJ3JldHVybnRvJ10gKSApCgkgIHsKCSAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsCgkJCQkgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2lucHV0X3JldHVybnRvJywkcGFyYW1zWydyZXR1cm50byddKSk7CgkgIH0KICAgICAgfQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCAnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGZvcm0nICk7CiAgfQoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlVc2VyRm9yZ290UGFzc3dvcmRWZXJpZmljYXRpb25QYWdlKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgIC8vIGZpbGwgaW4gdGhlIHRlbXBsYXRlCiAgICAkdWlkID0gJyc7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3VpZCddICkgKQogICAgICB7CgkkdWlkID0gJHBhcmFtc1snaW5wdXRfdWlkJ107CiAgICAgIH0KICAgICR1c2VybmFtZSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddICkgKQogICAgICB7CgkkdXNlcm5hbWUgPSAkcGFyYW1zWydpbnB1dF91c2VybmFtZSddOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCSR1c2VybmFtZSA9ICR0aGlzLT5HZXRVc2VyTmFtZSggJHVpZCApOwogICAgICB9CiAgICAkY29kZSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9jb2RlJ10gKSApCiAgICAgIHsKCSRjb2RlID0gJHBhcmFtc1snaW5wdXRfY29kZSddOwogICAgICB9CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3InLCRwYXJhbXNbJ2Vycm9yJ10pOwogICAgICB9CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkcGFyYW1zWydtZXNzYWdlJ10pOwogICAgICB9CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAoJCQkgICR0aGlzLT5mZUNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RvX3ZlcmlmeWNvZGUnLCRyZXR1cm5pZCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywKCQkJICAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdpbnB1dF91aWQnLCR1aWQpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X3VzZXJuYW1lJywkdGhpcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF91c2VybmFtZScsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnaW5wdXRfdXNlcm5hbWUnLCAkdXNlcm5hbWUsCgkJCQkJCSAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJyksIAoJCQkJCQkgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSwKCQkJCQkJICAnZGlzYWJsZWQ9ImRpc2FibGVkIicpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJvbXB0X2NvZGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfY29kZScpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfY29kZScsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAnaW5wdXRfY29kZScsICRjb2RlLCAxMCwgMTAgKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wYXNzd29yZCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfcGFzc3dvcmQnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKCRpZCwgJ2lucHV0X3Bhc3N3b3JkJywgJycsCgkJCQkJCSAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyksCgkJCQkJCSAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9yZXBlYXRwYXNzd29yZCcsJHRoaXMtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yZXBlYXRwYXNzd29yZCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0UGFzc3dvcmQoJGlkLCAnaW5wdXRfcmVwZWF0cGFzc3dvcmQnLCAnJywKCQkJCQkJICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwKCQkJCQkJICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZHZlcmlmeWZvcm0nKTsKICB9CgoKICBmdW5jdGlvbiBfRGlzcGxheVVzZXJTZXR0aW5nc1BhZ2UoICRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCApCiAgewogICAgJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiggJHVpZCA9PSBmYWxzZSApIAogICAgICB7CgkvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdlcnJvcl9ub3Rsb2dnZWRpbicpKTsKCXJldHVybjsKICAgICAgfQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRVc2VySW5mbyggJHVpZCApOwogICAgaWYoICRyZXN1bHRbMF0gPT0gRkFMU0UgKQogICAgICB7CgkvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgoJJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgCgkJCQkgICRyZXN1bHRbMV0pOwoJcmV0dXJuOwogICAgICB9CiAgICAkdWluZm8gPSAkcmVzdWx0WzFdOwoKICAgIGlmKCBpc3NldCggJHBhcmFtc1snZXJyb3InXSApICkKICAgICAgewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcicsICRwYXJhbXNbJ2Vycm9yJ10gKTsKICAgICAgfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsICRwYXJhbXNbJ21lc3NhZ2UnXSApOwogICAgICB9CgogICAgLy8gZ2V0IHRoZSB1c2VycyBtZW1iZXIgZ3JvdXBzCiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICBpZiggISRncm91cHMgKQogICAgICB7CgkvLyB0aGlzIHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncnVvcHMuLi4KCS8vIGhhbmRsZSB0aGlzIGxhdGVyIHRvZG8KCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSggJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnZXJyb3Jfbm9ncm91cHMnKSk7CglyZXR1cm47CiAgICAgIH0KCiAgICAvLyBub3cgd2UgaGF2ZSB0aGUgZ3JvdXBzLCB3ZSBidWlsZCBhIHVuaW9uIG9mIGFsbCBvZiB0aGUgZ3JvdXBzIHByb3BlcnRpZXMKICAgICRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRncm91cHMgYXMgJGdycHJlY29yZCApCiAgICB7CiAgICAgICRnaWQgPSAkZ3JwcmVjb3JkWydncm91cGlkJ107CiAgICAgICRwcm9wcmVsYXRpb25zID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICAgICAgJHByb3BlcnRpZXMgPSBhcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCAkcHJvcGVydGllcywgJHByb3ByZWxhdGlvbnMgKTsKICAgICAgdWFzb3J0KCAkcHJvcGVydGllcywgJ2NvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleScgKTsKICAgIH0KCiAgICBpZiggY291bnQoJHByb3BlcnRpZXMpID09IDAgKQogICAgICB7CglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSA9PSAxICkKCSAgewoJICAgIC8vIHRoaXMgdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IGdydW9wcy4uLgoJICAgIC8vIGhhbmRsZSB0aGlzIGxhdGVyIHRvZG8KCSAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoICRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdlcnJvcl9vbmVncm91cHJlcXVpcmVkJykpOwoJICAgIHJldHVybjsKCSAgfQogICAgICB9CgoKICAgIC8vIG5vdyB3ZSdyZSByZWFkeSB0byBwb3B1bGF0ZSB0aGUgdGVtcGxhdGUKICAgIC8vIGZpcnN0IHdlIHB1dCBpbiBzdHVmZiB0aGF0IGlzIHJlcXVpcmVkICh1c2VybmFtZSwgcGFzc3dvcmQsIGV0YywgZXRjKQogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKCiAgICAvLyBtYWtlIHN1cmUgdXNlcm5hbWUgaXMgaW4gdGhlcmUKICAgICR2YWwgPSAkdWluZm9bJ3VzZXJuYW1lJ107CiAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAkb25lcm93LT5jb2xvciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJyk7CiAgICAkb25lcm93LT5yZXF1aXJlZCA9IDE7CiAgICAkb25lcm93LT5oaWRkZW4gPSBteUNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdoaWRkZW5fdXNlcm5hbWUnLAoJCQkJCSAgIGltcGxvZGUoIjsiLGFycmF5KCd1c2VybmFtZScsMCwzMCwzKSkpOwogICAgJG9uZXJvdy0+cHJvbXB0ID0gJHRoaXMtPkxhbmcoJ3VzZXJuYW1lJyk7CiAgICAkb25lcm93LT5jb250cm9sID0kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3VzZXJuYW1lJywgJHZhbCwKCQkJCQkgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcpLAoJCQkJCSAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcpLAoJCQkJCSAgICAgJ2Rpc2FibGVkPSJkaXNhYmxlZCInKTsKICAgIGFycmF5X3B1c2goICRyb3dhcnJheSwgJG9uZXJvdyApOwoKICAgIC8vIGFuZCBwYXNzd29yZAogICAgJHZhbCA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9wYXNzd29yZCddICkgKQogICAgICAkdmFsID0gJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXTsKICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICRvbmVyb3ctPmNvbG9yID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywnYmx1ZScpOwogICAgJG9uZXJvdy0+bWFya2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsJyonKTsKICAgICRvbmVyb3ctPnJlcXVpcmVkID0gMTsKICAgICRvbmVyb3ctPmhpZGRlbiA9IG15Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ2hpZGRlbl9wYXNzd29yZCcsCgkJCQkJICAgaW1wbG9kZSgiOyIsYXJyYXkoJ3Bhc3N3b3JkJywwLDMwLDMpKSk7CiAgICAkb25lcm93LT5wcm9tcHQgPSAkdGhpcy0+TGFuZygncGFzc3dvcmQnKTsKICAgICRvbmVyb3ctPmNvbnRyb2wgPSR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKCRpZCwgJ2lucHV0X3Bhc3N3b3JkJywgJHZhbCwKCQkJCQkJICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcpLAoJCQkJCQkgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKTsKICAgICRvbmVyb3ctPmFkZHRleHQgPSR0aGlzLT5MYW5nKCdpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCcpOwogICAgYXJyYXlfcHVzaCggJHJvd2FycmF5LCAkb25lcm93ICk7CgogICAgLy8gYW5kIG1ha2UgaGltIHJlcGVhdCB0aGUgcGFzc3dvcmQKICAgICR2YWwgPSAnJzsKICAgIGlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSApICkKICAgICAgJHZhbCA9ICRwYXJhbXNbJ2lucHV0X3JlcGVhdHBhc3N3b3JkJ107CiAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAkb25lcm93LT5jb2xvciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJyk7CiAgICAkb25lcm93LT5yZXF1aXJlZCA9IDE7CiAgICAkb25lcm93LT5oaWRkZW4gPSBteUNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdoaWRkZW5fcmVwZWF0cGFzc3dvcmQnLAoJCQkJCSAgIGltcGxvZGUoIjsiLGFycmF5KCdyZXBlYXRwYXNzd29yZCcsMCwzMCwzKSkpOwogICAgJG9uZXJvdy0+cHJvbXB0ID0gJHRoaXMtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyk7CiAgICAkb25lcm93LT5jb250cm9sID0kdGhpcy0+Q3JlYXRlSW5wdXRQYXNzd29yZCgkaWQsICdpbnB1dF9yZXBlYXRwYXNzd29yZCcsICR2YWwsIDMwLCAzMCk7CiAgICAkb25lcm93LT5hZGR0ZXh0ID0kdGhpcy0+TGFuZygnaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnKTsKICAgIGFycmF5X3B1c2goICRyb3dhcnJheSwgJG9uZXJvdyApOwogICAgICAgIAogICAgZm9yZWFjaCggJHByb3BlcnRpZXMgYXMgJHByb3AgKQogICAgewogICAgICAvLyBkb24ndCBwcm9jZXNzIGhpZGRlbiBmaWVsZHMgaGVyZQogICAgICBpZiggJHByb3BbJ3JlcXVpcmVkJ10gPT0gMyApIGNvbnRpbnVlOwoKICAgICAgLy8gZ2V0IHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uCiAgICAgICRkZWZuID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbiggJHByb3BbJ25hbWUnXSApOwogICAgICAkdmFsID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoICRwcm9wWyduYW1lJ10sICR1aWQgKTsKICAgICAgJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOyAKCiAgICAgICRjb2xvciA9ICcnOwogICAgICBpZiggJHByb3BbJ3JlcXVpcmVkJ10gPT0gMiApICRjb2xvciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsJ2JsdWUnKTsKICAgICAgJG1hcmtlciA9ICcnOwogICAgICBpZiggJHByb3BbJ3JlcXVpcmVkJ10gPT0gMiApICRtYXJrZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfbWFya2VyJywnKicpOwogICAgICAkb25lcm93LT5yZXF1aXJlZCA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSAyKTsKICAgICAgJG9uZXJvdy0+Y29sb3IgICAgPSAkY29sb3I7CiAgICAgICRvbmVyb3ctPm1hcmtlciAgID0gJG1hcmtlcjsKICAgICAgJG9uZXJvdy0+aGlkZGVuID0gbXlDcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAnaGlkZGVuXycuJHByb3BbJ25hbWUnXSwKCQkJCQkgICAgIGltcGxvZGUoIjsiLGFycmF5KCRwcm9wWyduYW1lJ10sJGRlZm5bJ3R5cGUnXSwKCQkJCQkJCSAgICAgICAkZGVmblsnbGVuZ3RoJ10sJHByb3BbJ3JlcXVpcmVkJ10pKSk7CgogICAgICAkb25lcm93LT5wcm9tcHQgPSAkZGVmblsncHJvbXB0J107CiAgICAgIHN3aXRjaCggJGRlZm5bJ3R5cGUnXSApCgl7CgljYXNlIDA6IC8vIHRleHQKCSAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2lucHV0XycuJHByb3BbJ25hbWUnXSwKCQkJCQkJICAgICAkdmFsLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSApOwoJICBicmVhazsKCgljYXNlIDE6IC8vIGNoZWNrYm94CgkgICRvbmVyb3ctPmNvbnRyb2wgPSBteUNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0XycuJHByb3BbJ25hbWUnXSwgMSwgJHZhbCApOwoJICBicmVhazsKCgljYXNlIDI6IC8vIGVtYWlsCgkgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdpbnB1dF8nLiRwcm9wWyduYW1lJ10sCgkJCQkJCSAgICAgJHZhbCwgJGRlZm5bJ2xlbmd0aCddLCAkZGVmblsnbWF4bGVuZ3RoJ10gKTsKCSAgYnJlYWs7CgoJY2FzZSAzOiAvLyB0ZXh0YXJlYQoJICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCAkaWQsICR2YWwsICdpbnB1dF8nLiRwcm9wWyduYW1lJ10pOwoJICBicmVhazsKCgljYXNlIDQ6IC8vIGRyb3Bkb3duCgkgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigKCQkJCQkJCSRpZCwgCgkJCQkJCQknaW5wdXRfJy4kcHJvcFsnbmFtZSddLCAKCQkJCQkJCSR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10sIDEpLCAKCQkJCQkJCS0xLCAKCQkJCQkJCSR2YWwpOwoJICBicmVhazsKCX0KCiAgICAgIGFycmF5X3B1c2goICRyb3dhcnJheSwgJG9uZXJvdyApOwogICAgfQoKICAgIC8vIGZpbGwgaW4gdGhlIHZhcmlhYmxlcyBmb3IgdGhlIHRlbXBsYXRlCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+TGFuZygndXNlcl9zZXR0aW5ncycpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywKCQkJICAkdGhpcy0+ZmVDcmVhdGVGb3JtU3RhcnQoJGlkLCdkb191c2VyY2hhbmdlc2V0dGluZ3MnLCRyZXR1cm5pZCApKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsCgkJCSAgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3JldHVybnRvJ10gKSApCiAgICAgIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaGlkZGVuJywKCQkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnaW5wdXRfcmV0dXJudG8nLCRwYXJhbXNbJ3JldHVybnRvJ10pKTsKICAgICAgfQogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250cm9scycsICRyb3dhcnJheSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbnRyb2xjb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwoKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZmV1c2Vyc19jaGFuZ2VzZXR0aW5nc2Zvcm0nKTsKICB9CgoKICBmdW5jdGlvbiBfaGFuZGxlVXNlckluZm9WYWxpZGF0aW9uKCAkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQsICYkbWVzc2FnZSwgJG5lZWRwdyA9IHRydWUsIAoJCQkJICAgICAgJGRvZXhwaXJlID0gdHJ1ZSwgJGNoZWNrdXNlcm5hbWUgPSB0cnVlICkKICB7CiAgICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogICAgJHVzZXJuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF91c2VybmFtZSddKTsKICAgICRwYXNzd29yZCA9IHRyaW0oJHBhcmFtc1snaW5wdXRfcGFzc3dvcmQnXSk7CiAgICAkcmVwZWF0ICAgPSB0cmltKCRwYXJhbXNbJ2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pOwogICAgCiAgICBpZiggJHVzZXJuYW1lID09ICcnIAoJfHwgKCRuZWVkcHcgJiYgKCRwYXNzd29yZCA9PSAnJyB8fCAkcmVwZWF0ID09ICcnKSkgICkKICAgICAgewoJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZyAoImVycm9yX2ludmFsaWRwYXJhbXMiKTsKCXJldHVybiAtMTsKICAgICAgfQoKICAgIC8vIG1ha2Ugc3VyZSB0aGUgcGFzc3dvcmRzIG1hdGNoCiAgICBpZiggJHBhc3N3b3JkICE9ICRyZXBlYXQgKQogICAgICB7CgkkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9wYXNzd29yZG1pc21hdGNoIik7CglyZXR1cm4gLTE7CiAgICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIHVzZXJuYW1lIGZpdHMgdGhlIHJ1bGVzCiAgICBpZiggJGNoZWNrdXNlcm5hbWUgKQogICAgICB7CglpZiggISR0aGlzLT5Jc1ZhbGlkVXNlcm5hbWUoICR1c2VybmFtZSApICkKCSAgewoJICAgICRtZXNzYWdlID0gJHRoaXMtPkxhbmcoICJlcnJvcl9pbnZhbGlkdXNlcm5hbWUiICk7CgkgICAgcmV0dXJuIC0xOwoJICB9CiAgICAgIH0KCiAgICAvLyBtYWtlIHN1cmUgdGhlIHBhc3N3b3JkIGZpdHMgdGhlIHJ1bGVzCiAgICBpZiggJG5lZWRwdyAmJiAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkgKQogICAgICB7CgkkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCJlcnJvcl9pbnZhbGlkcGFzc3dvcmQiKTsKCXJldHVybiAtMTsKICAgICAgfQoKICAgIGlmKCAkZG9leHBpcmUgPT0gZmFsc2UgKQogICAgICB7CglyZXR1cm4gMTsKICAgICAgfQoKICAgIC8vIG1ha2Ugc3VyZSBhbiBleHBpcnkgZGF0ZSBpcyBzZXQKICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snZXhwaXJlc2RhdGVfTW9udGgnXSkgKQogICAgICB7CgkkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZScpOwogICAgICB9CgogICAgJGV4cGlyZXMgPSBta3RpbWUoJHBhcmFtc1snZXhwaXJlc2RhdGVfSG91ciddLCAKCQkkcGFyYW1zWydleHBpcmVzZGF0ZV9NaW51dGUnXSwgJHBhcmFtc1snZXhwaXJlc2RhdGVfU2Vjb25kJ10sCgkgICAgICAgICRwYXJhbXNbJ2V4cGlyZXNkYXRlX01vbnRoJ10sICRwYXJhbXNbJ2V4cGlyZXNkYXRlX0RheSddLCAKCSAgICAgICAgJHBhcmFtc1snZXhwaXJlc2RhdGVfWWVhciddKTsKICAgICRwYXJhbXNbJ2lucHV0X2V4cGlyZXNkYXRlJ10gPSAkZXhwaXJlczsKICAgIHJldHVybiAxOwogIH0KCgogIGZ1bmN0aW9uIG15TW9kdWxlUGF0aCgpCiAgewogICAkc3RyID0gIi9tb2R1bGVzLyIuJHRoaXMtPkdldE5hbWUoKS4iLyI7CiAgICByZXR1cm4gJHN0cjsKICB9CgogIGZ1bmN0aW9uIG15UmVkaXJlY3RUb1RhYiggJGlkLCAkdGFiLCAkcGFyYW1zID0gJycgKQogIHsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoICRwYXJhbXMgKSApCiAgICAgIHsKCSRwYXJtcyA9ICRwYXJhbXM7CiAgICAgIH0KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhY3RpdmVfdGFiJywgJHRhYik7CiAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJtcywgdHJ1ZSApOwogIH0KCiAgZnVuY3Rpb24gbXlSZWRpcmVjdCggJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsICRwYXJhbXMgPSAnJyApCiAgewogICAgJHRoaXMtPlJlZGlyZWN0KCAkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgJHBhcmFtcyApOwogIH0KCiAgZnVuY3Rpb24gZmVDcmVhdGVGb3JtU3RhcnQoICRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkaW5saW5lPXRydWUsICRtZXRob2Q9J3Bvc3QnLCAkZW5jdHlwZT0nJywgJGlkc3VmZml4PScnICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJGFjdGlvbiwkcmV0dXJuaWQsJG1ldGhvZCwkZW5jdHlwZSwkaW5saW5lLCRpZHN1ZmZpeCk7CiAgfQoKICBmdW5jdGlvbiBHZXRIZWxwKCRsYW5nPSdlbl9VUycpCQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgCiAgewogICAgcmV0dXJuICdjYWxndXkxMDAwJzsKICB9CiAgCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQkKICB7CiAgICByZXR1cm4gJ2NhbGd1eTEwMDBAaG90bWFpbC5jb20nOwogIH0KICAKICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0KCiAgLyoqCiAgICogVGhpcyBpcyBhIGF3ZXNvbWUgdXRpbGl0eSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIHZpcnR1YWxseSBhbGwgaGVscGZ1bAogICAqIGRlYnVnIGluZm8uICBSZWxpZXMgb24gdGhlIHZhbHVlIG9mIHRoZSAkdmFyZGVidWcgb2YgdGhlIGNsYXNzLgogICAqCiAgICogQHBhcmFtIGFycmF5ICRkZWJ1Z2FycmF5IHNpbmdsZS0gb3IgbXVsdGlkaW1lbnRpb25hbCBhcnJheQogICAqIEBwYXJhbSBTdHJpbmcgJG1lc3NhZ2UgdGhhdCBoZWxwIGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBjYWxsCiAgICovCiAgZnVuY3Rpb24gX2RlYnVnYXJyYXkoJGRlYnVnYXJyYXksICRtZXNzYWdlPScnKQogIHsKICAgIGlmICgkdGhpcy0+ZGV2ZGVidWcgPT0gMSl7CiAgICAgIGVjaG8gIlxuXG48YnI+PGJyPi0tLS0tLS0tLS0tLS0gRGVidWcgaW5mbzogLS0tLS0tLS0tLS0tLS0tLTxicj5cbiI7CiAgICAgICRzdGFja3RyYWNlID0gZGVidWdfYmFja3RyYWNlKCk7CiAgICAgIGlmIChjb3VudCgkc3RhY2t0cmFjZSkgPiAxICYmICRzdGFja3RyYWNlWzFdWydmdW5jdGlvbiddICE9ICcnKXsKCWVjaG8gIkluc2lkZSAiIC4gJHN0YWNrdHJhY2VbMV1bJ2Z1bmN0aW9uJ10gLiAiPGJyPlxuIjsKCWVjaG8gIkNhbGxlZCBmcm9tICIKCSAgLiAkc3RhY2t0cmFjZVszXVsnZnVuY3Rpb24nXSAuICIsICIKCSAgLiAkc3RhY2t0cmFjZVsyXVsnZnVuY3Rpb24nXSAuICI8YnI+XG4iOwogICAgICB9CiAgICAgIGlmICgkbWVzc2FnZSAhPSAnJyl7CgllY2hvICRtZXNzYWdlIC4gIjxicj4iOwogICAgICB9CiAgICAgIGVjaG8gIlxuPHRhYmxlIGNlbGxwYWRkaW5nPTEwIGJvcmRlcj0wPlxuPHRyPlxuPHRkPiI7CiAgICAgIGZvcmVhY2goICRkZWJ1Z2FycmF5IGFzICRrZXkgPT4gJHZhbCApewoJLy8JCQkJZWNobyAiPGI+JGtleTwvYj48YnI+IjsKCWlmKGlzX2FycmF5KCR2YWwpKXsKCSAgZWNobyAiPC90ZD5cbjx0ZD4iOwoJICBlY2hvICI8Yj5BcnJheTwvYj48YnI+IjsKCSAgJHRoaXMtPl9kZWJ1Z3N1YmFycmF5KCR2YWwpOwoJfSBlbHNlIGlmIChpc19vYmplY3QoJHZhbCkpewoJICBlY2hvICI8L3RkPlxuPHRkPiI7CgkgIGVjaG8gIjxiPk9iamVjdDwvYj48YnI+IjsKCSAgJHRoaXMtPl9kZWJ1Z3N1YmFycmF5KGdldF9vYmplY3RfdmFycygkdmFsKSk7Cgl9IGVsc2UgewoJICBlY2hvICI8Yj5WZWN0b3I8L2I+PGJyPiI7CgkgIGVjaG8gIlx0PHNwYW4gc3R5bGU9XHBhZGRpbmctbGVmdDoyMHB4XCI+IgoJICAgIC4gJGtleSAuICI6ICIgLiAkdmFsIC4gIjwvc3Bhbj48YnI+XG4iOwoJfQogICAgICB9OwogICAgICBlY2hvICI8L3RkPlxuPC90cj5cbjwvdGFibGU+XG4iOwogICAgICBlY2hvICItLS0tLS0tLS0tLS0tIEVuZCBkZWJ1ZyBpbmZvIC0tLS0tLS0tLS0tLS0tLS08YnI+PGJyPlxuXG4iOwogICAgfQogIH0KCiAgLyoqCiAgICogVXRpbGl0eSBmdW5jdGlvbiwgdXNlZCBieSB0aGUgX2RlYnVnYXJyYXkgZnVuY3Rpb24KICAgKi8KICBmdW5jdGlvbiBfZGVidWdzdWJhcnJheSgkZGVidWdhcnJheSkKICB7CiAgICBmb3JlYWNoKCAkZGVidWdhcnJheSBhcyAka2V5ID0+ICR2YWwgKQogICAgICB7CglpZihpc19hcnJheSgkdmFsKSkKCSAgewoJICAgIGVjaG8gIlx0IiAuICRrZXkgLiAiOiAiIC4gcHJpbnRfcigkdmFsKSAuICI8YnI+XG4iOwoJICB9IAoJZWxzZSAKCSAgewoJICAgIGVjaG8gIlx0IiAuICRrZXkgLiAiOiAiIC4gJHZhbCAuICI8YnI+XG4iOwoJICB9CiAgICAgIH0KICB9CiAgCgogIC8vIG9sZCBmdW5jdGlvbiAobm90IHVzZWQ/KQogIC8vIHRvZG8sIHB1dCB0aGlzIGludG8gdGhlIFVzZXJNYW5pcHVsYXRvciBzdHVmZgogIGZ1bmN0aW9uIENyZWF0ZU5ld1VzZXIoJGlkKQogIHsKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgIGlmIChpc3NldCgkX1BPU1RbJGlkLiJ1c2VybmFtZSJdKSkgJG5ld3VzZXJuYW1lPXRyaW0oJF9QT1NUWyRpZC4idXNlcm5hbWUiXSk7IGVsc2UgJG5ld3VzZXJuYW1lPSIiOwogICAgaWYgKCRuZXd1c2VybmFtZT09IiIpIHJldHVybiAiVXNlcm5hbWUgbXVzdCBiZSBwcm92aWRlZCEiOwogICAgJHF1ZXJ5PSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyBXSEVSRSB1c2VybmFtZT0nIi4kbmV3dXNlcm5hbWUuIiciOwogICAgJHJlc3VsdD0kZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKICAgIGlmICgkcmVzdWx0ICYmICRyZXN1bHQtPlJlY29yZENvdW50KCkpIHJldHVybiAiVXNlcm5hbWUgYWxyZWFkeSBleGlzdHMhIjsKICAgIAogICAgJG5ld2VtYWlsPXRyaW0oJF9QT1NUWyRpZC4iZW1haWwiXSk7CiAgICAKICAgICRuZXdwYXNzd29yZD10cmltKCRfUE9TVFskaWQuInBhc3N3b3JkIl0pOwogICAgaWYgKCRuZXdwYXNzd29yZD09IiIpIHJldHVybiAiUGFzc3dvcmQgY2Fubm90IGJlIGJsYW5rISI7CiAgICAkbmV3cGFzc3dvcmQyPXRyaW0oJF9QT1NUWyRpZC4icGFzc3dvcmQyIl0pOwogICAgaWYgKCRuZXdwYXNzd29yZCE9JG5ld3Bhc3N3b3JkMikgcmV0dXJuICJQYXNzd29yZHMgZG8gbm90IG1hdGNoISI7CiAgICAkbmV3aWQ9JGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzX3NlcSIpOwogICAgJHF1ZXJ5PSJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnMgKGlkLHVzZXJuYW1lLHBhc3N3b3JkLGVtYWlsKSBWQUxVRVMgKD8sPyw/LD8pIjsKICAgICRwYXJhbXM9YXJyYXkoJG5ld2lkLCRuZXd1c2VybmFtZSxtZDUoJG5ld3Bhc3N3b3JkKSwkbmV3ZW1haWwpOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcmFtcyk7CiAgICAKICAgICRxPSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHMiOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcSk7CiAgICBpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSkgewogICAgICB3aGlsZSAoJHJvdz0kZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCWlmICgkX1BPU1RbJGlkLiJncm91cCIuJHJvd1siaWQiXV09PSJ5ZXMiKSB7CgkgIC8vQ3JlYXRlIGFuIGFzc29jaWF0aW9uCgkgICRxPSJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncyAodXNlcmlkLGdyb3VwaWQpIFZBTFVFUyAoPyw/KSI7CgkgICRwYXJhbXMyPWFycmF5KCRuZXdpZCwkcm93WyJpZCJdKTsKCSAgJGRicmVzdWx0Mj0kZGItPkV4ZWN1dGUoJHEsJHBhcmFtczIpOwoJfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gIiI7CiAgfQogIAoKICAvLyBvbGQgZnVuY3Rpb24gKG5vdCB1c2VkPykKICAvLyB0b2RvLCBwdXQgdGhpcyBpbnRvIHRoZSBVc2VyTWFuaXB1bGF0b3Igc3R1ZmYKICBmdW5jdGlvbiBDcmVhdGVOZXdHcm91cCgkaWQpCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgJG5ld2dyb3VwbmFtZT10cmltKCRfUE9TVFskaWQuImdyb3VwbmFtZSJdKTsKICAgIGlmICgkbmV3Z3JvdXBuYW1lPT0iIikgcmV0dXJuICJBIHVuaXF1ZSBncm91cCBuYW1lIG11c3QgYmUgcHJvdmlkZWQhIjsKICAgICRxdWVyeT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIFdIRVJFIGdyb3VwbmFtZT0nIi4kbmV3Z3JvdXBuYW1lLiInIjsKICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICBpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpKSByZXR1cm4gIkdyb3VwIG5hbWUgYWxyZWFkeSBleGlzdHMhIjsKICAgICRuZXdncm91cGRlc2M9dHJpbSgkX1BPU1RbJGlkLiJncm91cGRlc2MiXSk7CiAgICAkbmV3aWQ9JGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3Vwc19zZXEiKTsKICAgICRxdWVyeT0iSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyAoaWQsZ3JvdXBuYW1lLGdyb3VwZGVzYykgVkFMVUVTICg/LD8sPykiOwogICAgJHBhcmFtcz1hcnJheSgkbmV3aWQsJG5ld2dyb3VwbmFtZSwkbmV3Z3JvdXBkZXNjKTsKICAgICRkYnJlc3VsdD0kZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJhbXMpOwogICAgcmV0dXJuICIiOwogIH0KCgogIC8vIG9sZCBmdW5jdGlvbiAobm90IHVzZWQ/KQogIC8vIHRvZG8sIHB1dCB0aGlzIGludG8gdGhlIFVzZXJNYW5pcHVsYXRvciBzdHVmZgogIGZ1bmN0aW9uIENoYW5nZUdyb3VwKCRpZCkgCiAgewogICAgJGRiID0mICR0aGlzLT5HZXREYigpOwogICAgaWYgKGlzc2V0KCRfUE9TVFskaWQuImdyb3VwaWQiXSkpICRncm91cGlkPXRyaW0oJF9QT1NUWyRpZC4iZ3JvdXBpZCJdKTsgZWxzZSByZXR1cm4gIlVucmVjb3ZlcmFibGUgZXJyb3IiOwogICAgaWYgKGlzc2V0KCRfUE9TVFskaWQuImdyb3VwbmFtZSJdKSkgJGdyb3VwbmFtZT10cmltKCRfUE9TVFskaWQuImdyb3VwbmFtZSJdKTsgZWxzZSByZXR1cm4gIkEgdW5pcXVlIGdyb3VwIG5hbWUgbXVzdCBiZSBwcm92aWRlZCEiOwogICAgCiAgICAvL0NoZWNrIGZvciBleGlzdGluZyBncm91cG5hbWUKICAgICRxdWVyeT0iU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIFdIRVJFIGdyb3VwbmFtZT0nIi4kZ3JvdXBuYW1lLiInIjsKICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICBpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5SZWNvcmRDb3VudCgpKSB7CiAgICAgICRyb3c9JHJlc3VsdC0+RmV0Y2hSb3coKTsKICAgICAgaWYgKCRyb3dbImlkIl0hPSRncm91cGlkKSByZXR1cm4gIkdyb3VwIG5hbWUgYWxyZWFkeSBleGlzdHMhIjsKICAgICAgLy9FbHNlIHNhbWUgZ3JvdXAuLi4KICAgIH0KICAgIAogICAgJGdyb3VwZGVzYz10cmltKCRfUE9TVFskaWQuImdyb3VwZGVzYyJdKTsKICAgICRxdWVyeT0iVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19ncm91cHMgU0VUIGdyb3VwbmFtZT0/LGdyb3VwZGVzYz0/IFdIRVJFIGlkPT8iOwogICAgJHBhcmFtcz1hcnJheSgkZ3JvdXBuYW1lLCRncm91cGRlc2MsJGdyb3VwaWQpOwogICAgJGRicmVzdWx0PSRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcmFtcyk7CiAgfQoKICAvLyBzZW5kIGFuIGV2ZW50IHRoYXQgdGhpcyB1c2VyIGFjY291bnQgaGFzIGJlZW4gZXhwaXJlZAogIGZ1bmN0aW9uIE5vdGlmeUV4cGlyZWRVc2VyKCAkdXNlcmlkICkJCiAgewogICAgJHVzZXIgPSAkdGhpcy0+R2V0VXNlckluZm8oICR1c2VyaWQgKTsKICAgIGlmKCAkdXNlclswXSA9PSBGQUxTRSApCiAgICAgIHsKCS8vIHRoaXMgc2hvdWxkIGJlIGFuIGVycm9yCglyZXR1cm47CiAgICAgIH0KICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAkcGFybXNbJ2lkJ10gPSAkdXNlcmlkOwogICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJbMV1bJ3VzZXJuYW1lJ107CiAgICAkdGhpcy0+U2VuZEV2ZW50KCdPbkV4cGlyZVVzZXInLCRwYXJtcyk7CiAgfQoKICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAvLyAgQVBJIEZVTkNUSU9OUyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICBmdW5jdGlvbiBBZGRHcm91cCggJG5hbWUsICRkZXNjcmlwdGlvbiApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+QWRkR3JvdXAoICRuYW1lLCAkZGVzY3JpcHRpb24gKTsKICB9CgoKICBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJHByb3BuYW1lLCAkc29ydGtleSwgJHZhbCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+QWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICR2YWwgKTsKICB9CgoKICBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+QWRkUHJvcGVydHlEZWZuKCAkbmFtZSwgJHByb21wdCwgJHR5cGUsICRsZW5ndGgsICRtYXhsZW5ndGggKTsKICB9CgogCiAgZnVuY3Rpb24gQWRkU2VsZWN0T3B0aW9ucyggJG5hbWUsICRzZWxvcHRpb25zICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5BZGRTZWxlY3RPcHRpb25zKCAkbmFtZSwgJHNlbG9wdGlvbnMgKTsKICB9CgogCiAgZnVuY3Rpb24gQWRkVXNlciggJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkFkZFVzZXIoICRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzICk7CiAgfQoKCiAgZnVuY3Rpb24gQXNzaWduVXNlclRvR3JvdXAoICR1aWQsICRnaWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkFzc2lnblVzZXJUb0dyb3VwKCAkdWlkLCAkZ2lkICk7CiAgfQoKIAogIGZ1bmN0aW9uIENoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCRwYXNzd29yZCkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5DaGVja1Bhc3N3b3JkKCR1c2VybmFtZSwkcGFzc29yZCk7CiAgfQoKIAogIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Db3VudFRlbXBDb2RlUmVjb3JkcygpOwogIH0KCiAKICBmdW5jdGlvbiBDb3VudFVzZXJzSW5Hcm91cCggJGdpZCA9ICcnICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Db3VudFVzZXJzSW5Hcm91cCggJGdpZCApOwogIH0KCgogIC8qIHdoYXQncyB0aGlzPyAqLwogIGZ1bmN0aW9uIERlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncnBpZCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+RGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdycGlkICk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+RGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdycGlkLCAkcHJvcG5hbWUgKTsKICB9CgogIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbiggJG5hbWUgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVByb3BlcnR5RGVmbiggJG5hbWUgKTsKICB9CgoKICBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm5zKCkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5EZWxldGVQcm9wZXJ0eURlZm5zKCk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlU2VsZWN0T3B0aW9ucyggJG5hbWUgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVNlbGVjdE9wdGlvbnMoICRuYW1lICk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlVXNlckZ1bGwoICR1aWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVVzZXJGdWxsKCAkdWlkICk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5QnlOYW1lKCAkdGl0bGUgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVVzZXJQcm9wZXJ0eUJ5TmFtZSgkdGl0bGUpOwogIH0KCiAgLypXaGF0IGlzIHRoaXM/Ki8KICBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHkoJHRpdGxlLCRhbGw9ZmFsc2UpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsJGFsbCk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXMoKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygpOwogIH0KCiAgCiAgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCR1c2VyaWQpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKTsKICB9CgoKCiAgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJHVzZXJpZCwkYWxsPWZhbHNlKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCRhbGwpOwogIH0KCgogIGZ1bmN0aW9uIERlbGV0ZUdyb3VwRnVsbCggJGdpZCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+RGVsZXRlR3JvdXBGdWxsKCAkZ2lkICk7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlVXNlcigkaWQpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkRlbGV0ZVVzZXIoICRpZCApOwogIH0KCiAgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5FeHBpcmVVc2VycygpOwogIH0KCgogIGZ1bmN0aW9uIEV4cGlyZVRlbXBDb2RlcyggJGV4cGlyeWNvZGUgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkV4cGlyZVRlbXBDb2RlcyggJGV4cGlyeWNvZGUgKTsKICB9CgogIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiAgfQogIAoKICBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHNBcnJheSgkdXNlcmlkKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpOwogIH0KCiAgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5KCR0aXRsZSwkZGVmYXVsdHZhbHVlPWZhbHNlKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5HZXRVc2VyUHJvcGVydHkoICR0aXRsZSwgJGRlZmF1bHR2YWx1ZSApOwogIH0KCiAgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJHVzZXJpZCwgJGRlZmF1bHR2YWx1ZT1mYWxzZSkgCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJHVzZXJpZCwkZGVmYXVsdHZhbHVlKTsKICB9CgogIGZ1bmN0aW9uIEdldFVzZXJUZW1wQ29kZSggJHVpZCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0VXNlclRlbXBDb2RlKCAkdWlkICk7CiAgfSAgCgoKICBmdW5jdGlvbiBHZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCAkdGl0bGUgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoICR0aXRsZSApOwogIH0KCiAgZnVuY3Rpb24gR2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucyggJGdycGlkICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKTsKICB9CgogIGZ1bmN0aW9uIEdldEdyb3VwSW5mbyggJGdpZCApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0R3JvdXBJbmZvKCAkZ2lkICk7CiAgfQoKCiAgZnVuY3Rpb24gR2V0VXNlckluZm8oICR1aWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldFVzZXJJbmZvKCAkdWlkICk7CiAgfQogCiAgZnVuY3Rpb24gR2V0VXNlcnNJbkdyb3VwKCAkZ2lkID0gJycsICRyZWdleCA9ICcnLCAkbGltaXQgPSAnJywgJHNvcnQgPSAnJywKCQkJICAkcHJvcGVydHkgPSAnJywgJHByb3ByZWdleCA9ICcnKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldFVzZXJzSW5Hcm91cCggJGdpZCwgJHJlZ2V4LCAkbGltaXQsICRzb3J0LAoJCQkJCSAgICAgICRwcm9wZXJ0eSwgJHByb3ByZWdleCApOwogIH0KCiAgZnVuY3Rpb24gR3JvdXBFeGlzdHNCeUlEKCAkZ2lkICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Hcm91cEV4aXN0c0J5SUQoICRnaWQgKTsKICB9CgogIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlOYW1lKCAkbmFtZSApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R3JvdXBFeGlzdHNCeU5hbWUoICRuYW1lICk7CiAgfQoJCiAgCiAgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZucygpCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0UHJvcGVydHlEZWZucygpOwogIH0KCiAgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZuKCAkbmFtZSApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0UHJvcGVydHlEZWZuKCAkbmFtZSApOwogIH0KCiAgZnVuY3Rpb24gR2V0U2VsZWN0T3B0aW9ucyggJG5hbWUsICRkaW0gKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldFNlbGVjdE9wdGlvbnMoICRuYW1lLCAkZGltICk7CiAgfQoKICAKICBmdW5jdGlvbiBHZXRVc2VyTmFtZSgkdXNlcmlkKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5HZXRVc2VyTmFtZSgkdXNlcmlkKTsKICB9CgogIAogIGZ1bmN0aW9uIEdldFVzZXJJRCgkdXNlcm5hbWUpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogIH0KCgogIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ3JvdXBpZCkgCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBpZCApOwogIH0KCiAgZnVuY3Rpb24gR2V0R3JvdXBEZXNjKCRncm91cGlkKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldEdyb3VwRGVzYyggJGdyb3VwaWQgKTsKICB9CgoKICBmdW5jdGlvbiBHZXRHcm91cExpc3QoKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldEdyb3VwTGlzdCgpOwogIH0KCiAgCiAgZnVuY3Rpb24gR2V0R3JvdXBMaXN0RnVsbCgpCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+R2V0R3JvdXBMaXN0RnVsbCgpOwogIH0KCiAgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldEdyb3VwSUQoICRncm91cG5hbWUgKTsKICB9CgogIAogZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkdldE1lbWJlckdyb3VwcygkdXNlcmlkKTsKICB9CgogIAogIGZ1bmN0aW9uIElzQWNjb3VudEV4cGlyZWQoICR1aWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPklzQWNjb3VudEV4cGlyZWQoICR1aWQgKTsKICB9CgogIAogIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Jc1ZhbGlkUGFzc3dvcmQoICRwYXNzd29yZCApOwogIH0KCiAKICBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwsICRzbXRwdmFsaWRhdGUgPSBmYWxzZSwgJHVpZCA9IC0xICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Jc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwsICRzbXRwdmFsaWRhdGUsICR1aWQgKTsKICB9CgogIAogIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSggJHVzZXJuYW1lICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Jc1ZhbGlkVXNlcm5hbWUoICR1c2VybmFtZSApOwogIH0KCiAgCiAgZnVuY3Rpb24gTG9naW4oICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZ3JvdXBzID0gJycgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkxvZ2luKCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcyApOwogIH0KCgogIGZ1bmN0aW9uIExvZ2dlZEluTmFtZSgpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgJHN0ciA9ICR0aGlzLT51c2VybWFuaXAtPkxvZ2dlZEluTmFtZSgpOwogICAgcmV0dXJuICRzdHI7CiAgfQoKICAKICBmdW5jdGlvbiBMb2dvdXQoKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Mb2dvdXQoKTsKICB9CgogIAogIGZ1bmN0aW9uIExvZ291dFVzZXIoJHVpZCkgCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+TG9nb3V0VXNlcigkdWlkKTsKICB9CgogCiAgZnVuY3Rpb24gTG9nZ2VkSW5JZCgpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPkxvZ2dlZEluSWQoKTsKICB9CgogCiAgZnVuY3Rpb24gTG9nZ2VkSW4oKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5Mb2dnZWRJbigpOwogIH0KCiAKICBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPk1lbWJlck9mR3JvdXAoJHVzZXJpZCwkZ3JvdXBpZCk7CiAgfQoKICAKICBmdW5jdGlvbiBSZW1vdmVVc2VyVGVtcENvZGUoICR1aWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPlJlbW92ZVVzZXJUZW1wQ29kZSggJHVpZCApOwogIH0gIAoKICAKICBmdW5jdGlvbiBSZW1vdmVVc2VyRnJvbUdyb3VwKCAkdWlkLCAkZ2lkICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5SZW1vdmVVc2VyRnJvbUdyb3VwKCAkdWlkLCAkZ2lkICk7CiAgfQoKICAKICBmdW5jdGlvbiBTZXRVc2VyVGVtcENvZGUoICR1aWQsICRjb2RlICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5TZXRVc2VyVGVtcENvZGUoICR1aWQsICRjb2RlLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycpICk7CiAgfQoKICAKICBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm4oICRuYW1lLCAkbmV3bmFtZSwgJHByb21wdCwgJGxlbmd0aCwgJHR5cGUsICRtYXhsZW5ndGggKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPlNldFByb3BlcnR5RGVmbiggJG5hbWUsICRuZXduYW1lLCAkcHJvbXB0LCAkbGVuZ3RoLCAkdHlwZSwgJG1heGxlbmd0aCApOwogIH0KCiAgCiAgZnVuY3Rpb24gU2V0R3JvdXAoICRnaWQsICRuYW1lLCAkZGVzYyApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+U2V0R3JvdXAoICRnaWQsICRuYW1lLCAkZGVzYyApOwogIH0KCiAgCiAgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPlNldFVzZXJQYXNzd29yZCggJHVpZCwgJHBhc3N3b3JkICk7CiAgfQoKICAKICBmdW5jdGlvbiBTZXRVc2VyKCAkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgPSBmYWxzZSApCiAgewogICAgJHRoaXMtPl9sb2FkKCk7CiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcC0+U2V0VXNlciggJHVpZCwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzICk7CiAgfQoKICBmdW5jdGlvbiBTZXRVc2VyR3JvdXBzKCAkdWlkLCAkZ3JwaWRzICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5TZXRVc2VyR3JvdXBzKCAkdWlkLCAkZ3JwaWRzICk7CiAgfQoKICAKICBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydGllcyggJHVpZCwgJHByb3BzICkKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5TZXRVc2VyUHJvcGVydGllcyggJHVpZCwgJHByb3BzICk7CiAgfQoKICBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydHkoJHRpdGxlLCRkYXRhKSAKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIHJldHVybiAkdGhpcy0+dXNlcm1hbmlwLT5TZXRVc2VyUHJvcGVydHkoJHRpdGxlLCRkYXRhKTsKICB9CgogIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCRkYXRhLCR1c2VyaWQpIAogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCRkYXRhLCR1c2VyaWQpOwogIH0KCiAgZnVuY3Rpb24gVXNlckV4aXN0c0J5SUQoICR1aWQgKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgcmV0dXJuICR0aGlzLT51c2VybWFuaXAtPlVzZXJFeGlzdHNCeUlEKCAkdWlkICk7CiAgfQogCn0gLy8gY2xhc3MKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKCmZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHNfc3Vic3RyKCAkYXJyLCAkZXhwciApCnsKICAka2V5cyA9IGFycmF5X2tleXMoICRhcnIgKTsKICBmb3JlYWNoKCAka2V5cyBhcyAkayApCiAgewogICAgaWYoIHN0cnN0ciggJGssICRleHByICkgKSByZXR1cm4gdHJ1ZTsKICB9CiAgcmV0dXJuIGZhbHNlOwp9CgpmdW5jdGlvbiBhcnJheV9maW5kX2tleV9yZWdleHAoICRhcnIsICRleHByICkKewogICRrZXlzID0gYXJyYXlfa2V5cyggJGFyciApOwogIGZvcmVhY2goICRrZXlzIGFzICRrICkKICB7CiAgICBpZiggcHJlZ19tYXRjaCggJGV4cHIsICRrICkgKSByZXR1cm4gJGs7CiAgfQogIHJldHVybiBmYWxzZTsKfQoKCmZ1bmN0aW9uIGFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoICRhcnIxLCAkYXJyMiApCnsKICAkeHhyZXN1bHQgPSBhcnJheSgpOwogIC8vIGFkZCBpdGVtcyBjb21tb24gdG8gYXJyMSBhbmQgYXJyMiAKICAvLyBidXQgZmF2b3IgcmVxdWlyZWQgaXRlbXMKICBpZiggIWlzX2FycmF5KCAkYXJyMSApIHx8ICFpc19hcnJheSggJGFycjIgKSApCiAgICB7CiAgICAgIHJldHVybjsKICAgIH0KICBmb3JlYWNoKCAkYXJyMSBhcyAkYTEgKQogIHsKICAgIGZvcmVhY2goICRhcnIyIGFzICRhMiApCiAgICB7CiAgICAgIGlmKCAkYTFbJ25hbWUnXSA9PSAkYTJbJ25hbWUnXSApIAoJewoJICBpZiggJGExWydyZXF1aXJlZCddID09IDIgKSAKCSAgICB7CgkgICAgICBhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMSApOwoJICAgICAgYnJlYWs7CgkgICAgfQoJICBlbHNlIAoJICAgIHsKCSAgICAgIGFycmF5X3B1c2goICR4eHJlc3VsdCwgJGEyICk7CgkgICAgICBicmVhazsKCSAgICB9Cgl9ICAgIAogICAgfQogIH0KICAKICAvLyBhZGQgaXRlbXMgaW4gYXJyMSBub3QgaW4gcmVzdWx0CiAgZm9yZWFjaCggJGFycjEgYXMgJGExICkKICB7CiAgICAkZm91bmQgPSBmYWxzZTsKICAgIGZvcmVhY2goICR4eHJlc3VsdCBhcyAkcmVzICkKICAgIHsKICAgICAgaWYoICRhMVsnbmFtZSddID09ICRyZXNbJ25hbWUnXSApCgl7CgkgICRmb3VuZCA9IHRydWU7CgkgIGJyZWFrOwoJfQogICAgfQogICAgaWYoICEkZm91bmQgKQogICAgICB7CglhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMSApOwogICAgICB9CiAgfQogIAogIC8vIGFkZCBpdGVtcyBpbiBhcnIyIG5vdCBpbiByZXN1bHQKICBmb3JlYWNoKCAkYXJyMiBhcyAkYTIgKQogIHsKICAgICRmb3VuZCA9IGZhbHNlOwogICAgZm9yZWFjaCggJHh4cmVzdWx0IGFzICRyZXMgKQogICAgewogICAgICBpZiggJGEyWyduYW1lJ10gPT0gJHJlc1snbmFtZSddICkKCXsKCSAgJGZvdW5kID0gdHJ1ZTsKCSAgYnJlYWs7Cgl9CiAgICB9CiAgICBpZiggISRmb3VuZCApCiAgICAgIHsKCWFycmF5X3B1c2goICR4eHJlc3VsdCwgJGEyICk7CiAgICAgIH0KICB9CiAgcmV0dXJuICR4eHJlc3VsdDsKfQoKCmZ1bmN0aW9uIGNvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleSggJGUxLCAkZTIgKQp7CiAgaWYoICRlMVsnc29ydF9rZXknXSA8ICRlMlsnc29ydF9rZXknXSApCiAgICB7CiAgICAgIHJldHVybiAtMTsKICAgIH0KICBlbHNlIGlmKCAkZTFbJ3NvcnRfa2V5J10gPiAkZTJbJ3NvcnRfa2V5J10gKQogICAgewogICAgICByZXR1cm4gMTsKICAgIH0KICByZXR1cm4gMDsKfQoKCmZ1bmN0aW9uIGV4cGxvZGVfd2l0aF9rZXkoJHN0ciwgJGluZ2x1ZT0nPScsICRvdXRnbHVlPScmJykKewogICRyZXQgPSBhcnJheSgpOwogICRhMSA9IHNwbGl0KCRvdXRnbHVlLCRzdHIpOwogIGZvcmVhY2goICRhMSBhcyAkYTIgKQogIHsKICAgIGxpc3QoICRrLCAkdiApID0gc3BsaXQoICRpbmdsdWUsICRhMiApOwogICAgJHJldFsgJGsgXSA9ICR2OwogIH0KICByZXR1cm4gJHJldDsKfQoKCmZ1bmN0aW9uIGZpbmRfaW5kZXhfb2ZfdmFsdWUoICRkYXRhLCAkdmFsdWUsICRkZmx0ICkKewogICRpID0gMDsKICBmb3JlYWNoKCAkZGF0YSBhcyAkaz0+JHYgKQogIHsKICAgIGlmKCAkdiA9PSAkdmFsdWUgKQogICAgICB7CglyZXR1cm4gJGk7CiAgICAgIH0KICAgICRpKys7CiAgfQogIHJldHVybiAkZGZsdDsKfQoKCmZ1bmN0aW9uIGltcGxvZGVfd2l0aF9rZXkoJGFzc29jLCAkaW5nbHVlID0gJz0nLCAkb3V0Z2x1ZSA9ICcmJykKewogICAkcmV0dXJuID0gbnVsbDsKICAgZm9yZWFjaCAoJGFzc29jIGFzICR0ayA9PiAkdHYpICRyZXR1cm4gLj0gJG91dGdsdWUuJHRrLiRpbmdsdWUuJHR2OwogICByZXR1cm4gc3Vic3RyKCRyZXR1cm4sc3RybGVuKCRvdXRnbHVlKSk7Cn0KCgoKZnVuY3Rpb24gbXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG5hbWUsICR2YWx1ZT0nJywgJHNlbGVjdGVkdmFsdWU9JycsIAoJCQkgICAgICAgJGFkZHR0ZXh0PScnKQp7CiAgJHRleHQgPSAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSInLiRpZC4kbmFtZS4nIiB2YWx1ZT0iJy4kdmFsdWUuJyInOwogICRhcnIgPSBzcGxpdCgiLCIsJHNlbGVjdGVkdmFsdWUpOwogIGZvcmVhY2goICRhcnIgYXMgJGEgKQogIHsKICAgIGlmICgkYSA9PSAkdmFsdWUpCiAgICAgIHsKCSR0ZXh0IC49ICcgJyAuICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgIH0KICB9CiAgaWYgKCRhZGR0dGV4dCAhPSAnJykKICAgIHsKICAgICAgJHRleHQgLj0gJyAnLiRhZGR0dGV4dDsKICAgIH0KICAkdGV4dCAuPSAiIC8+XG4iOwogIHJldHVybiAkdGV4dDsKfQoKZnVuY3Rpb24gbXlDcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICRuYW1lLCAkdmFsdWU9JycsICRpbWFnZT0nJywgJGFkZHR0ZXh0PScnKQp7CiAgZ2xvYmFsICRnQ21zOwogICR0ZXh0ID0gJzxpbnB1dCBuYW1lPSInLiRpZC4kbmFtZS4nIiB2YWx1ZT0iJy4kdmFsdWUuJyIgdHlwZT0nOwogIGlmICgkaW1hZ2UgIT0gJycpCiAgICB7CiAgICAgICR0ZXh0IC49ICciaW1hZ2UiJzsKICAgICAgJGltZyA9ICRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4kaW1hZ2U7CiAgICAgICR0ZXh0IC49ICcgc3JjPSInLiRpbWcuJyInOwogICAgfQogIGVsc2UgCiAgICB7CiAgICAgICR0ZXh0IC49ICcic3VibWl0Iic7CiAgICB9CiAgaWYgKCRhZGR0dGV4dCAhPSAnJykKICAgIHsKICAgICAgJHRleHQgLj0gJyAnLiRhZGR0dGV4dDsKICAgIH0KICAkdGV4dCAuPSAnIC8+JzsKICByZXR1cm4gJHRleHQgLiAiXG4iOwp9CgoKZnVuY3Rpb24gbXlDcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAkbmFtZSwgJHZhbHVlPScnLCAkYWRkdGV4dD0nJywgJGRlbGltPScsJykKewogIGlmKCBpc19hcnJheSggJHZhbHVlICkgKQogICAgewogICAgICAkdmFsID0gaW1wbG9kZV93aXRoX2tleSggJHZhbHVlICk7CiAgICB9CiAgZWxzZQogICAgewogICAgICAkdmFsID0gJHZhbHVlOwogICAgfQogICR2YWwgPSBzdHJfcmVwbGFjZSgnIicsICcmcXVvdDsnLCAkdmFsKTsKICAkdGV4dCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInLiRpZC4kbmFtZS4nIiB2YWx1ZT0iJy4kdmFsLiciJzsKICBpZiAoJGFkZHRleHQgIT0gJycpCiAgICB7CiAgICAgICR0ZXh0IC49ICcgJy4kYWRkdGV4dDsKICAgIH0KICAkdGV4dCAuPSAiIC8+XG4iOwogIHJldHVybiAkdGV4dDsKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/icons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/icons/delete.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAOZ/AAE82AkNrcLT4rHS4gpU4iJr4Cs51gBF4gYjqk1Wyhle4R1m4hk0zQZF2QkMlglJ2wAAfAAAggAuqgAAci514gkOpgBD4mWK3A5R22OK35Wh0bXW4rDL4q/J4jh64QpGzBI6pzNtygtL28DA0x000Qcou6e23hVoxoqKyyBXvmGP0gAi1REjtl9fo3FxzszM6BBW4jF84kmN2JTA4T2G0sjZ4ktXzCZmwhVZ3hE3qQADiAATlAAVmDJnyEKD4RcclgBBthNErBtCvVl/21JcxFNb05a43rjW4gAAXwAzrAYfogkUtgAioAA4tgAAbAovqJ2/4j1T15aW0K6/4gNK38XV4rXT4gEhmiY0yWNjtz2G4pSy4cfH4U5XxBVk4h9q4sHB3CRw4hcuyUiM4kFy2U1z2leU4h8ops3c4lCQ4iM01zl70ExXzyVhy6Gh44iItRBR3SArsCkxtnZ23Rg9qwAMjzx/4ghP4IKy4gAdnQAt13ST3xMpvkWG4g1X3ezs7CH5BAEAAH8ALAAAAAAQABAAAAe6gH+Cg4SFhC9zBiQMDGJYLlyFbgZkazcpQSB0QnxShGoyJ0ASeXURExM5LIRRNE0STDs6EE5IVyWERTMhSTyzExBPfkuEbBscRio9KW0FXgcBhDYDAmh4Y1oxXwQW0YMJ1B1mfXYUC9zegglWVVBpPh4U2wcVhF1HNRcAAA0iGHf0CBHZYqLMCn4PEgYcJGfPlCF6GsDBoUABFQeEUMTRkOEAjAVhCnxw8KYQmCxnEKhU8qPFCEMwDQUCADs=]]></data>
	</file>
	<file>
	  <filename>/icons/edit.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAOZ/ANfq//r+/ur0/+Xy/9/1/9rs/9bu/nehxf/+/fX///H4/+32/+j0/+P3/+bz/+Hw/3+ny3mgxV2XzViTyXqhxVuXzePx//z9/3eew3CYv/j7//r9//3+///+/9zu//f7//j8/3GZv/T6//b6/9/u/93u/+3+//b7/+Dv/1qTyVeY0HGYv/r8/8jf84etz26Xv1eTyfP4/+v1/uX1+FuY0NHq+q/L5IWhwVCKwG6fyun5/+n6/8DL2dzj6VaRyVqAp+T4//z+//T5//L5+9zt/6Kyxc/b5ODy/+Dn63ifxD9nkUdoj+P//1KKv9/v/52ww/D6/3KawfP6/1ORylGSzGOc0N/w/9fi64ykvJWmvPT9//f+/+Xx/////uH0/42ryf7+//7//1qQw0N1pkx5pYuetleNwFiVzePt8luWz+v7/9PZ41qX0J650MPM29ni6vH3++Lv/97u//b4+VJwllZzlVWTytjr/+Lx/16Bp+31/4Sdt+b4/3adw////////yH5BAEAAH8ALAAAAAAQABAAAAfjgH95BxQUGIeHfRERBz9/fyt+fgiSlX5dkhCPIX5rWZVgF35FPH6af0lIdWWSHEEgfk9LRi6PUQg9c5IXGx8fcG9DOY8ZlWEXLBonIgpQCRPEfh0dQRvKIgsDFiYp0R28GiNSC1x4cWrQf8UcGyAfMTLaKHI66ZwX4QoCDhZOJQVAYDx64YeDED0M5Hko4KGBj0dmAqCRsc+ClYUAWhiw80jMFTpYEjx4UOKOly9KbKR51MSPmz1aSJAgAuDIjTYmpjzC4WfLDBM7+DQgQKCGASZUHpGpwlSC0woVztBgo2LMn0AAOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdUaGlzIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQgaW4nOwokbGFuZ1snZXJyb3JfY2FwdGNoYW1pc21hdGNoJ10gPSAnVGhlIHRleHQgZnJvbSB0aGUgaW1hZ2Ugd2FzIG5vdCBlbnRlcmVkIGNvcnJlY3RseSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJ10gPSAnQWxsb3cgdXNlcnMgdG8gbG9naW4gbW9yZSB0aGFuIG9uY2UnOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZVVzZXInXSA9ICcKPGgzPk9uRGVsZXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIGRlbGV0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPiAKJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVVc2VyJ10gPSAnCjxoMz5PbkNyZWF0ZVVzZXI8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBpcyBjcmVhdGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPiAKJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVHcm91cCddID0gJwo8aDM+T25DcmVhdGVHcm91cDxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBncm91cCBpcyBjcmVhdGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIFRoZSBncm91cCBkZXNjcmlwdGlvbjwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBncm91cCBpZDwvbGk+CjwvdWw+IAonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZUdyb3VwJ10gPSAnCjxoMz5PbkRlbGV0ZUdyb3VwPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGdyb3VwIGlzIGRlbGV0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBncm91cCBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGdyb3VwIGlkPC9saT4KPC91bD4gCic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICcKPGgzPk9uTG9naW48aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIGluPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+CjwvdWw+Cic7IAokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ291dCddID0gJwo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgbG9nZ2Vkb3V0IHVzZXI8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+CjwvdWw+Cic7IAokbGFuZ1snZXZlbnRfaGVscF9PbkV4cGlyZVVzZXInXSA9ICcKPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIHNlc3Npb24gZXhwaXJlczwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBleHBpcmVkIHVzZXI8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZCBvZiB0aGUgZXhwaXJlZCB1c2VyPC9saT4KPC91bD4KJzsgCiRsYW5nWydldmVudF9pbmZvX09uTG9naW4nXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBpbiB0byB0aGUgc3lzdGVtJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dvdXQnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQgb2YgdGhlIHN5c3RlbSc7CiRsYW5nWydldmVudF9pbmZvX09uRXhwaXJlVXNlciddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBzZXNzaW9uIGlzIGV4cGlyZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyB1c2VyIGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgYWNjb3VudCBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVHcm91cCddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBncm91cCBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVHcm91cCddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBncm91cCBpcyBkZWxldGVkJzsKJGxhbmdbJ2JhY2tlbmRfZ3JvdXAnXSA9ICdCYWNrZW5kIGdydW9wJzsKJGxhbmdbJ2luZm9fc3RhciddID0gJyogVGhlIGZvbGxvd2luZyBtYWNyb3MgY2FuIGJlIHVzZWQgaW4gdGhlc2UgZmllbGRzOiB7JHVzZXJuYW1lfSx7JGdyb3VwfS4gV2hlbiB1c2luZyB0aGUgeyRncm91cH0gbWFjcm8sIHRoZSBzeXN0ZW0gd2lsbCBzdWJzaXR1dGUgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IG1lbWJlciBncm91cCB0aGF0IHRoZSB1c2VyIGJlbG9uZ3MgdG8sIGFuZCB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcGFnZS4nOwokbGFuZ1snaW5mb19hZG1pbl9wYXNzd29yZCddID0gJ0VkaXQgdGhpcyBmaWVsZCB0byByZXNldCB0aGUgdXNlcnMgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19hZG1pbl9yZXBlYXRwYXNzd29yZCddID0gJ0VkaXQgdGhpcyBmaWVsZCB0byByZXNldCB0aGUgdXNlcnMgcGFzc3dvcmQnOwokbGFuZ1snZXJyb3JfdXNlcm5hbWVfZXhpc3RzJ10gPSAnQSB1c2VyIHdpdGggdGhhdCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydub2NzdnJlc3VsdHMnXSA9ICdObyByZXN1bHRzIHJldHVybmVkIGZyb20gY3N2IGV4cG9ydCc7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdMZW5ndGggb2YgdXNlcm5hbWUgZmllbGQnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnTGVuZ3RoIG9mIHBhc3N3b3JkIGZpZWxkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnXSA9ICdNaW4vTWF4IHBhc3N3b3JkIGxlbmd0aHMgYXJlIGludmFsaWQnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lbGVuZ3RocyddID0gJ01pbi9NYXggdXNlcm5hbWUgbGVuZ3RocyBhcmUgaW52YWxpZCc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ1dlIGNvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MgZm9yIHRoaXMgYWNjb3VudCc7CiRsYW5nWyd1c2VyX2FkZGVkJ10gPSAnVXNlciBBZGRlZCAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ1VzZXIgRGVsZXRlZCB1aWQ9JXMnOwokbGFuZ1sncHJvcGVydHlmaWx0ZXInXSA9ICdQcm9wZXJ0eSc7CiRsYW5nWyd2YWx1ZXJlZ2V4J10gPSAnVmFsdWUgKHJlZ3VsYXIgZXhwcmVzc2lvbiknOwokbGFuZ1snd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnXSA9ICdXYXJuaW5nOiBUaGVzZSBmaWVsZHMgYWZmZWN0IHRoZSBzaXplIG9mIGlucHV0IGZpZWxkcyBmb3IgZm9ybXMuICBEZWNyZWFzaW5nIHRoaXMgbnVtYmVyIG9uIGFuIGV4aXN0aW5nIHNpdGUgbWF5IG5vdCBiZSBhZHZpc2FibGUnOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ0NoYW5nZSBhZG1pbiBwcmVmZXJlbmNlcz8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0VtYWlsIGFkZHJlc3MgYWxyZWFkeSB1c2VkJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnQWxsb3cgZHVwbGljYXRlIGVtYWlscyc7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoYWxsb3cgbXVsdGlwbGUgdXNlcnMgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJ0FsbG93IGR1cGxpY2F0ZSAiZm9yZ290IHBhc3N3b3JkIiByZW1pbmRlcnM/JzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJyhhbGxvdyBhIHVzZXJzIHRvIHJlcXVlc3QgYSBwYXNzd29yZCByZXNldCwgZXZlbiBpZiB0aGV5IGhhdmVuXCd0IGFjdGVkIG9uIGEgcHJldmlvdXMgb25lKSc7CiRsYW5nWydwcm9tcHRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJ1VzZSBGcm9udC1lbmQgVXNlciBzcGVjaWZpYyBwZXJtaXNzaW9ucz8nOwokbGFuZ1snaW5mb19mZXVzZXJzX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gPSAnKE5vcm1hbGx5LCBGRVVTZXJzIHBlcm1pc3Npb25zIGFyZSB0aGUgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBBZG1pbiBBcmVhIHBlcm1pc3Npb25zIGxpa2UgQWRkIFVzZXIsIEFkZCBHcm91cCwgZXRjLiBJZiB5b3Ugc2VsZWN0IHRoaXMgb3B0aW9uLCB0aGVyZSB3aWxsIGJlIHNlcGFyYXRlIHBlcm1pc3Npb25zIGZvciBGRVVzZXJzLiknOwokbGFuZ1snZXJyb3JfbWlzc2luZ3VzZXJuYW1lJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgYSB1c2VybmFtZSc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhIHBhc3N3b3JkJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dvdXQnXSA9ICdGcm9udGVuZCBVc2VyIExvZ291dCc7CiRsYW5nWydmcm9udGVuZHVzZXJfbG9nZ2VkaW4nXSA9ICdGcm9udGVuZCBVc2VyIExvZ2luJzsKJGxhbmdbJ2VkaXRwcm9wX2luZm9tc2cnXSA9ICc8Zm9udCBjb2xvcj0icmVkIj48Yj5VU0UgQ0FVVElPTjwvYj4gd2hlbiBjaGFuZ2luZyBleGlzdGluZyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFzc2lnbmVkIHRvIGdyb3VwcywgeW91IG1heSBwb3RlbnRpYWxseSBjYXVzZSBkYW1hZ2UgYW5kIGJyZWFrIGFuIGV4aXN0aW5nIHNpdGUgPGk+KGVzcGVjaWFsbHkgaWYgeW91IHJlZHVjZSBmaWVsZCBsZW5ndGhzLCBldGMpPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgb24gd2luZG93cyc7CiRsYW5nWydtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJ10gPSAnRG8gbm90IGNyZWF0ZSBhIHByb3BlcnR5IGZvciB1c2VybmFtZSwgb3IgcGFzc3dvcmQgYXMgdGhlc2UgcHJvcGVydGllcyBhcmUgYnVpbHRpbiB0byB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUnOwokbGFuZ1sncHJvbXB0X2V4cG9ydGNzdiddID0gJ0V4cG9ydCBVc2VycyB0byBDU1YnOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRXhwb3J0JzsKJGxhbmdbJ2FkbWluJ10gPSAnQWRtaW4nOwokbGFuZ1snZWRpdHByb3AnXSA9ICdFZGl0IFByb3BlcnR5JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01heGltdW0gTGVuZ3RoJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ3NvcnRieSddID0gJ1NvcnQgQnknOwokbGFuZ1snc29ydCddID0gJ1NvcnRpbmcnOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVXNlcnMgaW4gdGhlIHNlbGVjdGVkIGdyb3VwKHMpJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0xpbWl0IHJlc3VsdHMgdG8nOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYW4gZW1haWwgZmllbGQgZm9yIHRoaXMgdXNlci4gIFlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBmb3IgRm9yZ290IFBhc3N3b3JkIGZvcm0nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9yIENoYW5nZSBTZXR0aW5ncyBmb3JtJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdG8ganVtcCB0byBhZnRlciBsb2dvdXQgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ0EgbnVtYmVyIG9mIHVzZXJzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHJlc2V0dGluZyBsb3N0IHBhc3N3b3Jkcy4gIEN1cnJlbnRseSB0aGlzIGNvdW50IGlzIGF0Oic7CiRsYW5nWydyZW1vdmUxd2VlayddID0gJ1JlbW92ZSBhbGwgZW50cmllcyBtb3JlIHRoYW4gYSB3ZWVrIG9sZCc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMgbW9yZSB0aGFuIGEgbW9udGggb2xkJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1JlbW92ZSBhbGwgZW50cmllcyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7IAokbGFuZ1snZXJyb3JfaW52YWxpZGNvZGUnXSA9ICdBbiBpbnZhbGlkIGNvZGUgaGFzIGJlZW4gZW50ZXJlZCwgcGxlYXNlIHRyeSBhZ2Fpbic7CiRsYW5nWydlcnJvcl90ZW1wY29kZW5vdGZvdW5kJ10gPSAnQSB0ZW1wb3JhcnkgY29kZSBmb3IgeW91ciB1c2VyIGlkIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgZGF0YWJhc2UnOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdmVyaWZ5dGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSB1c2VkIHRvIGRpc3BsYXkgdmVyaWZpY2F0aW9uIGZvcm0nOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfZW1haWx0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIHVzZWQgZm9yIGZvcmdvdHRlbiBwYXNzd29yZCBlbWFpbCc7IAokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ0VpdGhlciB5b3Vyc2VsZiBvciBzb21lb25lIGVsc2UgaGFzIGFscmVhZHkgdHJpZ2dlcmVkIGEgcGFzc3dvcmQgcmVzZXQgb3BlcmF0aW9uIGZvciB0aGlzIGFjY291bnQuICBDaGVjayB5b3VyIGVtYWlsLCB5b3UgbWF5IGhhdmUgZnVydGhlciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQgaW4geW91ciBpbmJveCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgZXJyb3InOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnWW91IGFyZSByZWNlaXZpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2Ugc29tZWJvZHkgdG9sZCBvdXIgc2l0ZSB0aGF0IHlvdSBoYWQgbG9zdCB5b3VyIHBhc3N3b3JkLiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93LiAgSWYgeW91IGRvblwndCBoYXZlIGEgY2x1ZSB3aGF0IHRoaXMgaXMsIHRoZW4geW91IGFyZSBzYWZlIHRvIGRlbGV0ZSB0aGlzIG1lc3NhZ2UsIGFuZCB3ZSB0aGFuayB5b3UgZm9yIHlvdXIgdGltZS4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ21lc3NhZ2VfY29kZSddID0gJ1RoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQgcmFuZG9tbHkgZ2VuZXJhdGVkIGluIG9yZGVyIHRvIHZlcmlmeSB0aGUgdXNlciBhY2NvdW50LiAgd2hlbiB5b3UgY2xpY2sgb24gdGhlIGxpbmsgYmVsb3cgeW91IHdpbGwgYmUgcHJlc2VudGVkIHdpdGggYSBmaWVsZCB0byBlbnRlciB0aGlzIGNvZGUuICBOb3JtYWxseSB0aGUgZmllbGQgaXMgcHJlLWNvbXBsZXRlZCBmb3IgeW91LCBidXQgaW5jYXNlIGl0IGlzblwndCB0aGUgY29kZSBpczonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdDbGlja2luZyBvbiB0aGUgZm9sbG93aW5nIGxpbmsgd2lsbCB0YWtlIHlvdSB0byB0aGUgd2Vic2l0ZSB3aGVyZSB5b3UgY2FuIGVudGVyIHRoZSBhYm92ZSBjb2RlLCBhbmQgcmVzZXQgeW91ciBwYXNzd29yZDonOwokbGFuZ1snbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCddID0gJ0xvc3QgUGFzc3dvcmQnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdDb3VsZCBub3QgZmluZCB0aGUgQ01TTWFpbGVyIG1vZHVsZSc7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICdBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvICVzIHdpdGggaW5zdHJ1Y3Rpb25zIGFzIHRvIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkLiAgVGhhbmsgeW91JzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnU28geW91IGZvcmdvdCBvciBsb3N0IHlvdXIgcGFzc3dvcmQuIFdlbGwsIHR5cGUgeW91ciB1c2VybmFtZSBpbiBoZXJlLCBhbmQgaWYgd2UgY2FuIGZpbmQgeW91IHdlIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IGl0JzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnRm9yZ290IFBhc3N3b3JkIFRlbXBhdGVzJzsKJGxhbmdbJ2Vycm9yX3Byb3Bub3Rmb3VuZCddID0gJ1Byb3BlcnR5ICVzIG5vdCBmb3VuZCc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnUHJvcGVydGllcyBmb3VuZCc7CiRsYW5nWydhZGRwcm9wJ10gPSAnQWRkIFByb3BlcnR5JzsKJGxhbmdbJ2Vycm9yX3JlcXVpcmVkZmllbGQnXSA9ICdBIHJlcXVpcmVkIGZpZWxkICglcykgd2FzIGVtcHR5JzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnRW50ZXIgYSBuZXcgcGFzc3dvcmQgaGVyZSB0byBjaGFuZ2UgeW91ciBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl9ub3Rsb2dnZWRpbiddID0gJ1lvdSBkbyBub3QgYXBwZWFyIHRvIGJlIGxvZ2dlZCBpbic7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1sndXNlcl9yZWdpc3RyYXRpb24nXSA9ICdSZWdpc3RyYXRpb24nOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdUaGlzIGFjY291bnQgaGFzIGV4cGlyZWQnOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ0ltcHJvcGVyIGVtYWlsIGFkZHJlc3MgZm9ybWF0dGluZyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ0ludmFsaWQgZXhwaXJ5IGRhdGUnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdwcm9wZXJ0eSddID0gJ0Vycm9yIHNldHRpbmcgcHJvcGVydHkgJXMgZm9yIHVzZXIgJHMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGdyb3VwaWQnXSA9ICdJbnZhbGlkIGdyb3VwIGlkICVzJzsKJGxhbmdbJ3NvcnRvcmRlciddID0gJ1NvcnQgb3JkZXInOwokbGFuZ1snaGlkZGVuZmllbGRtYXJrZXInXSA9ICdIaWRkZW4gZmllbGQgbWFya2VyJzsKJGxhbmdbJ2hpZGRlbmZpZWxkY29sb3InXSA9ICdIaWRkZW4gZmllbGQgY29sb3InOwokbGFuZ1snaGlkZGVuJ10gPSAnSGlkZGVuJzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZW5hbWUnXSA9ICdBIHByb3BlcnR5IHdpdGggdGhhdCBuYW1lIGlzIGFscmVhZHkgZGVmaW5lZCc7CiRsYW5nWydlcnJvcl9ub3Byb3BlcnRpZXMnXSA9ICdObyBwcm9wZXJ0aWVzIGRlZmluZWQnOwokbGFuZ1snZXJyb3Jfbm9yZWxhdGlvbnMnXSA9ICdObyBwcm9wZXJ0aWVzIHdlcmUgc2VsZWN0ZWQgZm9yIHRoaXMgZ3JvdXAnOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcm91cHMgZm91bmQnOwokbGFuZ1snZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCddID0gJ01lbWJlcnNoaXAgaW4gYXQgbGVhc3Qgb25lIGdyb3VwIGlzIHJlcXVpcmVkJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdSZXF1aXJlIG1lbWJlcnNoaXAgaW4gYXRsZWFzdCBvbmUgZ3JvdXAnOwokbGFuZ1snYmFjayddID0gJ0JhY2snOwokbGFuZ1snZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbSddID0gJyVzIGlzIGEgcmVxdWlyZWQgZmllbGQnOwokbGFuZ1sncmVxdWlyZWRmaWVsZG1hcmtlciddID0gJ01hcmsgcmVxdWlyZWQgZmllbGRzIHdpdGgnOwokbGFuZ1sncmVxdWlyZWRmaWVsZGNvbG9yJ10gPSAnSGlsaXRlIHJlcXVpcmVkIGZpZWxkcyBpbic7CiRsYW5nWyduZXh0J10gPSAnTmV4dCc7CiRsYW5nWydlcnJvcl9ncm91cGV4aXN0cyddID0gJ0EgR3JvdXAgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7CiRsYW5nWydvcHRpb25hbCddID0gJ09wdGlvbmFsJzsKJGxhbmdbJ29mZiddID0gJ09mZic7CiRsYW5nWydsZW5ndGgnXSA9ICdMZW5ndGgnOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4oY2hhcnMgaW4gdGhlIHRleHQgaW5wdXQpJzsKJGxhbmdbJ3NlbG9wdGlvbnMnXSA9ICdEcm9wZG93biBvcHRpb25zLCBzZXBhcmF0ZWQgYnkgbGluZSBicmVha3MnOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ3Byb21wdCddID0gJ1Byb21wdCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWydyZXF1aXJlZCddID0gJ1JlcXVpcmVkIEZpZWxkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOwokbGFuZ1snZW1haWwnXSA9ICdFbWFpbCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHRhcmVhJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnRHJvcGRvd24nOwokbGFuZ1snbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnXSA9ICdXZWxjb21lJzsKJGxhbmdbJ2xvZ291dCddID0gJ1NpZ24gb3V0JzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ0NoYW5nZSBNeSBTZXR0aW5ncyc7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0xvZ2luIGZhaWxlZCAtIEludmFsaWQgdXNlcm5hbWUgb3IgcGFzc3dvcmQ/JzsKJGxhbmdbJ2xvZ2luJ10gPSAnU2lnbiBpbic7CiRsYW5nWydwcm9tcHRfc2lnbmluX2J1dHRvbiddID0gJ1NpZ24gaW4gYnV0dG9uIGxhYmVsJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ1Bhc3N3b3JkJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0ZXInOwokbGFuZ1snZm9yZ290cHcnXSA9ICdGb3Jnb3QgWW91ciBQYXNzd29yZD8nOwokbGFuZ1snZGVmYXVsdHMnXSA9ICdEZWZhdWx0cyc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3VzZXJub3Rmb3VuZCddID0gJ1VzZXIgSUQgbm90IGZvdW5kJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdUaGF0IHVzZXJuYW1lICglcykgaXMgYWxyZWFkeSBpbiB1c2UnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1VzZSBTTVRQIHRvIHZhbGlkYXRlIGVtYWlsIGFkZHJlc3Nlcz8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnTWluaW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWF4aW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTWluaW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTWF4aW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnU2Vzc2lvbiBUaW1lb3V0IChzZWNvbmRzKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ0FsbG93IEVtYWlsIFJlZ2lzdHJhdGlvbic7CiRsYW5nWydwcm9tcHRfZGZsdGdyb3VwJ10gPSAnRGVmYXVsdCBHcm91cCBmb3IgbmV3IHVzZXJzJzsKJGxhbmdbJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJ10gPSAnQ2hhbmdlIFNldHRpbmdzIFRlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnXSA9ICdQYXNzd29yZHMgRG8gbm90IG1hdGNoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZSddID0gJ0ludmFsaWQgVXNlcm5hbWUnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkJ10gPSAnSW52YWxpZCBQYXNzd29yZCc7CiRsYW5nWydlZGl0dXNlciddID0gJ0VkaXQgVXNlcic7CiRsYW5nWyd2YWxpZCddID0gJ1ZhbGlkJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdHVzJzsKJGxhbmdbJ2Vycm9yX21lbWJlcmdyb3VwcyddID0gJ1RoaXMgdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IGdyb3Vwcyc7CiRsYW5nWydlcnJvcl9wcm9wZXJ0aWVzJ10gPSAnTm8gUHJvcGVydGllcyc7CiRsYW5nWyd2YWx1ZSddID0gJ1ZhbHVlJzsKJGxhbmdbJ2dyb3VwcyddID0gJ0dyb3Vwcyc7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnUHJvcGVydGllcyc7CiRsYW5nWydwcm9wbmFtZSddID0gJ1Byb3BlcnR5IE5hbWUnOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnUHJvcGVydHkgVmFsdWUnOwokbGFuZ1snYWRkJ10gPSAnQWRkJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2V4cGlyZXMnXSA9ICdFeHBpcmVzJzsKJGxhbmdbJ3NwZWNpZnlfZGF0ZSddID0gJ1NwZWNpZnkgRGF0ZSc7CiRsYW5nWycxMmhycyddID0gJzEyIEhvdXJzJzsKJGxhbmdbJzI0aHJzJ10gPSAnMjQgSG91cnMnOwokbGFuZ1snNDhocnMnXSA9ICc0OCBIb3Vycyc7CiRsYW5nWycxd2VlayddID0gJzEgV2Vlayc7CiRsYW5nWycyd2Vla3MnXSA9ICcyIFdlZWtzJzsKJGxhbmdbJzFtb250aCddID0gJzEgTW9udGgnOwokbGFuZ1snM21vbnRocyddID0gJzMgTW9udGhzJzsKJGxhbmdbJzZtb250aHMnXSA9ICc2IE1vbnRocyc7CiRsYW5nWycxeWVhciddID0gJzEgWWVhcic7CiRsYW5nWyduZXZlciddID0gJ05ldmVyJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsbWVzc2FnZSddID0gJ01vZHVsZSBpbnN0YWxsZWQgc3VjZXNzZnVsbHkuPGJyLz5CZSBzdXJlIHRvIHNldCB0aGUgIk1vZGlmeSBGcm9udEVuZFVzZXIgUHJvcGVydGllcyBwZXJtaXNzaW9uLiInOwokbGFuZ1snZW1haWwnXSA9ICdFbWFpbCBBZGRyZXNzJzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncmVwZWF0cGFzc3dvcmQnXSA9ICdBZ2Fpbic7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnR3JvdXAgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ0VkaXQgR3JvdXAnOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydkZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snY29uZmlybV9lZGl0Z3JvdXAnXSA9ICdBcmUgeW91IHN1cmUgdGhpcyBpcyB0aGUgcHJvcGVyIHNldHRpbmdzIGZvciB0aGlzIGdyb3VwP1xuVHVybmluZyBhIHByb3BlcnR5IG9mZiB3aWxsIG5vdCBkZWxldGUgYW55IGVudHJpZXMgaW4gdGhlIHByb3BlcnRpZXMgdGFibGUgZm9yIHRoaXMgZ3JvdXAvdXNlci4gIFRoZXkgd2lsbCBtZXJlbHkgYmUgdW5hdmFpbGFibGUuJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlZ3JvdXAnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZ3JvdXA/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3Byb3AnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29tcGxldGVseSBkZWxldGUgdGhpcyBwcm9wZXJ0eT9cbkRvaW5nIHNvIHdpbGwgYWxzbyBlcmFzZSBhbnkgdXNlciBlbnRyaWVzIGZvciB0aGlzIHByb3BlcnR5Lic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdJbnN1ZmZpY2llbnQgUGFyYW1ldGVycyc7CiRsYW5nWydpZCddID0gJ0lkJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZXJyb3JfY2FudGFkZGdvcnVwJ10gPSAnUHJvYmxlbSBhZGRpbmcgZ3JvdXAnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhcmFtcyddID0gJ0ludmFsaWQgUGFyYW1ldGVycyc7CiRsYW5nWydhcHBseWZpbHRlciddID0gJ0FwcGx5JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnVXNlcm5hbWUgUmVndWxhciBFeHByZXNzaW9uJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3JvdXAgTmFtZSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3InOwokbGFuZ1snYWRkZ3JvdXAnXSA9ICdBZGQgR3JvdXAnOwokbGFuZ1snYWRkdXNlciddID0gJ0FkZCBVc2VyJzsKJGxhbmdbJ2dyb3Vwc2ZvdW5kJ10gPSAnR3JvdXBzIEZvdW5kJzsKJGxhbmdbJ3VzZXJzZm91bmQnXSA9ICdVc2VycyBmb3VuZCB0aGF0IG1hdGNoIHRoZSBjcml0ZXJpYSc7CiRsYW5nWydncm91cCddID0gJ0dyb3VwJzsKJGxhbmdbJ3NlbGVjdGdyb3VwJ10gPSAnU2VsZWN0IEdyb3VwJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ1JlZ2lzdHJhdGlvbiBUZW1wbGF0ZSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdMb2dvdXQgVGVtcGxhdGUnOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICdMb2dpbiBUZW1wbGF0ZSc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ2dyb3VwcyddID0gJ0dyb3Vwcyc7CiRsYW5nWyd1c2VycyddID0gIlVzZXJzIjsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kIFVzZXIgTWFuYWdlbWVudCc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0FsbG93IHVzZXJzIHRvIGxvZyBpbiB0byB0aGUgZnJvbnRlbmQgb2YgeW91ciBzaXRlJzsKJGxhbmdbJ2RlZmF1bHRmcm9udHBhZ2UnXSA9ICJEZWZhdWx0IGZyb250IHBhZ2UiOwokbGFuZ1snbGFzdGFjY2Vzc2VkcGFnZSddID0gJ0xhc3QgYWNjZXNzZWQgcGFnZSc7CiRsYW5nWydvdGhlcnBhZ2UnXSA9ICdPdGhlciBwYWdlOiAnOwokbGFuZ1snY2FwdGNoYV90aXRsZSddID0gJ0VudGVyIHRoZSB0ZXh0IGZyb20gdGhlIGltYWdlJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9GCjx1bD4KPGxpPjAuMC4xIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgTlJQVCAoTm90IFJlYWR5IGZvciBQcmltZSBUaW1lKSByZWxlYXNlPC9saT4KPGxpPjAuMS4wIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgcmVsZWFzZTwvbGk+CjxsaT4wLjEuMSAtIE9jdG9iZXIsIDIwMDUgLSBGaXhlZCBpc3N1ZXMgd2l0aCBwcm9wZXJ0aWVzPC9saT4KPGxpPjAuMS4yIC0gT2N0b2JlciwgMjAwNSAtIEFkZGVkIGZvcmdvdHRlbiBwYXNzd29yZCBmdW5jdGlvbmFsaXR5PC9saT4KPGxpPjxwPjAuMS4zIC0gTm92ZW1iZXIsIDIwMDU8L3A+CiAgICA8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgcmVkaXJlY3QgcGFnZSBvbiBsb2dpbiwgbG9nb3V0LCBmb3Jnb3QgcGFzc3dvcmQsIGFuZCBjaGFuZ2Ugc2V0dGluZ3MsIGFuZCBhZGRlZCB0aGUgcmV0dXJudG8gYW5kIGZvcm0gcGFyYW1ldGVycyB0byB0aGUgdXNlciBzaWRlIG9mIHRoaW5ncywgYWxzbyBkaWQgYSBjb3VwbGUgbGYgbGl0dGxlIGNsZWFudXBzLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIHYwLjExIGFuZCBhYm92ZSBmb3IgY2VydGFpbi48L3A+PC9saT4KPGxpPjAuMS40IC0gTm92ZW1iZXIsIDIwMDUgLSBWZXJ5IG1pbm9yIGNoYW5nZSB3aXRoIHJlc3BlY3QgdG8gYSBmb3Jnb3R0ZW4gYW5kIG5vIGxvbmdlciBuZWVkZWQgZnVuY3Rpb24gY2FsbDwvbGk+CjxsaT48cD4wLjEuNSAtIE5vdmVtYmVyLCAyMDA1PC9wPgogICAgPHA+QW5vdGhlciB2ZXJ5IG1pbm9yIGNoYW5nZSwgYWRkZWQgc29tZSB0ZXh0IHRvIHRoZSBQb3N0SW5zdGFsbCBtZXNzYWdlLjwvcD48L2xpPgo8bGk+PHA+MC4xLjYgLSBKYW51YXJ5LCAyMDA2PHA+CiAgICA8cD5DaGFuZ2VzIHRvIHRoZSBwZXJtaXNzaW9uIG1vZGVsLCBhbmQgbWlub3IgYnVnIGZpeGVzIHRvIHRoZSBwcmVmZXJlbmNlcy4gIEFsc28gc29tZSBwaHA1IGZpeGVzIGJ1dCBJIGFtIHN1cmUgdGhhdCB0aGVyZSBhcmUgbW9yZSBvdXQgdGhlcmUuPC9wPjwvbGk+CjxsaT48cD4wLjEuNyAtIEphbnVhcnksIDIwMDY8cD4KICAgIDxwPk1hbnkgdGhhbmtzIHRvIDxiPmthdG9uPC9iPiBmb3IgYWRkaW5nIHRoZSB0ZXh0YXJlYSBhbmQgZHJvcGRvd24gcHJvcGVydHkgdHlwZXMuPC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIHByb3BlcnR5IGFkZGluZyB0byBmaXggcHJvYmxlbXMgd2l0aCBzcGFjZXMgaW4gcHJvcGVydHkgbmFtZXMgKHdlIG5vIGxvbmdlciBsZXQgdGhhdCBoYXBwZW4pLjwvcD4KPC9saT4KPGxpPjxwPjEuMC4wIC0gRmVicnVhcnksIDIwMDY8cD4KICAgIDxwPkFkZGVkIGZpbHRlcmluZyBhbmQgcm93IGxpbWl0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbC4gVGhpcyB3aWxsIGhhdmUgYmlnIGJlbmVmaXRzIHRvIHRob3NlIHRoYXQgYXJlIHVzaW5nIHRoaXMgbW9kdWxlIGZvciBoaWdoIHRyYWZpYywgYW5kIGhpZ2ggdXNlciBzaXRlcy48L3A+CiAgICA8cD5BZGRlZCBzb3J0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbDwvcD4KICAgIDxwPkFkZGVkIG1heCBsZW5ndGggYWJpbGl0eSB0byB0ZXh0IGFuZCBlbWFpbCBmaWVsZHM8L3A+CiAgICA8cD5GaXhlZCBhIHNtYWxsIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBncm91cCBub3QgYmVpbmcgY2hlY2tlZCB3aGVuIGFkZGluZyBhIHVzZXI8L3A+CiAgICA8cD5TYXZlIGZpbHRlciBzZXR0aW5ncyBpbiBwcmVmZXJlbmNlcywgYW5kIHRoZSBhY3RpdmUgdGFiIHRvby48L3A+CiAgICA8cD5EZWxldGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gYSBwcm9wZXJ0eSBpcyBkZWxldGVkIDxlbT5Ob3RlPC9lbT4sIG5vdCB3aGVuIGl0IGlzIGRpc2FibGVkIGluIHRoZSBlZGl0IGdyb3VwIGRpYWxvZzwvcD4KICAgIDxwPkFkZCBjb25maXJtYXRpb24gbWVzc2FnZSBpbiBlZGl0IGdyb3Vwcy48L3A+CiAgICA8cD5BZGRlZCBhIGNvdXBsZSBtb3JlIGNvbmZpcm1hdGlvbiBtZXNzYWdlcy48L3A+CiAgICA8cD5BZGRlZCBDU1YgRXhwb3J0IG9wdGlvbjwvcD4KICAgIDxwPlRvZG8gLSBBZGQgcHJlZmVyZW5jZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZGxlbmd0aDwvcD4KPC9saT4KPGxpPjxwPjEuMC4xIC0gTWFyY2gsIDIwMDY8cD4KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZW1haWwgYWRkcmVzc2VzPC9wPgogICAgPHA+Rml4IHByb2JsZW0gd2hlcmUgZXhwaXJ5IGRhdGUgd2FzIGJlaW5nIG1vZGlmaWVkIHdoZW4gYWRtaW4gbW9kaWZpZWQgdXNlciBzZXR0aW5nczwvcD4KICAgIDxwPkFkZCBhIGNvbmZpcm1hdGlvbiBtZXNzYWdlIHRvIHRoZSBwcmVmZXJlbmNlcyBzdWJtaXQgYnV0dG9uPC9wPgogICAgPHA+Rml4ZWQgYSBtaW5vciBidWcgd2hlbiBjb3V0aW5nIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gYSBncm91cDwvcD4KICAgIDxwPkZpeGVzIHRvIHRoZSBzaXplIG9mIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZHMsIGFuZCBtYXhsZW5ndGg8L3A+CiAgICA8cD5BZGRlZCBhZHZhbmNlZCBmaWx0ZXJpbmcgb24gcHJvcGVydGllczwvcD4KICAgIDxwPkNoYW5nZXMgdG8gbGFiZWxpbmcgaW4gYWRkIG9yIGVkaXQgdXNlcjwvcD4KICAgIDxwPkZpeGVzIHRvIHByb2JsZW1zIHdpdGggaW5saW5lIGFuZCBub24gaW5saW5lIGZvcm1zLCB0aGUgcGFzc3dvcmQgaXMgbmV2ZXIgc2VudCBvbiB0aGUgZ2V0IGxpbmU8L3A+CiAgICA8cD5DaGFuZ2VkIHRvIHJlcXVpcmUgQ01TIDAuMTItYmV0YTIgYXQgYSBtaW5pbXVtIChmb3Igc2FmZXR5IHB1cnBvc2VzKTwvcD4KPC9saT4KPGxpPjxwPjEuMC4yIC0gTWFyY2gsIDIwMDY8cD4KICAgIDxwPk1vcmUgZmllbGQgbGVuZ3RoIGZpeGVzPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjMgLSBNYXJjaCwgMjAwNjxwPgogICAgPHA+RXhwb3J0IHRvIHNtYXJ0eSBhbGwgb2YgdGhlIHVzZXIgcHJvcGVydGllcyB3aGVuIHRoZXkgYXJlIGxvZ2dlZCBpbjwvcD4KPC9saT4KPGxpPjxwPjEuMC40IC0gTWF5LCAyMDA2PHA+CiAgICA8cD5GaXhlcyB0byB0aGUgZXhwb3J0IGNvZGU8L3A+CiAgICA8cD5Db2RlIGNsZWFudXAgKGFscGhhYmV0aXplIGZ1bmN0aW9ucyk8L3A+CiAgICA8cD5NaW5vciBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzIChyZWNvbW1lbmRlZCBieSBuaWxzNzMpIGZvciBkZWFsaW5nIHdpdGggdGhlIGNoYW5nZSBwYXNzd29yZCBzdHVmZi48L3A+CiAgICA8cD5SZW1vdmVkIHRoZSByZXF1aXJlbWVudCBmb3IgQ01TIDAuMTIsIGFuZCBwdXQgaXQgYmFjayB0byAwLjExLjI8L3A+CiAgICA8cD5BZGRlZCB0aGUgXCdzaWxlbnRcJyBmb3JtPC9wPgogICAgPHA+Q2xlYW5lZCB1cCBkYXRhYmFzZSBhY2Nlc3Mgc3R1ZmYgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKGhvcGVmdWxseSk8L3A+CiAgICA8cD5BZGRlZCBjb3B5cmlnaHQgaW5mbzwvcD4KICAgIDxwPkFkZGVkIG1hY3JvcyBmb3IgcmVkaXJlY3RvIHRvIGEgdXNlciBzcGVjaWZpYyBwYWdlIG9uIGxvZ2luIG9yIGxvZ291dDwvcD4KICAgIDxwPlR3ZWFrcyB0byB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgdGFiPC9wPgo8L2xpPgo8bGk+PHA+MS4wLjUgLSBNYXksIDIwMDY8L3A+CiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBleHBpcnkgZGF0ZXM8L3A+CiAgICA8cD5TdGFydCBzcGxpdHRpbmcgdGhlIGNvZGUgdXAgaW50byBzZXZlcmFsIGZpbGVzPC9wPgo8bGk+PHA+MS4wLjYgLSBNYXksIDIwMDY8L3A+CiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBlZGl0aW5nIGRyb3Bkb3duczwvcD4KPC9saT4KPGxpPjxwPjEuMS4wIC0gTWF5LCAyMDA2PC9wPgogICAgPHA+RXZlbnRzPC9wPgogICAgPHA+T3B0aW9uYWxseSBkaXNhbGxvdyByZXBlYXRlZCBsb2dpbnM8L3A+CiAgICA8cD5FeHBvcnQgdGhlIHVzZXIgaWQgdG8gc21hcnR5PC9wPgogICAgPHA+QWRkZWQgb3B0aW9uYWxseSBce1wkZ3JvdXBcfSBmb3IgdGhlIHBhZ2VzIHRvIGp1bXAgdG8gb24gbG9naW48L3A+CjwvbGk+CjxsaT48cD4xLjEuMSAtIFNlcHQsIDIwMDY8L3A+CiAgICA8cD5GaXhlZCBhIGJ1ZyB3aGVuIGEgdXNlciB3YXMgZWRpdGluZyBoaXMgc2V0dGluZ3Mgd2l0aCBcJ2FsbG93IGR1cGxpY2F0ZSBlbWFpbHNcJyB3YXMgb2ZmPC9wPgogICAgPHA+Q2hhbmdlZCB0aGUgZHJvcGRvd24gdGFibGUgdG8gMjU1IGNoYXJhY3RlcnM8L3A+CiAgICA8cD5NaW5vciBjbGVhbnVwczwvcD4KPC9saT4KPGxpPjxwPjEuMS4yIC0gRGVjLCAyMDA2PC9wPgogICAgPHA+Rml4ZXMgKGhvcGVmdWxsKSB0byB0aGUgYWRvZGIvYWRvZGItbGl0ZSBEQVRFVElNRSBpc3N1ZTwvcD4KICAgIDxwPkFkZCBjYXB0Y2hhIHN1cHBvcnQgdG8gdGhlIGxvZ2luIHNjcmVlbiAob3B0aW9uYWwpLCB0aGFua3MgZGl0dG1hbjwvcD4KICAgIDxwPkZpeGVzIHRvIGNhbmNlbCBoYW5kbGluZyBvbiB0aGUgbG9zdCBwYXNzd29yZCBhbmQgY2hhbmdlIHNldHRpbmdzIHNjcmVlbnM8L3A+CiAgICA8cD5GaXhlcyB0byB1c2VyIGV4cGlyeSAobW9yZSBEQlRpbWVzdGFtcCBpc3N1ZXMpLCB0aGFua3MgYWdhaW4gZGl0dG1hbjwvcD4KICAgIDxwPk9wdGlvbiB0byBhbGxvdyBGRVVzZXJzIHRvIGhhdmUgaXRzIG93biBzZXQgb2YgcGVybWlzc2lvbnMgYXNzaWRlIGZyb20gdGhlIGFkbWluIHBlcm1pc3Npb25zLiAgVGhhbmtzIF9TakdfPC9wPgogICAgPHA+T3B0aW9uIHRvIGFsbG93IGR1cGxpY2F0ZSBwYXNzd29yZCByZW1pbmRlciByZXF1ZXN0cyBhbmQgdG8gc3BlY2lmeSB0ZXh0IG9uIHRoZSBzaWduaW4gYnV0dG9uLiAgVGhhbmtzIF9TakdfPC9wPgogICAgPHA+R2VuZXJhbCBjbGVhbnVwIG9mIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbm90IGJlaW5nIHVzZWQgYW5kIG5vdGljZXMvd2FybmluZ3M8L3A+CiAgICA8cD5BZGRlZCB0aGUgb25seV9ncm91cHMgcGFyYW0gZm9yIGxvZ2luIGZvcm1zLiAgVGhhbmtzIHdpc2h5PC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIGxlbmd0aCBvZiB0aGUgZW1haWwgZmllbGQgaW4gdGhlIGNoYW5nZSBwYXNzd29yZCBmb3JtPC9wPgogICAgPHA+Rml4ZXMgdG8gdGhlIGVtYWlsIHZhbGlkYXRpb24gc3R1ZmY8L3A+CjwvbGk+CgpFT0Y7CiRsYW5nWydoZWxwJ10gPSA8PDxFT0YKPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc3MpPC9pPi4gIEl0IGFsbG93cyBjcmVhdGlvbiBvZiB1c2VyIGdyb3VwcywgYW5kIHVzZXIgYWNjb3VudHMgYW5kIGFsbG93cyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0LiAgaXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgQ3VzdG9tQ29udGVudCBtb2R1bGUgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCB0byBkaWZmZXJlbnQgdXNlcnMgb25jZSB0aGV5IGhhdmUgbG9nZ2VkIGluPC9wPgo8aDM+RmVhdHVyZXM8L2gzPgo8dWw+CjxsaT48cD5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvcD48L2xpPgo8bGk+PHA+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHM8L3A+PC9saT4KPGxpPjxwPkNhcGFibGUgb2YgaGFuZGxpbmcgaHVuZHJlZHMgb2YgdXNlcnM8L3A+PC9saT4KPGxpPjxwPkhhcyBhbiBleHRlbnNpdmUgQVBJIGZvciBhZGRpbmcgZnVuY3Rpb25hbGl0eTwvcD48L2xpPgo8L3VsPgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHVsPgo8bGk+PHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJiBnR3JvdXBzJnF1b3Q7IG1lbnUuPC9wPjwvbGk+CjxsaT4KPHA+U2Vjb25kbHksIHlvdSBzaG91bGQgZGVmaW5lIHByb3BlcnRpZXMuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIEVtYWlsIGFkZHJlc3MsIGV0Yy48L3A+CjxwPjxiPk5vdGU6PC9iPiBZb3UgZG8gbm90IG5lZWQgdG8gZGVmaW5lIHByb3BlcnRpZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgdGhlc2Ugd2lsbCBiZSBwcm92aWRlZCBmb3IgeW91PC9iPgo8L2xpPgo8bGk+PHA+TmV4dCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2V0aGVyIGl0IGlzIGFuIG9wdGlvbmFsLCByZXF1aXJlZCwgb3IgaGlkZGVuIGZpZWxkIDxpPihvZmYgaXMgYWxzbyB2YWxpZCk8L2k+PC9wPjwvbGk+CjxsaT48cD48Yj5Ob3RlOjwvYj4gQmVmb3JlIHByb2NlZWRpbmcsIHlvdSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIHByZWZlcmVuY2VzIGFyZSBzZXQgY29ycmVjdGx5LjwvcD48L2xpPgo8bGk+PHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrIFwnTmV4dFwnPC9wPgo8cD48ZW0+Tm90ZTogPC9lbT5UaGlzIGlzIGEgbGFib3VyIGludGVuc2l2ZSBhbmQgYm9yaW5nIHByb2Nlc3MsIGl0IGlzIGVhc2llciB0byBsZXQgdXNlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcywgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlc3Qgb25lIHVzZXI8L3A+PC9saT4KPGxpPjxwPkxhc3RseSwgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGZpZWxkcyB0byBiZSBwcmVzZW50ZWQgZm9yIHRoYXQgdXNlciwgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGZvcm0gYXNraW5nIGZvciBhbGwgb2YgdGhlIHJlcXVpcmVkIHVzZXIgaW5mb3JtYXRpb24uICBDb21wbGV0ZSB0aGlzIGZvcm0gdG8gY29tcGxldGUgdGhlIHVzZXIgYWRkaXRpb248L3A+PC9saT4KPGxpPjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSB7Y21zX21vZHVsZSBtb2R1bGU9RnJvbnRFbmRVc2Vyc30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZTwvcD48L2xpPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVwncwptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0iaHR0cDovL3RlY2hjb20uZHluZG5zLm9yZyI+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0ibmFtZSI8L2xpPgo8cD5Gb3JtczoKPHVsPgogPGxpPjxlbT5sb2dpbjwvZW0+IC0gRGlzcGxheSB0aGUgbG9naW4gZm9ybTwvbGk+CiA8bGk+PGVtPmxvZ291dDwvZW0+IC0gRGlzcGxheSB0aGUgbG9nb3V0IGZvcm08L2xpPgogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPgogPGxpPjxlbT5mb3Jnb3RwdzwvZW0+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm08L2xpPgo8bGk+PGVtPnNpbGVudDwvZW0+ID0gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+CjwvdWw+CjwvcD4KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG89InBhZ2UiPC9saT4KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPgo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3Vwcz0iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyI8L2xpPgo8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGZvcm1zLiAgQmFzaWNhbGx5IG9ubHkgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGlmIHRoZXkgYmVsb25nIHRvIHRoYXQgcGFydGljdWxhciBncm91cChzKS48L3A+CjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNhcHRjaGE9IjEiPC9saT4KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy4gVGhpcyB3aWxsIGVuYWJsZSBjYXB0Y2hhIG9uIHRoZSBmb3JtLiBUaGUgQ2FwdGNoYSBtb2R1bGUgbXVzdCBiZSBpbnN0YWxsZWQgZm9yIHRoaXMgcGFyYW1ldGVyIHRvIHdvcmsuPC9wPgo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPHA+SW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eSwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhlIENNU01haWxlciBtb2R1bGUgdG8gYmUgcHJldmlvdXNseSBpbnN0YWxsZWQ8L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9Im1haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tIj4mbHQ7Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+CkVPRjsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2JhY2tlbmRfZ3JvdXAnXSA9ICdCYWNrZW5kIGdydW9wJzsKJGxhbmdbJ2luZm9fc3RhciddID0gJyogTiZhYWN1dGU7c2xlZHVqJmlhY3V0ZTtjJmlhY3V0ZTsgbWFrcmEgbW9ob3UgYiZ5YWN1dGU7dCBwb3XFvml0YSB2IHTEm2NodG8gcG9sJmlhY3V0ZTtjaCA6IHskdXNlcm5hbWV9JzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdVcHJhdnRlIHRvdG8gcG9sZSBwcm8gcmVzZXRvdiZhYWN1dGU7biZpYWN1dGU7IGhlc2xhIHXFvml2YXRlbGUnOwokbGFuZ1snaW5mb19hZG1pbl9yZXBlYXRwYXNzd29yZCddID0gJ1VwcmF2dGUgdG90byBwb2xlIHBybyByZXNldG92JmFhY3V0ZTtuJmlhY3V0ZTsgaGVzbGEgdcW+aXZhdGVsZSc7CiRsYW5nWydlcnJvcl91c2VybmFtZV9leGlzdHMnXSA9ICdVxb5pdmF0ZWwgcyB0JmlhY3V0ZTttdG8gdcW+aXZhdGVsc2smeWFjdXRlO20gam0mZWFjdXRlO25lbSBqacW+IGV4aXN0dWplJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ0V4cG9ydCBjc3YgbmV2ciZhYWN1dGU7dGlsIMW+JmFhY3V0ZTtkbiZlYWN1dGU7IHYmeWFjdXRlO3NsZWRreSc7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdEJmVhY3V0ZTtsa2EgcG9sZSBwcm8gam0mZWFjdXRlO25vIHXFvml2YXRlbGUnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnRCZlYWN1dGU7bGthIHBvbGUgcHJvIGhlc2xvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnXSA9ICdNaW4vTWF4IGQmZWFjdXRlO2xrYSBoZXNsYSBqZSBuZXBsYXRuJmFhY3V0ZTsnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lbGVuZ3RocyddID0gJ01pbi9NYXggZCZlYWN1dGU7bGthIHXFvml2YXRlbHNrJmVhY3V0ZTtobyBqbSZlYWN1dGU7bmEgamUgbmVwbGF0biZhYWN1dGU7JzsKJGxhbmdbJ2Vycm9yX25vZW1haWxhZGRyZXNzJ10gPSAnRS1tYWlsb3YmYWFjdXRlOyBhZHJlc2EgcHJvIHRlbnRvICZ1YWN1dGU7xI1ldCBuZWJ5bGEgbmFsZXplbmEnOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ1XFvml2YXRlbCBwxZlpZGFsICVzID0gJXMnOwokbGFuZ1sndXNlcl9kZWxldGVkJ10gPSAnVcW+aXZhdGVsIHNtYXphbCB1aWQ9JXMnOwokbGFuZ1sncHJvcGVydHlmaWx0ZXInXSA9ICdWbGFzdG5vc3QnOwokbGFuZ1sndmFsdWVyZWdleCddID0gJ0hvZG5vdGEgKHJlZ3VsJmVhY3V0ZTtybiZpYWN1dGU7IHYmeWFjdXRlO3JheiknOwokbGFuZ1snd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnXSA9ICdWYXJvdiZhYWN1dGU7biZpYWN1dGU7OiBUYXRvIHBvbGUgb3ZsaXZuJmlhY3V0ZTsgdmVsaWtvc3QgdnN0dXBuJmlhY3V0ZTtjaCBwb2wmaWFjdXRlOyBmb3JtdWwmYWFjdXRlO8WZxa8uICBTbiZpYWN1dGU7xb5lbiZpYWN1dGU7IHRvaG90byDEjSZpYWN1dGU7c2xhIG5hIGV4aXN0dWomaWFjdXRlO2MmaWFjdXRlOyBzdHImYWFjdXRlO25jZSBuZW4maWFjdXRlOyBkb3BvcnXEjWVuby4nOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ1ptxJtuaXQgYWRtaW5pc3RyYcSNbiZpYWN1dGU7IHByZWZlcmVuY2U/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdFLW1haWxvdiZhYWN1dGU7IGFkcmVzYSBieWxhIGppxb4gcG91xb5pdGEnOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICdQb3ZvbGl0IGR1cGxpY2l0biZpYWN1dGU7IGVtYWlseS4nOwokbGFuZ1snaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnKHBvdm9saXQgdiZpYWN1dGU7Y2UgdcW+aXZhdGVsxa8gc2Ugc3Rlam5vdSBlbWFpbG92b3UgYWRyZXNvdSknOwokbGFuZ1snZXJyb3JfbWlzc2luZ3VzZXJuYW1lJ10gPSAnTmV2bG/FvmlsaSBqc3RlIHXFvml2YXRlbHNrJmVhY3V0ZTsgam0mZWFjdXRlO25vJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdwYXNzd29yZCddID0gJ05ldmxvxb5pbGkganN0ZSBoZXNsbyc7CiRsYW5nWydmcm9udGVuZHVzZXJfbG9nb3V0J10gPSAnRnJvbnRlbmQgVXNlciBPZGhsJmFhY3V0ZTsmc2Nhcm9uO2VuJmlhY3V0ZTsnOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ2dlZGluJ10gPSAnRnJvbnRlbmQgVXNlciBQxZlpaGwmYWFjdXRlOyZzY2Fyb247ZW4maWFjdXRlOyc7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPGZvbnQgY29sb3I9JnF1b3Q7cmVkJnF1b3Q7PjxiPlVQT1pPUk7Emk4mSWFjdXRlOzwvYj4gem3Em25hIHN0JmFhY3V0ZTt2YWomaWFjdXRlO2MmaWFjdXRlO2NoIHZsYXN0bm9zdCZpYWN1dGU7LCBrdGVyJmVhY3V0ZTsganNvdSBwxZlpxZlhemVueSBza3VwaW4mYWFjdXRlO20gbcWvxb5lIHpwxa9zb2JpdCBwcm9ibCZlYWN1dGU7bXkgPGk+KHDFmWVkZXYmc2Nhcm9uOyZpYWN1dGU7bSBwxZlpIHprciZhYWN1dGU7Y2VuJmlhY3V0ZTsgbsSba3RlciZ5YWN1dGU7Y2ggcG9sJmlhY3V0ZTspPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdUYXRvIGZ1bmtjZSBuZXByYWN1amUgcG9kIHdpbmRvd3MnOwokbGFuZ1snbXNnX2RvbnRjcmVhdGV1c2VybmFtZSddID0gJ05ldnl0diZhYWN1dGU7xZllanRlIHp2bCZhYWN1dGU7JnNjYXJvbjt0biZpYWN1dGU7IHZsYXN0bm9zdCBwcm8gdcW+aXZhdGVsc2smZWFjdXRlOyBqbSZlYWN1dGU7bm8sIHByb3Rvxb5lIHRvdG8gamUgdcW+IHNvdcSNJmFhY3V0ZTtzdCZpYWN1dGU7IG1vZHVsdSBGcm9udEVuZFVzZXJzJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRjc3YnXSA9ICdFeHBvcnRvdmF0IHXFvml2YXRlbGUgZG8gQ1NWJzsKJGxhbmdbJ2V4cG9ydGNzdiddID0gJ0V4cG9ydCc7CiRsYW5nWydhZG1pbiddID0gJ0FkbWluJzsKJGxhbmdbJ2VkaXRwcm9wJ10gPSAnRWRpdG92YXQgdmxhc3Rub3N0JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01heGltJmFhY3V0ZTtsbiZpYWN1dGU7IGQmZWFjdXRlO2xrYSc7CiRsYW5nWydjcmVhdGVkJ10gPSAnVnl0dm/FmWVubyc7CiRsYW5nWydzb3J0YnknXSA9ICdTZcWZYWRpdCBwb2RsZSc7CiRsYW5nWydzb3J0J10gPSAnxZhhemVuJmlhY3V0ZTsnOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVcW+aXZhdGVsJmVhY3V0ZTsgdmUgdnlicmFuJnlhY3V0ZTtjaC92eWJyYW4mZWFjdXRlOyBza3VwaW4mYWFjdXRlO2NoL3NrdXBpbsSbLic7CiRsYW5nWyd1c2VybGltaXQnXSA9ICdPbWV6aXQgdiZ5YWN1dGU7c2xlZGt5IGRvJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ05lbHplIG5haiZpYWN1dGU7dCBwb2xvxb5rdSBlbWFpbCBwcm8gdG9ob3RvIHXFvml2YXRlbGUuIE5lanNwJmlhY3V0ZTsmc2Nhcm9uO2UgYnVkZXRlIHBvdMWZZWJvdmF0IGtvbnRha3RvdmF0IGFkbWluaXN0ciZhYWN1dGU7dG9yYS4nOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9ybXVsJmFhY3V0ZTvFmWUgcHJvIHphcG9tZW51dCZlYWN1dGU7IGhlc2xvJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIGZvcm11bCZhYWN1dGU7xZllIHBybyB6bcSbbnUgbmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBzdHImYWFjdXRlO25reSBwbyBwxZlpaGwmYWFjdXRlOyZzY2Fyb247ZW4maWFjdXRlOyAqJzsKJGxhbmdbJ3Byb21wdF9sb2dvdXRfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBzdHImYWFjdXRlO25reSBwbyBvZGhsJmFhY3V0ZTsmc2Nhcm9uO2VuJmlhY3V0ZTsgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdQb8WZYWQmaWFjdXRlOyc7CiRsYW5nWydwcm9tcHRfbnVtcmVzZXRyZWNvcmQnXSA9ICdBIG51bWJlciBvZiB1c2VycyBhcmUgaW4gdGhlIG1pZGRsZSBvZiByZXNldHRpbmcgbG9zdCBwYXNzd29yZHMuICBDdXJyZW50bHkgdGhpcyBjb3VudCBpcyBhdDonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICdPZHN0cmFuaXQgdiZzY2Fyb247ZWNobnkgeiZhYWN1dGU7em5hbXkgc3RhciZzY2Fyb247JmlhY3V0ZTsgbmXFviBqZWRlbiB0JnlhY3V0ZTtkZW4nOwokbGFuZ1sncmVtb3ZlMW1vbnRoJ10gPSAnT2RzdHJhbml0IHYmc2Nhcm9uO2VjaG55IHomYWFjdXRlO3puYW15IHN0YXImc2Nhcm9uOyZpYWN1dGU7IG5lxb4gamVkZW4gbcSbcyZpYWN1dGU7Yyc7CiRsYW5nWydyZW1vdmVhbGwnXSA9ICdPZHN0cmFuaXQgdiZzY2Fyb247ZWNobnkgeiZhYWN1dGU7em5hbXknOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0pzdGUgc2kgamlzdD8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNvZGUnXSA9ICdaYWQmYWFjdXRlO24gJnNjYXJvbjtwYXRuJnlhY3V0ZTsgayZvYWN1dGU7ZCwgcHJvcyZpYWN1dGU7bSB6a3VzdGUgdG8gem5vdmEnOwokbGFuZ1snZXJyb3JfdGVtcGNvZGVub3Rmb3VuZCddID0gJ0RvxI1hc24meWFjdXRlOyBrJm9hY3V0ZTtkIHBybyB2YSZzY2Fyb247ZSB1xb5pdmF0ZWxzayZlYWN1dGU7IGptJmVhY3V0ZTtubyBuZWx6ZSBuYWomaWFjdXRlO3QgdiBkYXRhYiZhYWN1dGU7emknOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdmVyaWZ5dGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSBmb3JtdWwmYWFjdXRlO8WZZSBwcm8gdmVyaWZpa2FjaSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmEgZm9ybXVsJmFhY3V0ZTvFmWUgcHJvIHphcG9tZW51dCZlYWN1dGU7IGhlc2xvJzsKJGxhbmdbJ2Vycm9yX3Jlc2V0YWxyZWFkeXNlbnQnXSA9ICdWeSBuZWJvIG7Em2tkbyBqaW4meWFjdXRlOyBqacW+IHphxb4mYWFjdXRlO2RhbCBvIHJlc2V0b3YmYWFjdXRlO24maWFjdXRlOyBoZXNsYSBwcm8gdGVudG8gJnVhY3V0ZTvEjWV0LiBEYWwmc2Nhcm9uOyZpYWN1dGU7IGluc3RydWtjZSBuYWpkZXRlIHZlIHN2JmVhY3V0ZTsgZS1tYWlsb3YmZWFjdXRlOyBzY2hyJmFhY3V0ZTtuY2UuJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdDaHliYTogUHJvYmwmZWFjdXRlO20gcyBkYXRhYiZhYWN1dGU7eiZpYWN1dGU7JzsKJGxhbmdbJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCddID0gJ1R1dG8genByJmFhY3V0ZTt2dSBkb3N0JmFhY3V0ZTt2JmFhY3V0ZTt0ZSwgcHJvdG/FvmUgbsSba2RvIHphxb4mYWFjdXRlO2RhbCBvIG9ibm92ZW4maWFjdXRlOyB6YXBvbWVudXQmZWFjdXRlO2hvIGhlc2xhIGsgdmEmc2Nhcm9uO2VtdSAmdWFjdXRlO8SNdHUgbmEgbmEmc2Nhcm9uOyZpYWN1dGU7IHN0ciZhYWN1dGU7bmNlLiBQb2t1ZCBqZSB0byB0YWssIHBvc3R1cHVqdGUgcG9kbGUgbiZpYWN1dGU7xb5lIHV2ZWRlbiZ5YWN1dGU7Y2ggaW5zdHJ1a2MmaWFjdXRlOy4gUG9rdWQgbmV0dSZzY2Fyb247JmlhY3V0ZTt0ZSBvIGNvIGpkZSwgdGFrIHRlbnRvIGUtbWFpbCBpZ25vcnVqdGUuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnSyZvYWN1dGU7ZCc7CiRsYW5nWydtZXNzYWdlX2NvZGUnXSA9ICdOJmFhY3V0ZTtzbGVkdWomaWFjdXRlO2MmaWFjdXRlOyBrJm9hY3V0ZTtkIGJ5bCBuJmFhY3V0ZTtob2RuxJsgdnlnZW5lcm92JmFhY3V0ZTtuIHBybyB2ZXJpZmlrYWNpIHXFvml2YXRlbHNrJmVhY3V0ZTtobyAmdWFjdXRlO8SNdHUuIFBvIGtsZXBudXQmaWFjdXRlOyBuYSBuJmFhY3V0ZTtzbGVkdWomaWFjdXRlO2MmaWFjdXRlOyBvZGtheiBzZSBkb3N0YW5ldGUgbmEgc3RyJmFhY3V0ZTtua3Uga2RlIHphZGF0IHRlbnRvIGsmb2FjdXRlO2QuIFBvbGUgamUgc3RhbmRhcmRuxJsgamnFviBwxZllZHZ5cGxuxJtuby4gUG9rdWQgbmVuJmlhY3V0ZTssIGsmb2FjdXRlO2QgamUgemRlOic7CiRsYW5nWydwcm9tcHRfbGluayddID0gJ0tsZXBudXQmaWFjdXRlO20gbmEgbiZhYWN1dGU7c2xlZHVqJmlhY3V0ZTtjJmlhY3V0ZTsgb2RrYXogc2UgZG9zdGFuZXRlIG5hIHN0ciZhYWN1dGU7bmt1LCBrZGUgbcWvxb5lemUgemFkYXQgdiZ5YWN1dGU7JnNjYXJvbjtlIHV2ZWRlbiZ5YWN1dGU7IGsmb2FjdXRlO2QgYSBvYm5vdml0IHZhJnNjYXJvbjtlIGhlc2xvOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnWmFwb21lbnV0JmVhY3V0ZTsgaGVzbG8nOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdOZWx6ZSBuYWomaWFjdXRlO3QgbW9kdWwgQ01TTWFpbGVyJzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ05hIGFkcmVzdSAlcyBieWwgemFzbCZhYWN1dGU7biBlLW1haWwgcyBpbnN0cnVrY2VtaSwgamFrIG9ibm92aXQgdmEmc2Nhcm9uO2UgaGVzbG8uIETEm2t1amVtZSc7CiRsYW5nWydsb3N0cHdfbWVzc2FnZSddID0gJ1Bva3VkIGpzdGUgemFwb23Em2wgbmVibyB6dHJhdGlsIHN2JmVhY3V0ZTsgaGVzbG8sIHRhayBwcm9zJmlhY3V0ZTttIHZ5cGzFiHRlIHN2b2plIHXFvml2YXRlbHNrJmVhY3V0ZTsgam0mZWFjdXRlO25vIGEgZS1tYWlsZW0gZG9zdGFuZXRlIGluc3RydWtjZSBqYWsgcG9rcmHEjW92YXQgcyBvYm5vdmVuJmlhY3V0ZTttIHRvaG90byBoZXNsYSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ0ZvcmdvdCBQYXNzd29yZCBUZW1wYXRlcyc7CiRsYW5nWydlcnJvcl9wcm9wbm90Zm91bmQnXSA9ICdWbGFzdG5vc3QgJXMgbmVuYWxlemVuYSc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnVmxhc3Rub3N0aSBuYWxlemVueSc7CiRsYW5nWydhZGRwcm9wJ10gPSAnUMWZaWRhdCB2bGFzdG5vc3QnOwokbGFuZ1snZXJyb3JfcmVxdWlyZWRmaWVsZCddID0gJ1BvdmlubiZhYWN1dGU7IHZsYXN0bm9zdCAoJXMpIGJ5bGEgcHImYWFjdXRlO3pkbiZhYWN1dGU7JzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnWmFkZWp0ZSBzZW0gbm92JmVhY3V0ZTsgaGVzbG8nOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdQcmF2ZMSbcG9kb2JuxJsgbmVqc3RlIHDFmWlobCZhYWN1dGU7JnNjYXJvbjtlbic7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnTmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWyd1c2VyX3JlZ2lzdHJhdGlvbiddID0gJ1JlZ2lzdHJhY2UnOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdUZW50byAmdWFjdXRlO8SNZXQgdnlwciZzY2Fyb247ZWwnOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJyZTY2Fyb247cGF0biZ5YWN1dGU7IGZvcm0mYWFjdXRlO3QgZS1tYWlsb3YmZWFjdXRlOyBhZHJlc3knOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICdOZXBsYXRuJnlhY3V0ZTsgZGF0dW0gdnlwciZzY2Fyb247ZW4maWFjdXRlOyc7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2V0dGluZ3Byb3BlcnR5J10gPSAnQ2h5YmEgcMWZaSBuYXN0YXZlbiZpYWN1dGU7IHZsYXN0bm9zdGkgJXMgdcW+aXZhdGVsZSAkcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZ3JvdXBpZCddID0gJ05lcGxhdG4mZWFjdXRlOyBpZCBza3VwaW55ICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnSGlkZGVuIGZpZWxkIG1hcmtlcic7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnSGlkZGVuIGZpZWxkIGNvbG9yJzsKJGxhbmdbJ2hpZGRlbiddID0gJ0hpZGRlbic7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnVmxhc3Rub3N0IHMgdCZpYWN1dGU7bXRvIGptJmVhY3V0ZTtuZW0gamUgamnFviBkZWZpbm92JmFhY3V0ZTtuYSc7CiRsYW5nWydlcnJvcl9ub3Byb3BlcnRpZXMnXSA9ICdOZWpzb3UgZGVmaW5vdiZhYWN1dGU7bnkgxb4mYWFjdXRlO2RuJmVhY3V0ZTsgdmxhc3Rub3N0aSc7CiRsYW5nWydlcnJvcl9ub3JlbGF0aW9ucyddID0gJ1BybyB0dXRvIHNrdXBpbnUgbmVieWx5IHZ5YnImYWFjdXRlO255IHZsYXN0bm9zdGknOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdTa3VwaW55IG5hbGV6ZW55JzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdKZSB2ecW+YWRvdiZhYWN1dGU7bm8gcMWZacWZYXplbiZpYWN1dGU7IGFsZXNwb8WIIGRvIGplZG4mZWFjdXRlOyBza3VwaW55JzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdWecW+YWRvdmF0IHDFmWnFmWF6ZW4maWFjdXRlOyBhbGVzcG/FiCBkbyBqZWRuJmVhY3V0ZTsgc2t1cGlueSc7CiRsYW5nWydiYWNrJ10gPSAnWnDEm3QnOwokbGFuZ1snZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbSddID0gJyVzIGplIHBvdmlubiZhYWN1dGU7IHBvbG/FvmthJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRtYXJrZXInXSA9ICdNYXJrIHJlcXVpcmVkIGZpZWxkcyB3aXRoJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ0hpbGl0ZSByZXF1aXJlZCBmaWVsZHMgaW4nOwokbGFuZ1snbmV4dCddID0gJ0RhbCZzY2Fyb247JmlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfZ3JvdXBleGlzdHMnXSA9ICdTa3VwaW5hIHMgdCZpYWN1dGU7bXRvIGptJmVhY3V0ZTtuZW0gdcW+IGV4aXN0dWplJzsKJGxhbmdbJ3JlcXVpcmVkJ10gPSAnVnnFvmFkb3ZhbiZhYWN1dGU7IHBvbG/FvmthJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnVm9saXRlbG4mYWFjdXRlOyc7CiRsYW5nWydvZmYnXSA9ICdWeXBub3V0JzsKJGxhbmdbJ2xlbmd0aCddID0gJ0QmZWFjdXRlO2xrYSc7CiRsYW5nWydsZW5ndGhjb21tZW50J10gPSAnPGJyPih6bmFreSB2ZSB2c3R1cG4maWFjdXRlO20gcG9saSknOwokbGFuZ1snc2Vsb3B0aW9ucyddID0gJ1BvbG/Fvmt5IHJvemJhbG92YWMmaWFjdXRlO2hvIG1lbnUgb2RkxJtsZW4mZWFjdXRlOyBub3YmeWFjdXRlO21pIMWZJmFhY3V0ZTtka3knOwokbGFuZ1sneWVzJ10gPSAnQW5vJzsKJGxhbmdbJ3Byb21wdCddID0gJ1YmeWFjdXRlO3p2YSc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWxvdiZhYWN1dGU7IGFkcmVzYSc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHRhcmVhJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnUm96YmFsb3ZhYyZpYWN1dGU7IGptZW51JzsKJGxhbmdbJ21zZ19jdXJyZW50bHlsb2dnZWRpbmFzJ10gPSAnViZpYWN1dGU7dGVqdGUnOwokbGFuZ1snbG9nb3V0J10gPSAnT2RobCZhYWN1dGU7c2l0JzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ1VwcmF2aXQgbSZhYWN1dGU7IG5hc3RhdmVuJmlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfbG9naW5mYWlsZWQnXSA9ICdQxZlpaGwmYWFjdXRlOyZzY2Fyb247ZW4maWFjdXRlOyBzZWxoYWxvIC0gJnNjYXJvbjtwYXRuJmVhY3V0ZTsgdcW+aXZhdGVsc2smZWFjdXRlOyBqbSZlYWN1dGU7bm8gbmVibyBoZXNsbz8nOwokbGFuZ1snbG9naW4nXSA9ICdQxZlpaGwmYWFjdXRlO3NpdCc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdVxb5pdmF0ZWxzayZlYWN1dGU7IGptJmVhY3V0ZTtubyc7CiRsYW5nWydwcm9tcHRfcGFzc3dvcmQnXSA9ICdIZXNsbyc7CiRsYW5nWydyZWdpc3RlciddID0gJ1JlZ2lzdHJvdmF0JzsKJGxhbmdbJ2ZvcmdvdHB3J10gPSAnWmFwb21lbnV0JmVhY3V0ZTsgaGVzbG8/JzsKJGxhbmdbJ2RlZmF1bHRzJ10gPSAnViZ5YWN1dGU7Y2hveiZpYWN1dGU7IGhvZG5vdHknOwokbGFuZ1sndGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSc7CiRsYW5nWydlcnJvcl91c2Vybm90Zm91bmQnXSA9ICdVxb5pdmF0ZWxzayZlYWN1dGU7IElEIG5lbmFsZXplbm8nOwokbGFuZ1snZXJyb3JfdXNlcm5hbWV0YWtlbiddID0gJ1RvdG8gdcW+aXZhdGVsc2smZWFjdXRlOyBqbSZlYWN1dGU7bm8gKCVzKSBqacW+IG7Em2tkbyBwb3XFviZpYWN1dGU7diZhYWN1dGU7JzsKJGxhbmdbJ3Byb21wdF9zbXRwdmFsaWRhdGUnXSA9ICdQb3XFviZpYWN1dGU7dmF0IFNNVFAgcHJvIHZhbGlkYWNpIGUtbWFpbG92JnlhY3V0ZTtjaCBhZHJlcz8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnTWluaW0mYWFjdXRlO2xuJmlhY3V0ZTsgZCZlYWN1dGU7bGthIGhlc2xhJzsKJGxhbmdbJ3Byb21wdF9tYXhwd2xlbiddID0gJ01heGltJmFhY3V0ZTtsbiZpYWN1dGU7IGQmZWFjdXRlO2xrYSBoZXNsYSc7CiRsYW5nWydwcm9tcHRfbWludW5sZW4nXSA9ICdNaW5pbSZhYWN1dGU7bG4maWFjdXRlOyBkJmVhY3V0ZTtsa2EgdcW+aXZhdGVsc2smZWFjdXRlO2hvIGptJmVhY3V0ZTtuYSc7CiRsYW5nWydwcm9tcHRfbWF4dW5sZW4nXSA9ICdNYXhpbSZhYWN1dGU7bG4maWFjdXRlOyBkJmVhY3V0ZTtsa2EgdcW+aXZhdGVsc2smZWFjdXRlO2hvIGptJmVhY3V0ZTtuYSc7CiRsYW5nWydwcm9tcHRfc2Vzc2lvbnRpbWVvdXQnXSA9ICdTZXNzaW9uIFRpbWVvdXQgKHNlY29uZHMpJzsKJGxhbmdbJ3Byb21wdF9hbGxvd2VtYWlscmVnJ10gPSAnQWxsb3cgRW1haWwgUmVnaXN0cmF0aW9uJzsKJGxhbmdbJ3Byb21wdF9kZmx0Z3JvdXAnXSA9ICdWJnlhY3V0ZTtjaG96JmlhY3V0ZTsgc2t1cGluYSBwcm8gbm92JmVhY3V0ZTsgdcW+aXZhdGVsZSc7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hIHBybyB6bcSbbnUgbmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnSGVzbGEgbmVqc291IHN0ZWpuJmFhY3V0ZTsnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnQ2h5Ym4mZWFjdXRlOyB1xb5pdmF0ZWxzayZlYWN1dGU7IGptJmVhY3V0ZTtubyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICdDaHl5Ym4mZWFjdXRlOyBoZXNsbyc7CiRsYW5nWydlZGl0dXNlciddID0gJ0VkaXRvdmF0IHXFvml2YXRlbGUnOwokbGFuZ1sndmFsaWQnXSA9ICdWYWxpZCc7CiRsYW5nWyd1c2VybmFtZSddID0gJ1XFvml2YXRlbHNrJmVhY3V0ZTsgam0mZWFjdXRlO25vJzsKJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXR1cyc7CiRsYW5nWydlcnJvcl9tZW1iZXJncm91cHMnXSA9ICdUZW50byB1xb5pdmF0ZWwgbmVuJmlhY3V0ZTsgcMWZacWZYXplbiBkbyDFviZhYWN1dGU7ZG4meWFjdXRlO2NoIHNrdXBpbic7CiRsYW5nWydlcnJvcl9wcm9wZXJ0aWVzJ10gPSAnxb0mYWFjdXRlO2RuJmVhY3V0ZTsgdmxhc3Rub3N0aSc7CiRsYW5nWyd2YWx1ZSddID0gJ0hvZG5vdGEnOwokbGFuZ1snZ3JvdXBzJ10gPSAnU2t1cGlueSc7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnVmxhc3Rub3N0aSc7CiRsYW5nWydwcm9wbmFtZSddID0gJ04mYWFjdXRlO3pldiB2bGFzdG5vc3RpJzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ0hvZG5vdGEgdmxhc3Rub3N0aSc7CiRsYW5nWydhZGQnXSA9ICdQxZlpZGF0JzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0b3ZhdCc7CiRsYW5nWydleHBpcmVzJ10gPSAnVnlwciZzY2Fyb247ZW4maWFjdXRlOyc7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcGVjaWZpa3VqdGUgZGF0dW0nOwokbGFuZ1snMTJocnMnXSA9ICcxMiBob2Rpbic7CiRsYW5nWycyNGhycyddID0gJzI0IGhvZGluJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggaG9kaW4nOwokbGFuZ1snMXdlZWsnXSA9ICcxIHQmeWFjdXRlO2Rlbic7CiRsYW5nWycyd2Vla3MnXSA9ICcyIHQmeWFjdXRlO2RueSc7CiRsYW5nWycxbW9udGgnXSA9ICcxIG3Em3MmaWFjdXRlO2MnOwokbGFuZ1snM21vbnRocyddID0gJzMgbcSbcyZpYWN1dGU7Y2UnOwokbGFuZ1snNm1vbnRocyddID0gJzYgbcSbcyZpYWN1dGU7Y8WvJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSByb2snOwokbGFuZ1snbmV2ZXInXSA9ICdOaWtkeSc7CiRsYW5nWydwb3N0aW5zdGFsbG1lc3NhZ2UnXSA9ICdNb2R1bCAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBuYWluc3RhbG92JmFhY3V0ZTtuLjxici8+TmV6YXBvbWXFiHRlIG5hc3Rhdml0IG9wciZhYWN1dGU7dm7Em24maWFjdXRlOyAmcXVvdDtNb2RpZnkgRnJvbnRFbmRVc2VyIFByb3BlcnRpZXMmcXVvdDsnOwokbGFuZ1sncGFzc3dvcmQnXSA9ICdIZXNsbyc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ1pub3ZhJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdTdXBpbmEgcyB0JmlhY3V0ZTttdG8gbiZhYWN1dGU7enZlbSBqacW+IGV4aXN0dWplJzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ0VkaXRvdmF0IHNrdXBpbnUnOwokbGFuZ1snc3VibWl0J10gPSAnUG90dnJkaXQnOwokbGFuZ1snY2FuY2VsJ10gPSAnWnJ1JnNjYXJvbjtpdCc7CiRsYW5nWydkZWxldGUnXSA9ICdWeW1hemF0JzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnSnN0ZSBzaSBqaXN0IMW+ZSB0b3RvIGplIHNwciZhYWN1dGU7dm4mZWFjdXRlOyBuYXN0YXZlbiZpYWN1dGU7IHBybyB0dXRvIHNrdXBpbnU/XG4gVnlwbnV0JmlhY3V0ZTttIHZsYXN0bm9zdGkgc2UgbmVzbWHFvm91IMW+JmFhY3V0ZTtkbiZlYWN1dGU7ICZ1YWN1dGU7ZGFqZSB2ZSB2bGFzdG5vc3RlY2ggdG9ob3RvIHXFvml2YXRlbGUvc2t1cGlueS4gJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlZ3JvdXAnXSA9ICdKc3RlIHNpIGppc3Qgxb5lIGNoY2V0ZSBzbWF6YXQgdHV0byBza3VwaW51Pyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnT3ByYXZkdSBjaGNldGUga29tcGxldG7EmyBzbWF6YXQgdHV0byB2bGFzdG5vc3Q/XG5UJmlhY3V0ZTttIHNlIHZ5bWHFvm91IGkgdiZzY2Fyb247ZWNobnkgaG9kbm90eSB0JmVhY3V0ZTt0byB2bGFzdG5vc3RpIHUgdcW+aXZhdGVsxa8uJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ05lZG9zdGF0ZcSNbiZlYWN1dGU7IHBhcmFtZXRyeSc7CiRsYW5nWydpZCddID0gJ0lkJzsKJGxhbmdbJ25hbWUnXSA9ICdKbSZlYWN1dGU7bm8nOwokbGFuZ1snZXJyb3JfY2FudGFkZGdvcnVwJ10gPSAnUMWZaWQmYWFjdXRlO25vIHNrdXBpbnkgc2VsaGFsbyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnJlNjYXJvbjtwYXRuJmVhY3V0ZTsgcGFyYW1hdHJ5JzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnUG91xb4maWFjdXRlO3QnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHInOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ1JlZ3VsJmFhY3V0ZTtybiZpYWN1dGU7IHYmeWFjdXRlO3JheiBwcm8gdcW+aXZhdGVsc2smZWFjdXRlOyBqbSZlYWN1dGU7bm8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdQb3Bpcyc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdOJmFhY3V0ZTt6ZXYgc2t1cGlueSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdQxZkmaWFjdXRlO3N0dXAgb2RlcMWZZW4nOwokbGFuZ1snZXJyb3InXSA9ICdDaHliYSc7CiRsYW5nWydhZGRncm91cCddID0gJ1DFmWlkYXQgc2t1cGludSc7CiRsYW5nWydhZGR1c2VyJ10gPSAnUMWZaWRhdCB1xb5pdmF0ZWxlJzsKJGxhbmdbJ3VzZXJzZm91bmQnXSA9ICdVxb5pdmF0ZWwmZWFjdXRlOyBzcGzFiHVqJmlhY3V0ZTtjJmlhY3V0ZTsgdnlobGVkJmFhY3V0ZTt2YWMmaWFjdXRlOyBrcml0ZXJpYSc7CiRsYW5nWydncm91cCddID0gJ1NrdXBpbmEnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdWeWJyYXQgc2t1cGludSc7CiRsYW5nWydyZWdpc3RyYXRpb25fdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSBwcm8gcmVnaXN0cmFjaSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSBwcm8gb2RobCZhYWN1dGU7JnNjYXJvbjtlbiZpYWN1dGU7JzsKJGxhbmdbJ2xvZ2luX3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmEgcHJvIHDFmWlobCZhYWN1dGU7JnNjYXJvbjtlbiZpYWN1dGU7JzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUMWZZWR2b2xieSc7CiRsYW5nWyd1c2VycyddID0gJ1XFvml2YXRlbCZlYWN1dGU7JzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1NwciZhYWN1dGU7dmEgZnJvbnRlbmQgdcW+aXZhdGVsxa8nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdTcHJhdm92YXQgZnJvbnRlbmQgdcW+aXZhdGVsZSc7CiRsYW5nWydkZWZhdWx0ZnJvbnRwYWdlJ10gPSAnViZ5YWN1dGU7Y2hveiZpYWN1dGU7IHN0ciZhYWN1dGU7bmthJzsKJGxhbmdbJ2xhc3RhY2Nlc3NlZHBhZ2UnXSA9ICdTdHImYWFjdXRlO25rYSBzIHBvc2xlZG4maWFjdXRlO20gcMWZJmlhY3V0ZTtzdHVwZW0nOwokbGFuZ1snb3RoZXJwYWdlJ10gPSAnSmluJmFhY3V0ZTsgc3RyJmFhY3V0ZTtua2E6ICc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+MC4wLjEgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCBOUlBUIChOb3QgUmVhZHkgZm9yIFByaW1lIFRpbWUpIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4wIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjEgLSBPY3RvYmVyLCAyMDA1IC0gRml4ZWQgaXNzdWVzIHdpdGggcHJvcGVydGllczwvbGk+DQo8bGk+MC4xLjIgLSBPY3RvYmVyLCAyMDA1IC0gQWRkZWQgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHk8L2xpPg0KPGxpPjxwPjAuMS4zIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHJlZGlyZWN0IHBhZ2Ugb24gbG9naW4sIGxvZ291dCwgZm9yZ290IHBhc3N3b3JkLCBhbmQgY2hhbmdlIHNldHRpbmdzLCBhbmQgYWRkZWQgdGhlIHJldHVybnRvIGFuZCBmb3JtIHBhcmFtZXRlcnMgdG8gdGhlIHVzZXIgc2lkZSBvZiB0aGluZ3MsIGFsc28gZGlkIGEgY291cGxlIGxmIGxpdHRsZSBjbGVhbnVwcy4gIFRoaXMgdmVyc2lvbiByZXF1aXJlcyB2MC4xMSBhbmQgYWJvdmUgZm9yIGNlcnRhaW4uPC9wPjwvbGk+DQo8bGk+MC4xLjQgLSBOb3ZlbWJlciwgMjAwNSAtIFZlcnkgbWlub3IgY2hhbmdlIHdpdGggcmVzcGVjdCB0byBhIGZvcmdvdHRlbiBhbmQgbm8gbG9uZ2VyIG5lZWRlZCBmdW5jdGlvbiBjYWxsPC9saT4NCjxsaT48cD4wLjEuNSAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFub3RoZXIgdmVyeSBtaW5vciBjaGFuZ2UsIGFkZGVkIHNvbWUgdGV4dCB0byB0aGUgUG9zdEluc3RhbGwgbWVzc2FnZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNiAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5DaGFuZ2VzIHRvIHRoZSBwZXJtaXNzaW9uIG1vZGVsLCBhbmQgbWlub3IgYnVnIGZpeGVzIHRvIHRoZSBwcmVmZXJlbmNlcy4gIEFsc28gc29tZSBwaHA1IGZpeGVzIGJ1dCBJIGFtIHN1cmUgdGhhdCB0aGVyZSBhcmUgbW9yZSBvdXQgdGhlcmUuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjcgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+TWFueSB0aGFua3MgdG8gPGI+a2F0b248L2I+IGZvciBhZGRpbmcgdGhlIHRleHRhcmVhIGFuZCBkcm9wZG93biBwcm9wZXJ0eSB0eXBlcy48L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHByb3BlcnR5IGFkZGluZyB0byBmaXggcHJvYmxlbXMgd2l0aCBzcGFjZXMgaW4gcHJvcGVydHkgbmFtZXMgKHdlIG5vIGxvbmdlciBsZXQgdGhhdCBoYXBwZW4pLjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjAgLSBGZWJydWFyeSwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIGZpbHRlcmluZyBhbmQgcm93IGxpbWl0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbC4gVGhpcyB3aWxsIGhhdmUgYmlnIGJlbmVmaXRzIHRvIHRob3NlIHRoYXQgYXJlIHVzaW5nIHRoaXMgbW9kdWxlIGZvciBoaWdoIHRyYWZpYywgYW5kIGhpZ2ggdXNlciBzaXRlcy48L3A+DQogICAgPHA+QWRkZWQgc29ydGluZyB0byB0aGUgYWRtaW4gcGFuZWw8L3A+DQogICAgPHA+QWRkZWQgbWF4IGxlbmd0aCBhYmlsaXR5IHRvIHRleHQgYW5kIGVtYWlsIGZpZWxkczwvcD4NCiAgICA8cD5GaXhlZCBhIHNtYWxsIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBncm91cCBub3QgYmVpbmcgY2hlY2tlZCB3aGVuIGFkZGluZyBhIHVzZXI8L3A+DQogICAgPHA+U2F2ZSBmaWx0ZXIgc2V0dGluZ3MgaW4gcHJlZmVyZW5jZXMsIGFuZCB0aGUgYWN0aXZlIHRhYiB0b28uPC9wPg0KICAgIDxwPkRlbGV0ZSB1c2VyIHByb3BlcnRpZXMgd2hlbiBhIHByb3BlcnR5IGlzIGRlbGV0ZWQgPGVtPk5vdGU8L2VtPiwgbm90IHdoZW4gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIGVkaXQgZ3JvdXAgZGlhbG9nPC9wPg0KICAgIDxwPkFkZCBjb25maXJtYXRpb24gbWVzc2FnZSBpbiBlZGl0IGdyb3Vwcy48L3A+DQogICAgPHA+QWRkZWQgYSBjb3VwbGUgbW9yZSBjb25maXJtYXRpb24gbWVzc2FnZXMuPC9wPg0KICAgIDxwPkFkZGVkIENTViBFeHBvcnQgb3B0aW9uPC9wPg0KICAgIDxwPlRvZG8gLSBBZGQgcHJlZmVyZW5jZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZGxlbmd0aDwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjEgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZW1haWwgYWRkcmVzc2VzPC9wPg0KICAgIDxwPkZpeCBwcm9ibGVtIHdoZXJlIGV4cGlyeSBkYXRlIHdhcyBiZWluZyBtb2RpZmllZCB3aGVuIGFkbWluIG1vZGlmaWVkIHVzZXIgc2V0dGluZ3M8L3A+DQogICAgPHA+QWRkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIHN1Ym1pdCBidXR0b248L3A+DQogICAgPHA+Rml4ZWQgYSBtaW5vciBidWcgd2hlbiBjb3V0aW5nIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gYSBncm91cDwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgc2l6ZSBvZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRzLCBhbmQgbWF4bGVuZ3RoPC9wPg0KICAgIDxwPkFkZGVkIGFkdmFuY2VkIGZpbHRlcmluZyBvbiBwcm9wZXJ0aWVzPC9wPg0KICAgIDxwPkNoYW5nZXMgdG8gbGFiZWxpbmcgaW4gYWRkIG9yIGVkaXQgdXNlcjwvcD4NCiAgICA8cD5GaXhlcyB0byBwcm9ibGVtcyB3aXRoIGlubGluZSBhbmQgbm9uIGlubGluZSBmb3JtcywgdGhlIHBhc3N3b3JkIGlzIG5ldmVyIHNlbnQgb24gdGhlIGdldCBsaW5lPC9wPg0KICAgIDxwPkNoYW5nZWQgdG8gcmVxdWlyZSBDTVMgMC4xMi1iZXRhMiBhdCBhIG1pbmltdW0gKGZvciBzYWZldHkgcHVycG9zZXMpPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMiAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+TW9yZSBmaWVsZCBsZW5ndGggZml4ZXM8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4zIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5FeHBvcnQgdG8gc21hcnR5IGFsbCBvZiB0aGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gdGhleSBhcmUgbG9nZ2VkIGluPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuNCAtIE1heSwgMjAwNjxwPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBleHBvcnQgY29kZTwvcD4NCiAgICA8cD5Db2RlIGNsZWFudXAgKGFscGhhYmV0aXplIGZ1bmN0aW9ucyk8L3A+DQogICAgPHA+TWlub3IgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyAocmVjb21tZW5kZWQgYnkgbmlsczczKSBmb3IgZGVhbGluZyB3aXRoIHRoZSBjaGFuZ2UgcGFzc3dvcmQgc3R1ZmYuPC9wPg0KICAgIDxwPlJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IGZvciBDTVMgMC4xMiwgYW5kIHB1dCBpdCBiYWNrIHRvIDAuMTEuMjwvcD4NCiAgICA8cD5BZGRlZCB0aGUgXCYjMDM5O3NpbGVudFwmIzAzOTsgZm9ybTwvcD4NCiAgICA8cD5DbGVhbmVkIHVwIGRhdGFiYXNlIGFjY2VzcyBzdHVmZiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAoaG9wZWZ1bGx5KTwvcD4NCiAgICA8cD5BZGRlZCBjb3B5cmlnaHQgaW5mbzwvcD4NCiAgICA8cD5BZGRlZCBtYWNyb3MgZm9yIHJlZGlyZWN0byB0byBhIHVzZXIgc3BlY2lmaWMgcGFnZSBvbiBsb2dpbiBvciBsb2dvdXQ8L3A+DQogICAgPHA+VHdlYWtzIHRvIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyB0YWI8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC41IC0gTWF5LCAyMDA2PHA+DQogICAgPHA+Rml4ZWQgYSBwcm9ibGVtIHdpdGggZXhwaXJ5IGRhdGVzPC9wPg0KICAgIDxwPlN0YXJ0IHNwbGl0dGluZyB0aGUgY29kZSB1cCBpbnRvIHNldmVyYWwgZmlsZXM8L3A+DQo8L2xpPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhbGxvd3MgbWFuYWdlbWVudCBhbmQgYWRtaW5pc3RyYXRpb24gb2YgZnJvbnQgZW5kIHVzZXJzIDxpPih1c2VycyB3aG8gaGF2ZSBubyBhZG1pbiBhY2Nlc3NzKTwvaT4uICBJdCBhbGxvd3MgY3JlYXRpb24gb2YgdXNlciBncm91cHMsIGFuZCB1c2VyIGFjY291bnRzIGFuZCBhbGxvd3MgdXNlcnMgdG8gbG9naW4gYW5kIGxvZ291dC4gIGl0IGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIEN1c3RvbUNvbnRlbnQgbW9kdWxlIHRvIGRpc3BsYXkgZGlmZmVyZW50IGNvbnRlbnQgdG8gZGlmZmVyZW50IHVzZXJzIG9uY2UgdGhleSBoYXZlIGxvZ2dlZCBpbjwvcD4NCjxoMz5GZWF0dXJlczwvaDM+DQo8dWw+DQo8bGk+PHA+VXNlciBhY2NvdW50IGV4cGlyYXRpb24uICBZb3UgY2FuIGNyZWF0ZSB0ZW1wb3JhcnkgdXNlcnM8L3A+PC9saT4NCjxsaT48cD5Hcm91cCBQcm9wZXJ0aWVzLiAgWW91IGNhbiBhc2sgZm9yIGRpZmZlcmVudCBpbmZvcm1hdGlvbiBmcm9tIG1lbWJlcnMgb2YgZGlmZmVyZW50IGdyb3VwczwvcD48L2xpPg0KPGxpPjxwPkNhcGFibGUgb2YgaGFuZGxpbmcgaHVuZHJlZHMgb2YgdXNlcnM8L3A+PC9saT4NCjxsaT48cD5IYXMgYW4gZXh0ZW5zaXZlIEFQSSBmb3IgYWRkaW5nIGZ1bmN0aW9uYWxpdHk8L3A+PC9saT4NCjwvdWw+DQo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4NCjx1bD4NCjxsaT48cD5BZnRlciBpbnN0YWxsYXRpb24geW91IGNhbiBhY2Nlc3MgYWRtaW4gcGFuZWwgdG8gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHVuZGVyIHRoZSAmcXVvdDtVc2VycyAmYW1wOyBnR3JvdXBzJnF1b3Q7IG1lbnUuPC9wPjwvbGk+DQo8bGk+DQo8cD5TZWNvbmRseSwgeW91IHNob3VsZCBkZWZpbmUgcHJvcGVydGllcy4gIFByb3BlcnRpZXMgYXJlIGVzc2VudGlhbGx5IGZpZWxkIGRlZmluaXRpb25zLCBoZXJlIHlvdSBzcGVjaWZ5IHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIHlvdSB3YW50IHRvIGdhdGhlciwgYW5kIGxpbWl0cy4gaS5lOiAgTmFtZSwgQWdlLCBDaXR5LCBTdGF0ZSwgQ291bnRyeSwgRW1haWwgYWRkcmVzcywgZXRjLjwvcD4NCjxwPjxiPk5vdGU6PC9iPiBZb3UgZG8gbm90IG5lZWQgdG8gZGVmaW5lIHByb3BlcnRpZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgdGhlc2Ugd2lsbCBiZSBwcm92aWRlZCBmb3IgeW91PC9iPg0KPC9saT4NCjxsaT48cD5OZXh0IHlvdSBzaG91bGQgY3JlYXRlIG9uZSBvciBtb3JlIHVzZXIgZ3JvdXBzLiAgV2hlbiB5b3UgY3JlYXRlIGEgZ3JvdXAsIHlvdSBhcmUgYXNrZWQgZm9yIGEgZ3JvdXAgbmFtZSwgYSBkZXNjcmlwdGlvbiBhbmQgdG8gYXNzb2NpYXRlIHByb3BlcnRpZXMgd2l0aCB0aGF0IGdyb3VwLCBzcGVjaWZ5IHRoZSBwcm9wZXJ0aWVzIHNvcnQgb3JkZXIsIGFuZCB3ZXRoZXIgaXQgaXMgYW4gb3B0aW9uYWwsIHJlcXVpcmVkLCBvciBoaWRkZW4gZmllbGQgPGk+KG9mZiBpcyBhbHNvIHZhbGlkKTwvaT48L3A+PC9saT4NCjxsaT48cD48Yj5Ob3RlOjwvYj4gQmVmb3JlIHByb2NlZWRpbmcsIHlvdSBzaG91bGQgZW5zdXJlIHRoYXQgdGhlIHByZWZlcmVuY2VzIGFyZSBzZXQgY29ycmVjdGx5LjwvcD48L2xpPg0KPGxpPjxwPlRoaXJkbHkgeW91IHNob3VsZCBjcmVhdGUgc29tZSB1c2Vycy4gIEFkZGluZyB1c2VycyBpcyBhIHR3byBzdGVwIHByb2Nlc3MuICBXaGVuIGNyZWF0aW5nIGEgdXNlciB5b3UgYXJlIGFza2VkIGZvciB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCBhbmQgYW4gZXhwaXJ5IGRhdGUgZm9yIHRoYXQgdXNlci4gIFlvdSB0aGVuIG11c3Qgc2VsZWN0IHRoZSBncm91cHMgdGhhdCB0aGF0IHVzZXIgaXMgYSBtZW1iZXIgb2YsIGFuZCBjbGljayBcJiMwMzk7TmV4dFwmIzAzOTs8L3A+DQo8cD48ZW0+Tm90ZTogPC9lbT5UaGlzIGlzIGEgbGFib3VyIGludGVuc2l2ZSBhbmQgYm9yaW5nIHByb2Nlc3MsIGl0IGlzIGVhc2llciB0byBsZXQgdXNlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcywgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlc3Qgb25lIHVzZXI8L3A+PC9saT4NCjxsaT48cD5MYXN0bHksIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGRldGVybWluZWQgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBmaWVsZHMgdG8gYmUgcHJlc2VudGVkIGZvciB0aGF0IHVzZXIsIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggYSBmb3JtIGFza2luZyBmb3IgYWxsIG9mIHRoZSByZXF1aXJlZCB1c2VyIGluZm9ybWF0aW9uLiAgQ29tcGxldGUgdGhpcyBmb3JtIHRvIGNvbXBsZXRlIHRoZSB1c2VyIGFkZGl0aW9uPC9wPjwvbGk+DQo8bGk+PHA+WW91IGFyZSBub3cgcmVhZHkgdG8gYWRkIHRoZSBmcm9udCBlbmQgZnVuY3Rpb25hbGl0eSB0byB5b3VyIHNpdGUuICBUaGlzIGlzIGFzIHNpbXBsZSBhcyBhZGRpbmcgdGhlIHtjbXNfbW9kdWxlIG1vZHVsZT1Gcm9udEVuZFVzZXJzfSB0YWcgdG8geW91ciBwYWdlIG9yIHRlbXBsYXRlPC9wPjwvbGk+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCBjYWxndXlcJiMwMzk7cw0KbW9kdWxlIGhvbWVwYWdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL3RlY2hjb20uZHluZG5zLm9yZyZxdW90Oz50ZWNoY29tLmR5bmRucy5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8aDM+UGFyYW1ldGVyczwvaDM+DQo8dWw+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiBmb3JtPSZxdW90O25hbWUmcXVvdDs8L2xpPg0KPHA+Rm9ybXM6DQo8dWw+DQogPGxpPjxlbT5sb2dpbjwvZW0+IC0gRGlzcGxheSB0aGUgbG9naW4gZm9ybTwvbGk+DQogPGxpPjxlbT5sb2dvdXQ8L2VtPiAtIERpc3BsYXkgdGhlIGxvZ291dCBmb3JtPC9saT4NCiA8bGk+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT4gLSBEaXNwbGF5IHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybTwvbGk+DQogPGxpPjxlbT5mb3Jnb3RwdzwvZW0+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm08L2xpPg0KPGxpPjxlbT5zaWxlbnQ8L2VtPiA9IERpc3BsYXkgbm90aGluZywgYnV0IGV4cG9ydCBwcm9wZXJ0aWVzIGFuZCBvdGhlciBzbWFydHkgdmFyaWFibGVzIGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLiAgSWYgbm8gdXNlciBpcyBsb2dnZWQgaW4sIHRoZW4gbm8gdmFyaWFibGVzIGFyZSBleHBvcnRlZC48L2xpPg0KPC91bD4NCjwvcD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHJldHVybnRvPSZxdW90O3BhZ2UmcXVvdDs8L2xpPg0KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPlJlcXVpcmVtZW50czwvaDM+DQo8cD5JbiBvcmRlciB0byBpbXBsZW1lbnQgdGhlIGZvcmdvdHRlbiBwYXNzd29yZCBmdW5jdGlvbmFsaXR5LCB0aGlzIG1vZHVsZSByZXF1aXJlcyB0aGUgQ01TTWFpbGVyIG1vZHVsZSB0byBiZSBwcmV2aW91c2x5IGluc3RhbGxlZDwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA1LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjg3OTQxMTIzMS4xMTQ4Mzc2Njk5LjExNDg1NDcyMzIuMTE0ODYzMDQ3MC41JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTE0ODM3NjY5OS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdUaGlzIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQgaW4nOwokbGFuZ1sncHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2lucyddID0gJ0FsbG93IHVzZXJzIHRvIGxvZ2luIG1vcmUgdGhhbiBvbmNlJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnPGgzPk9uRGVsZXRlVXNlcjxoMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBpcyBkZWxldGVkPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIHVzZXIgbmFtZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlVXNlciddID0gJzxoMz5PbkNyZWF0ZVVzZXI8aDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgaXMgY3JlYXRlZDwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIHVzZXIgbmFtZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlR3JvdXAnXSA9ICc8aDM+T25DcmVhdGVHcm91cDxoMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgZ3JvdXAgaXMgY3JlYXRlZDwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIGdyb3VwIG5hbWU8L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBncm91cCBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlR3JvdXAnXSA9ICc8aDM+T25EZWxldGVHcm91cDxoMz4NCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgZ3JvdXAgaXMgZGVsZXRlZDwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gVGhlIGdyb3VwIG5hbWU8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGdyb3VwIGlkPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dpbiddID0gJzxoMz5PbkxvZ2luPGgzPg0KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI8L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dvdXQnXSA9ICc8aDM+T25Mb2dvdXQ8aDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQ8L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgbG9nZ2Vkb3V0IHVzZXI8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudF9oZWxwX09uRXhwaXJlVXNlciddID0gJzxoMz5PbkV4cGlyZVVzZXI8aDM+DQo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgc2Vzc2lvbiBleHBpcmVzPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGV4cGlyZWQgdXNlcjwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZCBvZiB0aGUgZXhwaXJlZCB1c2VyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW4gdG8gdGhlIHN5c3RlbSc7CiRsYW5nWydldmVudF9pbmZvX09uTG9nb3V0J10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3Mgb3V0IG9mIHRoZSBzeXN0ZW0nOwokbGFuZ1snZXZlbnRfaW5mb19PbkV4cGlyZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgc2Vzc2lvbiBpcyBleHBpcmVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBuZXcgdXNlciBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGFjY291bnQgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgY3JlYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgZGVsZXRlZCc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnQmFja2VuZCBncnVvcCc7CiRsYW5nWydpbmZvX3N0YXInXSA9ICcqIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGNhbiBiZSB1c2VkIGluIHRoZXNlIGZpZWxkczogeyR1c2VybmFtZX0nOwokbGFuZ1snaW5mb19hZG1pbl9wYXNzd29yZCddID0gJ0VkaXQgdGhpcyBmaWVsZCB0byByZXNldCB0aGUgdXNlcnMgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19hZG1pbl9yZXBlYXRwYXNzd29yZCddID0gJ0VkaXQgdGhpcyBmaWVsZCB0byByZXNldCB0aGUgdXNlcnMgcGFzc3dvcmQnOwokbGFuZ1snZXJyb3JfdXNlcm5hbWVfZXhpc3RzJ10gPSAnQSB1c2VyIHdpdGggdGhhdCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydub2NzdnJlc3VsdHMnXSA9ICdObyByZXN1bHRzIHJldHVybmVkIGZyb20gY3N2IGV4cG9ydCc7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdMZW5ndGggb2YgdXNlcm5hbWUgZmllbGQnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnTGVuZ3RoIG9mIHBhc3N3b3JkIGZpZWxkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnXSA9ICdNaW4vTWF4IHBhc3N3b3JkIGxlbmd0aHMgYXJlIGludmFsaWQnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lbGVuZ3RocyddID0gJ01pbi9NYXggdXNlcm5hbWUgbGVuZ3RocyBhcmUgaW52YWxpZCc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ1dlIGNvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MgZm9yIHRoaXMgYWNjb3VudCc7CiRsYW5nWyd1c2VyX2FkZGVkJ10gPSAnVXNlciBBZGRlZCAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ1VzZXIgRGVsZXRlZCB1aWQ9JXMnOwokbGFuZ1sncHJvcGVydHlmaWx0ZXInXSA9ICdQcm9wZXJ0eSc7CiRsYW5nWyd2YWx1ZXJlZ2V4J10gPSAnVmFsdWUgKHJlZ3VsYXIgZXhwcmVzc2lvbiknOwokbGFuZ1snd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnXSA9ICdXYXJuaW5nOiBUaGVzZSBmaWVsZHMgYWZmZWN0IHRoZSBzaXplIG9mIGlucHV0IGZpZWxkcyBmb3IgZm9ybXMuICBEZWNyZWFzaW5nIHRoaXMgbnVtYmVyIG9uIGFuIGV4aXN0aW5nIHNpdGUgbWF5IG5vdCBiZSBhZHZpc2FibGUnOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ0NoYW5nZSBhZG1pbiBwcmVmZXJlbmNlcz8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0VtYWlsIGFkZHJlc3MgYWxyZWFkeSB1c2VkJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnQWxsb3cgZHVwbGljYXRlIGVtYWlscyc7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoYWxsb3cgbXVsdGlwbGUgdXNlcnMgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcm5hbWUnXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhIHVzZXJuYW1lJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdwYXNzd29yZCddID0gJ1lvdSBkaWQgbm90IGVudGVyIGEgcGFzc3dvcmQnOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ291dCddID0gJ0Zyb250ZW5kIFVzZXIgTG9nb3V0JzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dnZWRpbiddID0gJ0Zyb250ZW5kIFVzZXIgTG9naW4nOwokbGFuZ1snZWRpdHByb3BfaW5mb21zZyddID0gJzxmb250IGNvbG9yPSZxdW90O3JlZCZxdW90Oz48Yj5VU0UgQ0FVVElPTjwvYj4gd2hlbiBjaGFuZ2luZyBleGlzdGluZyBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFzc2lnbmVkIHRvIGdyb3VwcywgeW91IG1heSBwb3RlbnRpYWxseSBjYXVzZSBkYW1hZ2UgYW5kIGJyZWFrIGFuIGV4aXN0aW5nIHNpdGUgPGk+KGVzcGVjaWFsbHkgaWYgeW91IHJlZHVjZSBmaWVsZCBsZW5ndGhzLCBldGMpPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgb24gd2luZG93cyc7CiRsYW5nWydtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJ10gPSAnRG8gbm90IGNyZWF0ZSBhIHByb3BlcnR5IGZvciB1c2VybmFtZSwgb3Igc29tZSBzdWNoIHRoaW5nIGFzIHRoaXMgaXMgYnVpbHRpbiB0byB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUnOwokbGFuZ1sncHJvbXB0X2V4cG9ydGNzdiddID0gJ0V4cG9ydCBVc2VycyB0byBDU1YnOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRXhwb3J0JzsKJGxhbmdbJ2FkbWluJ10gPSAnQWRtaW4nOwokbGFuZ1snZWRpdHByb3AnXSA9ICdFZGl0IFByb3BlcnR5JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01heGltdW0gTGVuZ3RoJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ3NvcnRieSddID0gJ1NvcnQgQnknOwokbGFuZ1snc29ydCddID0gJ1NvcnRpbmcnOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVXNlcnMgaW4gdGhlIHNlbGVjdGVkIGdyb3VwKHMpJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0xpbWl0IHJlc3VsdHMgdG8nOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYW4gZW1haWwgZmllbGQgZm9yIHRoaXMgdXNlci4gIFlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBmb3IgRm9yZ290IFBhc3N3b3JkIGZvcm0nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9yIENoYW5nZSBTZXR0aW5ncyBmb3JtJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdG8ganVtcCB0byBhZnRlciBsb2dvdXQgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ0EgbnVtYmVyIG9mIHVzZXJzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHJlc2V0dGluZyBsb3N0IHBhc3N3b3Jkcy4gIEN1cnJlbnRseSB0aGlzIGNvdW50IGlzIGF0Oic7CiRsYW5nWydyZW1vdmUxd2VlayddID0gJ1JlbW92ZSBhbGwgZW50cmllcyBtb3JlIHRoYW4gYSB3ZWVrIG9sZCc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMgbW9yZSB0aGFuIGEgbW9udGggb2xkJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1JlbW92ZSBhbGwgZW50cmllcyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ0FuIGludmFsaWQgY29kZSBoYXMgYmVlbiBlbnRlcmVkLCBwbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdBIHRlbXBvcmFyeSBjb2RlIGZvciB5b3VyIHVzZXIgaWQgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBkYXRhYmFzZSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF92ZXJpZnl0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIHVzZWQgdG8gZGlzcGxheSB2ZXJpZmljYXRpb24gZm9ybSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgdXNlZCBmb3IgZm9yZ290dGVuIHBhc3N3b3JkIGVtYWlsJzsKJGxhbmdbJ2Vycm9yX3Jlc2V0YWxyZWFkeXNlbnQnXSA9ICdFaXRoZXIgeW91cnNlbGYgb3Igc29tZW9uZSBlbHNlIGhhcyBhbHJlYWR5IHRyaWdnZXJlZCBhIHBhc3N3b3JkIHJlc2V0IG9wZXJhdGlvbiBmb3IgdGhpcyBhY2NvdW50LiAgQ2hlY2sgeW91ciBlbWFpbCwgeW91IG1heSBoYXZlIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkIGluIHlvdXIgaW5ib3gnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFiYXNlIGVycm9yJzsKJGxhbmdbJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCddID0gJ1lvdSBhcmUgcmVjZWl2aW5nIHRoaXMgbWVzc2FnZSBiZWNhdXNlIHNvbWVib2R5IHRvbGQgb3VyIHNpdGUgdGhhdCB5b3UgaGFkIGxvc3QgeW91ciBwYXNzd29yZC4gIElmIHRoaXMgaXMgdGhlIGNhc2UsIHJlYWQgdGhlIGluc3RydWN0aW9ucyBiZWxvdy4gIElmIHlvdSBkb24mIzAzOTt0IGhhdmUgYSBjbHVlIHdoYXQgdGhpcyBpcywgdGhlbiB5b3UgYXJlIHNhZmUgdG8gZGVsZXRlIHRoaXMgbWVzc2FnZSwgYW5kIHdlIHRoYW5rIHlvdSBmb3IgeW91ciB0aW1lLic7CiRsYW5nWydwcm9tcHRfY29kZSddID0gJ0NvZGUnOwokbGFuZ1snbWVzc2FnZV9jb2RlJ10gPSAnVGhlIGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIGdlbmVyYXRlZCByYW5kb21seSBnZW5lcmF0ZWQgaW4gb3JkZXIgdG8gdmVyaWZ5IHRoZSB1c2VyIGFjY291bnQuICB3aGVuIHlvdSBjbGljayBvbiB0aGUgbGluayBiZWxvdyB5b3Ugd2lsbCBiZSBwcmVzZW50ZWQgd2l0aCBhIGZpZWxkIHRvIGVudGVyIHRoaXMgY29kZS4gIE5vcm1hbGx5IHRoZSBmaWVsZCBpcyBwcmUtY29tcGxldGVkIGZvciB5b3UsIGJ1dCBpbmNhc2UgaXQgaXNuJiMwMzk7dCB0aGUgY29kZSBpczonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdDbGlja2luZyBvbiB0aGUgZm9sbG93aW5nIGxpbmsgd2lsbCB0YWtlIHlvdSB0byB0aGUgd2Vic2l0ZSB3aGVyZSB5b3UgY2FuIGVudGVyIHRoZSBhYm92ZSBjb2RlLCBhbmQgcmVzZXQgeW91ciBwYXNzd29yZDonOwokbGFuZ1snbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCddID0gJ0xvc3QgUGFzc3dvcmQnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdDb3VsZCBub3QgZmluZCB0aGUgQ01TTWFpbGVyIG1vZHVsZSc7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICdBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvICVzIHdpdGggaW5zdHJ1Y3Rpb25zIGFzIHRvIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkLiAgVGhhbmsgeW91JzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnU28geW91IGZvcmdvdCBvciBsb3N0IHlvdXIgcGFzc3dvcmQuIFdlbGwsIHR5cGUgeW91ciB1c2VybmFtZSBpbiBoZXJlLCBhbmQgaWYgd2UgY2FuIGZpbmQgeW91IHdlIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IGl0JzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnRm9yZ290IFBhc3N3b3JkIFRlbXBhdGVzJzsKJGxhbmdbJ2Vycm9yX3Byb3Bub3Rmb3VuZCddID0gJ1Byb3BlcnR5ICVzIG5vdCBmb3VuZCc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnUHJvcGVydGllcyBmb3VuZCc7CiRsYW5nWydhZGRwcm9wJ10gPSAnQWRkIFByb3BlcnR5JzsKJGxhbmdbJ2Vycm9yX3JlcXVpcmVkZmllbGQnXSA9ICdBIHJlcXVpcmVkIGZpZWxkICglcykgd2FzIGVtcHR5JzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnRW50ZXIgYSBuZXcgcGFzc3dvcmQgaGVyZSB0byBjaGFuZ2UgeW91ciBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl9ub3Rsb2dnZWRpbiddID0gJ1lvdSBkbyBub3QgYXBwZWFyIHRvIGJlIGxvZ2dlZCBpbic7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1sndXNlcl9yZWdpc3RyYXRpb24nXSA9ICdSZWdpc3RyYXRpb24nOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdUaGlzIGFjY291bnQgaGFzIGV4cGlyZWQnOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ0ltcHJvcGVyIGVtYWlsIGFkZHJlc3MgZm9ybWF0dGluZyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ0ludmFsaWQgZXhwaXJ5IGRhdGUnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdwcm9wZXJ0eSddID0gJ0Vycm9yIHNldHRpbmcgcHJvcGVydHkgJXMgZm9yIHVzZXIgJHMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGdyb3VwaWQnXSA9ICdJbnZhbGlkIGdyb3VwIGlkICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnSGlkZGVuIGZpZWxkIG1hcmtlcic7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnSGlkZGVuIGZpZWxkIGNvbG9yJzsKJGxhbmdbJ2hpZGRlbiddID0gJ0hpZGRlbic7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnQSBwcm9wZXJ0eSB3aXRoIHRoYXQgbmFtZSBpcyBhbHJlYWR5IGRlZmluZWQnOwokbGFuZ1snZXJyb3Jfbm9wcm9wZXJ0aWVzJ10gPSAnTm8gcHJvcGVydGllcyBkZWZpbmVkJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnTm8gcHJvcGVydGllcyB3ZXJlIHNlbGVjdGVkIGZvciB0aGlzIGdyb3VwJzsKJGxhbmdbJ2dyb3Vwc2ZvdW5kJ10gPSAnR3JvdXBzIEZvdW5kJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdNZW1iZXJzaGlwIGluIGF0IGxlYXN0IG9uZSBncm91cCBpcyByZXF1aXJlZCc7CiRsYW5nWydwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJ10gPSAnUmVxdWlyZSBtZW1iZXJzaGlwIGluIGF0bGVhc3Qgb25lIGdyb3VwJzsKJGxhbmdbJ2JhY2snXSA9ICdCYWNrJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nXSA9ICclcyBpcyBhIHJlcXVpcmVkIGZpZWxkJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRtYXJrZXInXSA9ICdNYXJrIHJlcXVpcmVkIGZpZWxkcyB3aXRoJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ0hpbGl0ZSByZXF1aXJlZCBmaWVsZHMgaW4nOwokbGFuZ1snbmV4dCddID0gJ05leHQnOwokbGFuZ1snZXJyb3JfZ3JvdXBleGlzdHMnXSA9ICdBIEdyb3VwIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ3JlcXVpcmVkJ10gPSAnUmVxdWlyZWQgRmllbGQnOwokbGFuZ1snb3B0aW9uYWwnXSA9ICdPcHRpb25hbCc7CiRsYW5nWydvZmYnXSA9ICdPZmYnOwokbGFuZ1snbGVuZ3RoJ10gPSAnTGVuZ3RoJzsKJGxhbmdbJ2xlbmd0aGNvbW1lbnQnXSA9ICc8YnI+KGNoYXJzIGluIHRoZSB0ZXh0IGlucHV0KSc7CiRsYW5nWydzZWxvcHRpb25zJ10gPSAnRHJvcGRvd24gb3B0aW9ucywgc2VwYXJhdGVkIGJ5IGxpbmUgYnJlYWtzJzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydwcm9tcHQnXSA9ICdQcm9tcHQnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1sndGV4dCddID0gJ1RleHQnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsIEFkZHJlc3MnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0YXJlYSc7CiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsKJGxhbmdbJ21zZ19jdXJyZW50bHlsb2dnZWRpbmFzJ10gPSAnVmVsa29tbWVuJzsKJGxhbmdbJ2xvZ291dCddID0gJ0xvZyB1ZCc7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3MnXSA9ICdDaGFuZ2UgTXkgU2V0dGluZ3MnOwokbGFuZ1snZXJyb3JfbG9naW5mYWlsZWQnXSA9ICdMb2dpbiBmYWlsZWQgLSBJbnZhbGlkIHVzZXJuYW1lIG9yIHBhc3N3b3JkPyc7CiRsYW5nWydsb2dpbiddID0gJ1NpZ24gaW4nOwokbGFuZ1sncHJvbXB0X3VzZXJuYW1lJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdSZWdpc3Rlcic7CiRsYW5nWydmb3Jnb3RwdyddID0gJ0ZvcmdvdCBZb3VyIFBhc3N3b3JkPyc7CiRsYW5nWydkZWZhdWx0cyddID0gJ0RlZmF1bHRzJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnVXNlciBJRCBub3QgZm91bmQnOwokbGFuZ1snZXJyb3JfdXNlcm5hbWV0YWtlbiddID0gJ1RoYXQgdXNlcm5hbWUgKCVzKSBpcyBhbHJlYWR5IGluIHVzZSc7CiRsYW5nWydwcm9tcHRfc210cHZhbGlkYXRlJ10gPSAnVXNlIFNNVFAgdG8gdmFsaWRhdGUgZW1haWwgYWRkcmVzc2VzPyc7CiRsYW5nWydwcm9tcHRfbWlucHdsZW4nXSA9ICdNaW5pbXVtIFBhc3N3b3JkIExlbmd0aCc7CiRsYW5nWydwcm9tcHRfbWF4cHdsZW4nXSA9ICdNYXhpbXVtIFBhc3N3b3JkIExlbmd0aCc7CiRsYW5nWydwcm9tcHRfbWludW5sZW4nXSA9ICdNaW5pbXVtIFVzZXJuYW1lIExlbmd0aCc7CiRsYW5nWydwcm9tcHRfbWF4dW5sZW4nXSA9ICdNYXhpbXVtIFVzZXJuYW1lIExlbmd0aCc7CiRsYW5nWydwcm9tcHRfc2Vzc2lvbnRpbWVvdXQnXSA9ICdTZXNzaW9uIFRpbWVvdXQgKHNlY29uZHMpJzsKJGxhbmdbJ3Byb21wdF9hbGxvd2VtYWlscmVnJ10gPSAnQWxsb3cgRW1haWwgUmVnaXN0cmF0aW9uJzsKJGxhbmdbJ3Byb21wdF9kZmx0Z3JvdXAnXSA9ICdEZWZhdWx0IEdyb3VwIGZvciBuZXcgdXNlcnMnOwokbGFuZ1snY2hhbmdlc2V0dGluZ3NfdGVtcGxhdGUnXSA9ICdDaGFuZ2UgU2V0dGluZ3MgVGVtcGxhdGUnOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCddID0gJ1Bhc3N3b3JkcyBEbyBub3QgbWF0Y2gnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnSW52YWxpZCBVc2VybmFtZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICdJbnZhbGlkIFBhc3N3b3JkJzsKJGxhbmdbJ2VkaXR1c2VyJ10gPSAnRWRpdCBVc2VyJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnVmFsaWQnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snZXJyb3JfbWVtYmVyZ3JvdXBzJ10gPSAnVGhpcyB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3JvdXBzJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdObyBQcm9wZXJ0aWVzJzsKJGxhbmdbJ3ZhbHVlJ10gPSAnVmFsdWUnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3JvdXBzJzsKJGxhbmdbJ3Byb3BlcnRpZXMnXSA9ICdQcm9wZXJ0aWVzJzsKJGxhbmdbJ3Byb3BuYW1lJ10gPSAnUHJvcGVydHkgTmFtZSc7CiRsYW5nWydwcm9wdmFsdWUnXSA9ICdQcm9wZXJ0eSBWYWx1ZSc7CiRsYW5nWydhZGQnXSA9ICdBZGQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snZXhwaXJlcyddID0gJ0V4cGlyZXMnOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnU3BlY2lmeSBEYXRlJzsKJGxhbmdbJzEyaHJzJ10gPSAnMTIgSG91cnMnOwokbGFuZ1snMjRocnMnXSA9ICcyNCBIb3Vycyc7CiRsYW5nWyc0OGhycyddID0gJzQ4IEhvdXJzJzsKJGxhbmdbJzF3ZWVrJ10gPSAnMSBXZWVrJzsKJGxhbmdbJzJ3ZWVrcyddID0gJzIgV2Vla3MnOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBNb250aCc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBNb250aHMnOwokbGFuZ1snNm1vbnRocyddID0gJzYgTW9udGhzJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSBZZWFyJzsKJGxhbmdbJ25ldmVyJ10gPSAnTmV2ZXInOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTW9kdWxlIGluc3RhbGxlZCBzdWNlc3NmdWxseS48YnIvPkJlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgRnJvbnRFbmRVc2VyIFByb3BlcnRpZXMgcGVybWlzc2lvbi4mcXVvdDsnOwokbGFuZ1sncGFzc3dvcmQnXSA9ICdQYXNzd29yZCc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ0FnYWluJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdHcm91cCBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnRWRpdCBHcm91cCc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjb25maXJtX2VkaXRncm91cCddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGlzIHRoZSBwcm9wZXIgc2V0dGluZ3MgZm9yIHRoaXMgZ3JvdXA/XG5UdXJuaW5nIGEgcHJvcGVydHkgb2ZmIHdpbGwgbm90IGRlbGV0ZSBhbnkgZW50cmllcyBpbiB0aGUgcHJvcGVydGllcyB0YWJsZSBmb3IgdGhpcyBncm91cC91c2VyLiAgVGhleSB3aWxsIG1lcmVseSBiZSB1bmF2YWlsYWJsZS4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBncm91cD8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfcHJvcCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IGRlbGV0ZSB0aGlzIHByb3BlcnR5P1xuRG9pbmcgc28gd2lsbCBhbHNvIGVyYXNlIGFueSB1c2VyIGVudHJpZXMgZm9yIHRoaXMgcHJvcGVydHkuJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ0luc3VmZmljaWVudCBQYXJhbWV0ZXJzJzsKJGxhbmdbJ2lkJ10gPSAnSWQnOwokbGFuZ1snbmFtZSddID0gJ05hbWUnOwokbGFuZ1snZXJyb3JfY2FudGFkZGdvcnVwJ10gPSAnUHJvYmxlbSBhZGRpbmcgZ3JvdXAnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhcmFtcyddID0gJ0ludmFsaWQgUGFyYW1ldGVycyc7CiRsYW5nWydhcHBseWZpbHRlciddID0gJ0FwcGx5JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnVXNlcm5hbWUgUmVndWxhciBFeHByZXNzaW9uJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24nOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3JvdXAgTmFtZSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3InOwokbGFuZ1snYWRkZ3JvdXAnXSA9ICdBZGQgR3JvdXAnOwokbGFuZ1snYWRkdXNlciddID0gJ0FkZCBVc2VyJzsKJGxhbmdbJ3VzZXJzZm91bmQnXSA9ICdVc2VycyBmb3VuZCB0aGF0IG1hdGNoIHRoZSBjcml0ZXJpYSc7CiRsYW5nWydncm91cCddID0gJ0dyb3VwJzsKJGxhbmdbJ3NlbGVjdGdyb3VwJ10gPSAnU2VsZWN0IEdyb3VwJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ1JlZ2lzdHJhdGlvbiBUZW1wbGF0ZSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdMb2dvdXQgVGVtcGxhdGUnOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICdMb2dpbiBUZW1wbGF0ZSc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ3VzZXJzJ10gPSAnVXNlcnMnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnRnJvbnRlbmQgVXNlciBNYW5hZ21lbnQnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdNYW5hZ2UgRnJvbnRlbmQgVXNlcnMnOwokbGFuZ1snZGVmYXVsdGZyb250cGFnZSddID0gJ0RlZmF1bHQgZnJvbnQgcGFnZSc7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnTGFzdCBhY2Nlc3NlZCBwYWdlJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ090aGVyIHBhZ2U6ICc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+MC4wLjEgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCBOUlBUIChOb3QgUmVhZHkgZm9yIFByaW1lIFRpbWUpIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4wIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjEgLSBPY3RvYmVyLCAyMDA1IC0gRml4ZWQgaXNzdWVzIHdpdGggcHJvcGVydGllczwvbGk+DQo8bGk+MC4xLjIgLSBPY3RvYmVyLCAyMDA1IC0gQWRkZWQgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHk8L2xpPg0KPGxpPjxwPjAuMS4zIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHJlZGlyZWN0IHBhZ2Ugb24gbG9naW4sIGxvZ291dCwgZm9yZ290IHBhc3N3b3JkLCBhbmQgY2hhbmdlIHNldHRpbmdzLCBhbmQgYWRkZWQgdGhlIHJldHVybnRvIGFuZCBmb3JtIHBhcmFtZXRlcnMgdG8gdGhlIHVzZXIgc2lkZSBvZiB0aGluZ3MsIGFsc28gZGlkIGEgY291cGxlIGxmIGxpdHRsZSBjbGVhbnVwcy4gIFRoaXMgdmVyc2lvbiByZXF1aXJlcyB2MC4xMSBhbmQgYWJvdmUgZm9yIGNlcnRhaW4uPC9wPjwvbGk+DQo8bGk+MC4xLjQgLSBOb3ZlbWJlciwgMjAwNSAtIFZlcnkgbWlub3IgY2hhbmdlIHdpdGggcmVzcGVjdCB0byBhIGZvcmdvdHRlbiBhbmQgbm8gbG9uZ2VyIG5lZWRlZCBmdW5jdGlvbiBjYWxsPC9saT4NCjxsaT48cD4wLjEuNSAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFub3RoZXIgdmVyeSBtaW5vciBjaGFuZ2UsIGFkZGVkIHNvbWUgdGV4dCB0byB0aGUgUG9zdEluc3RhbGwgbWVzc2FnZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNiAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5DaGFuZ2VzIHRvIHRoZSBwZXJtaXNzaW9uIG1vZGVsLCBhbmQgbWlub3IgYnVnIGZpeGVzIHRvIHRoZSBwcmVmZXJlbmNlcy4gIEFsc28gc29tZSBwaHA1IGZpeGVzIGJ1dCBJIGFtIHN1cmUgdGhhdCB0aGVyZSBhcmUgbW9yZSBvdXQgdGhlcmUuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjcgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+TWFueSB0aGFua3MgdG8gPGI+a2F0b248L2I+IGZvciBhZGRpbmcgdGhlIHRleHRhcmVhIGFuZCBkcm9wZG93biBwcm9wZXJ0eSB0eXBlcy48L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHByb3BlcnR5IGFkZGluZyB0byBmaXggcHJvYmxlbXMgd2l0aCBzcGFjZXMgaW4gcHJvcGVydHkgbmFtZXMgKHdlIG5vIGxvbmdlciBsZXQgdGhhdCBoYXBwZW4pLjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjAgLSBGZWJydWFyeSwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIGZpbHRlcmluZyBhbmQgcm93IGxpbWl0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbC4gVGhpcyB3aWxsIGhhdmUgYmlnIGJlbmVmaXRzIHRvIHRob3NlIHRoYXQgYXJlIHVzaW5nIHRoaXMgbW9kdWxlIGZvciBoaWdoIHRyYWZpYywgYW5kIGhpZ2ggdXNlciBzaXRlcy48L3A+DQogICAgPHA+QWRkZWQgc29ydGluZyB0byB0aGUgYWRtaW4gcGFuZWw8L3A+DQogICAgPHA+QWRkZWQgbWF4IGxlbmd0aCBhYmlsaXR5IHRvIHRleHQgYW5kIGVtYWlsIGZpZWxkczwvcD4NCiAgICA8cD5GaXhlZCBhIHNtYWxsIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBncm91cCBub3QgYmVpbmcgY2hlY2tlZCB3aGVuIGFkZGluZyBhIHVzZXI8L3A+DQogICAgPHA+U2F2ZSBmaWx0ZXIgc2V0dGluZ3MgaW4gcHJlZmVyZW5jZXMsIGFuZCB0aGUgYWN0aXZlIHRhYiB0b28uPC9wPg0KICAgIDxwPkRlbGV0ZSB1c2VyIHByb3BlcnRpZXMgd2hlbiBhIHByb3BlcnR5IGlzIGRlbGV0ZWQgPGVtPk5vdGU8L2VtPiwgbm90IHdoZW4gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIGVkaXQgZ3JvdXAgZGlhbG9nPC9wPg0KICAgIDxwPkFkZCBjb25maXJtYXRpb24gbWVzc2FnZSBpbiBlZGl0IGdyb3Vwcy48L3A+DQogICAgPHA+QWRkZWQgYSBjb3VwbGUgbW9yZSBjb25maXJtYXRpb24gbWVzc2FnZXMuPC9wPg0KICAgIDxwPkFkZGVkIENTViBFeHBvcnQgb3B0aW9uPC9wPg0KICAgIDxwPlRvZG8gLSBBZGQgcHJlZmVyZW5jZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZGxlbmd0aDwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjEgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZW1haWwgYWRkcmVzc2VzPC9wPg0KICAgIDxwPkZpeCBwcm9ibGVtIHdoZXJlIGV4cGlyeSBkYXRlIHdhcyBiZWluZyBtb2RpZmllZCB3aGVuIGFkbWluIG1vZGlmaWVkIHVzZXIgc2V0dGluZ3M8L3A+DQogICAgPHA+QWRkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIHN1Ym1pdCBidXR0b248L3A+DQogICAgPHA+Rml4ZWQgYSBtaW5vciBidWcgd2hlbiBjb3V0aW5nIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gYSBncm91cDwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgc2l6ZSBvZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRzLCBhbmQgbWF4bGVuZ3RoPC9wPg0KICAgIDxwPkFkZGVkIGFkdmFuY2VkIGZpbHRlcmluZyBvbiBwcm9wZXJ0aWVzPC9wPg0KICAgIDxwPkNoYW5nZXMgdG8gbGFiZWxpbmcgaW4gYWRkIG9yIGVkaXQgdXNlcjwvcD4NCiAgICA8cD5GaXhlcyB0byBwcm9ibGVtcyB3aXRoIGlubGluZSBhbmQgbm9uIGlubGluZSBmb3JtcywgdGhlIHBhc3N3b3JkIGlzIG5ldmVyIHNlbnQgb24gdGhlIGdldCBsaW5lPC9wPg0KICAgIDxwPkNoYW5nZWQgdG8gcmVxdWlyZSBDTVMgMC4xMi1iZXRhMiBhdCBhIG1pbmltdW0gKGZvciBzYWZldHkgcHVycG9zZXMpPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMiAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+TW9yZSBmaWVsZCBsZW5ndGggZml4ZXM8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4zIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5FeHBvcnQgdG8gc21hcnR5IGFsbCBvZiB0aGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gdGhleSBhcmUgbG9nZ2VkIGluPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuNCAtIE1heSwgMjAwNjxwPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBleHBvcnQgY29kZTwvcD4NCiAgICA8cD5Db2RlIGNsZWFudXAgKGFscGhhYmV0aXplIGZ1bmN0aW9ucyk8L3A+DQogICAgPHA+TWlub3IgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyAocmVjb21tZW5kZWQgYnkgbmlsczczKSBmb3IgZGVhbGluZyB3aXRoIHRoZSBjaGFuZ2UgcGFzc3dvcmQgc3R1ZmYuPC9wPg0KICAgIDxwPlJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IGZvciBDTVMgMC4xMiwgYW5kIHB1dCBpdCBiYWNrIHRvIDAuMTEuMjwvcD4NCiAgICA8cD5BZGRlZCB0aGUgXCYjMDM5O3NpbGVudFwmIzAzOTsgZm9ybTwvcD4NCiAgICA8cD5DbGVhbmVkIHVwIGRhdGFiYXNlIGFjY2VzcyBzdHVmZiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAoaG9wZWZ1bGx5KTwvcD4NCiAgICA8cD5BZGRlZCBjb3B5cmlnaHQgaW5mbzwvcD4NCiAgICA8cD5BZGRlZCBtYWNyb3MgZm9yIHJlZGlyZWN0byB0byBhIHVzZXIgc3BlY2lmaWMgcGFnZSBvbiBsb2dpbiBvciBsb2dvdXQ8L3A+DQogICAgPHA+VHdlYWtzIHRvIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyB0YWI8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC41IC0gTWF5LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGV4cGlyeSBkYXRlczwvcD4NCiAgICA8cD5TdGFydCBzcGxpdHRpbmcgdGhlIGNvZGUgdXAgaW50byBzZXZlcmFsIGZpbGVzPC9wPg0KPGxpPjxwPjEuMC42IC0gTWF5LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGVkaXRpbmcgZHJvcGRvd25zPC9wPg0KPC9saT4NCjxsaT48cD4xLjEuMCAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5FdmVudHM8L3A+DQogICAgPHA+T3B0aW9uYWxseSBkaXNhbGxvdyByZXBlYXRlZCBsb2dpbnM8L3A+DQogICAgPHA+RXhwb3J0IHRoZSB1c2VyIGlkIHRvIHNtYXJ0eTwvcD4NCjwvbGk+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc3MpPC9pPi4gIEl0IGFsbG93cyBjcmVhdGlvbiBvZiB1c2VyIGdyb3VwcywgYW5kIHVzZXIgYWNjb3VudHMgYW5kIGFsbG93cyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0LiAgaXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgQ3VzdG9tQ29udGVudCBtb2R1bGUgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCB0byBkaWZmZXJlbnQgdXNlcnMgb25jZSB0aGV5IGhhdmUgbG9nZ2VkIGluPC9wPg0KPGgzPkZlYXR1cmVzPC9oMz4NCjx1bD4NCjxsaT48cD5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvcD48L2xpPg0KPGxpPjxwPkdyb3VwIFByb3BlcnRpZXMuICBZb3UgY2FuIGFzayBmb3IgZGlmZmVyZW50IGluZm9ybWF0aW9uIGZyb20gbWVtYmVycyBvZiBkaWZmZXJlbnQgZ3JvdXBzPC9wPjwvbGk+DQo8bGk+PHA+Q2FwYWJsZSBvZiBoYW5kbGluZyBodW5kcmVkcyBvZiB1c2VyczwvcD48L2xpPg0KPGxpPjxwPkhhcyBhbiBleHRlbnNpdmUgQVBJIGZvciBhZGRpbmcgZnVuY3Rpb25hbGl0eTwvcD48L2xpPg0KPC91bD4NCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPg0KPHVsPg0KPGxpPjxwPkFmdGVyIGluc3RhbGxhdGlvbiB5b3UgY2FuIGFjY2VzcyBhZG1pbiBwYW5lbCB0byB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdW5kZXIgdGhlICZxdW90O1VzZXJzICZhbXA7IGdHcm91cHMmcXVvdDsgbWVudS48L3A+PC9saT4NCjxsaT4NCjxwPlNlY29uZGx5LCB5b3Ugc2hvdWxkIGRlZmluZSBwcm9wZXJ0aWVzLiAgUHJvcGVydGllcyBhcmUgZXNzZW50aWFsbHkgZmllbGQgZGVmaW5pdGlvbnMsIGhlcmUgeW91IHNwZWNpZnkgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gZ2F0aGVyLCBhbmQgbGltaXRzLiBpLmU6ICBOYW1lLCBBZ2UsIENpdHksIFN0YXRlLCBDb3VudHJ5LCBFbWFpbCBhZGRyZXNzLCBldGMuPC9wPg0KPHA+PGI+Tm90ZTo8L2I+IFlvdSBkbyBub3QgbmVlZCB0byBkZWZpbmUgcHJvcGVydGllcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3U8L2I+DQo8L2xpPg0KPGxpPjxwPk5leHQgeW91IHNob3VsZCBjcmVhdGUgb25lIG9yIG1vcmUgdXNlciBncm91cHMuICBXaGVuIHlvdSBjcmVhdGUgYSBncm91cCwgeW91IGFyZSBhc2tlZCBmb3IgYSBncm91cCBuYW1lLCBhIGRlc2NyaXB0aW9uIGFuZCB0byBhc3NvY2lhdGUgcHJvcGVydGllcyB3aXRoIHRoYXQgZ3JvdXAsIHNwZWNpZnkgdGhlIHByb3BlcnRpZXMgc29ydCBvcmRlciwgYW5kIHdldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZCA8aT4ob2ZmIGlzIGFsc28gdmFsaWQpPC9pPjwvcD48L2xpPg0KPGxpPjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuPC9wPjwvbGk+DQo8bGk+PHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrIFwmIzAzOTtOZXh0XCYjMDM5OzwvcD4NCjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzLCBhbmQgdGhlbiB5b3UgY2FuIGVkaXQgdGhlaXIgZ3JvdXAgaW5mb3JtYXRpb24uICBidXQgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHBsZWFzZSBjcmVhdGUgYXQgbGVzdCBvbmUgdXNlcjwvcD48L2xpPg0KPGxpPjxwPkxhc3RseSwgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGZpZWxkcyB0byBiZSBwcmVzZW50ZWQgZm9yIHRoYXQgdXNlciwgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGZvcm0gYXNraW5nIGZvciBhbGwgb2YgdGhlIHJlcXVpcmVkIHVzZXIgaW5mb3JtYXRpb24uICBDb21wbGV0ZSB0aGlzIGZvcm0gdG8gY29tcGxldGUgdGhlIHVzZXIgYWRkaXRpb248L3A+PC9saT4NCjxsaT48cD5Zb3UgYXJlIG5vdyByZWFkeSB0byBhZGQgdGhlIGZyb250IGVuZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgc2l0ZS4gIFRoaXMgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUge2Ntc19tb2R1bGUgbW9kdWxlPUZyb250RW5kVXNlcnN9IHRhZyB0byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGU8L3A+PC9saT4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVwmIzAzOTtzDQptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vdGVjaGNvbS5keW5kbnMub3JnJnF1b3Q7PnRlY2hjb20uZHluZG5zLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZvcm09JnF1b3Q7bmFtZSZxdW90OzwvbGk+DQo8cD5Gb3JtczoNCjx1bD4NCiA8bGk+PGVtPmxvZ2luPC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dpbiBmb3JtPC9saT4NCiA8bGk+PGVtPmxvZ291dDwvZW0+IC0gRGlzcGxheSB0aGUgbG9nb3V0IGZvcm08L2xpPg0KIDxsaT48ZW0+Y2hhbmdlc2V0dGluZ3M8L2VtPiAtIERpc3BsYXkgdGhlIGNoYW5nZSBzZXR0aW5ncyBmb3JtPC9saT4NCiA8bGk+PGVtPmZvcmdvdHB3PC9lbT4gLSBEaXNwbGF5IHRoZSBmb3Jnb3QgcGFzc3dvcmQgZm9ybTwvbGk+DQo8bGk+PGVtPnNpbGVudDwvZW0+ID0gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+DQo8L3VsPg0KPC9wPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG89JnF1b3Q7cGFnZSZxdW90OzwvbGk+DQo8cD5Vc2VkIHdpdGggdGhlIGxvZ2luLCBsb2dvdXQsIGFuZCBjaGFuZ2VzZXR0aW5ncyBmb3JtcywgdGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIHBhZ2UgaWQgb3IgYWxpYXMgb2YgYSBwYWdlIHRvIHJlZGlyZWN0IHRvLCB3aGVuIHRoZSBmb3JtIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQ8L3A+DQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+UmVxdWlyZW1lbnRzPC9oMz4NCjxwPkluIG9yZGVyIHRvIGltcGxlbWVudCB0aGUgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHksIHRoaXMgbW9kdWxlIHJlcXVpcmVzIHRoZSBDTVNNYWlsZXIgbW9kdWxlIHRvIGJlIHByZXZpb3VzbHkgaW5zdGFsbGVkPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdEaWVzZXIgQmVudXR6ZXIgaXN0IGJlcmVpdHMgYW5nZW1lbGRldCc7CiRsYW5nWydwcm9tcHRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJ10gPSAnRGVuIEJlbnV0emVybiBlcmxhdWJlbiwgc2ljaCBtZWhyIGFscyBlaW5tYWwgYW56dW1lbGRlbic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlVXNlciddID0gJzxoMz5PbkRlbGV0ZVVzZXI8aDM+DQo8cD5FaW4gRXJlaWduaXMsIHdlbm4gZWluIEJlbnV0emVyIGdlbCZvdW1sO3NjaHQgd3VyZGU8L3A+DQo8aDQ+UGFyYW1ldGVyPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIEJlbnV0emVybmFtZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBCZW51dHplci1JRDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlVXNlciddID0gJzxoMz5PbkNyZWF0ZVVzZXI8aDM+DQo8cD5FaW4gRXJlaWduaXMsIHdlbm4gZWluIEJlbnV0emVyIGVyc3RlbGx0IHd1cmRlPC9wPg0KPGg0PlBhcmFtZXRlcjwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBCZW51dHplcm5hbWU8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gQmVudXR6ZXItSUQ8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZUdyb3VwJ10gPSAnPGgzPk9uQ3JlYXRlR3JvdXA8aDM+DQo8cD5FaW4gRXJlaWduaXMsIHdlbm4gZWluZSBCZW51dHplcmdydXBwZSBlcnN0ZWxsdCB3dXJkZTwvcD4NCjxoND5QYXJhbWV0ZXI8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBCZW51dHplcmdydXBwZW5hbWU8L2xpPg0KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gQmVzY2hyZWlidW5nIGRlciBCZW51dHplcmdydXBwZTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBCZW51dHplcmdydXBwZW4tSUQ8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZUdyb3VwJ10gPSAnPGgzPk9uRGVsZXRlR3JvdXA8aDM+DQo8cD5FaW4gRXJlaWduaXMsIHdlbm4gZWluZSBCZW51dHplcmdydXBwZSBnZWwmb3VtbDtzY2h0IHd1cmRlPC9wPg0KPGg0PlBhcmFtZXRlcjwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIEJlbnV0emVyZ3J1cHBlbm5hbWU8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gQmVudXR6ZXJncnVwcGVuLUlEPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dpbiddID0gJzxoMz5PbkxvZ2luPGgzPg0KPHA+RWluIEVyZWlnbmlzLCB3ZW5uIHNpY2ggZWluIEJlbnV0emVyIGFubWVsZGV0PC9wPg0KPGg0PlBhcmFtZXRlcjwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBOYW1lIGRlcyBhbmdlbWVsZGV0ZW4gQmVudXR6ZXJzPC9saT4NCjxsaT48ZW0+aXA8L2VtPiAtIElQLUFkcmVzc2UgZGVzIENsaWVudHM8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudF9oZWxwX09uTG9nb3V0J10gPSAnPHA+RWluIEVyZWlnbmlzLCB3ZW5uIHNpY2ggZWluIEJlbnV0emVyIGFibWVsZGV0PC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gTmFtZSBkZXMgYWJnZW1lbGRldGVuIEJlbnV0emVyczwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBCZW51dHplci1JRDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25FeHBpcmVVc2VyJ10gPSAnPHA+RWluIEVyZWlnbmlzLCB3ZW5uIGVpbmUgQmVudXR6ZXItU2l0enVuZyBhYmwmYXVtbDt1ZnQ8L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBOYW1lIGRlcyBCZW51dHplcnMgbWl0IGRlciBhYmdlbGF1ZmVuZW4gU2l0enVuZzwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBCZW51dHplci1JRCBkZXIgYWJnZWxhdWZlbmVuIFNpdHp1bmc8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudF9pbmZvX09uTG9naW4nXSA9ICdFaW4gRXJlaWduaXMsIHdlbm4gc2ljaCBlaW4gQmVudXR6ZXIgaW0gU3lzdGVtIGFubWVsZGV0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dvdXQnXSA9ICdFaW4gRXJlaWduaXMsIHdlbm4gc2ljaCBlaW4gQmVudXR6ZXIgaW0gU3lzdGVtIGFibWVsZGV0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25FeHBpcmVVc2VyJ10gPSAnRWluIEVyZWlnbmlzLCB3ZW5uIGVpbmUgQmVudXR6ZXItU2l0enVuZyBhYmwmYXVtbDt1ZnQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZVVzZXInXSA9ICdFaW4gRXJlaWduaXMsIHdlbm4gZWluIG5ldWVyIEJlbnV0emVyIGVyc3RlbGx0IHd1cmRlJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnRWluIEVyZWlnbmlzLCB3ZW5uIGVpbiBCZW51dHplcmtvbnRvIGdlbCZvdW1sO3NjaHQgd3VyZGUnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZUdyb3VwJ10gPSAnRWluIEVyZWlnbmlzLCB3ZW5uIGVpbmUgQmVudXR6ZXJncnVwcGUgZXJzdGVsbHQgd3VyZGUnOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZUdyb3VwJ10gPSAnRWluIEVyZWlnbmlzLCB3ZW5uIGVpbmUgQmVudXR6ZXJncnVwcGUgZ2VsJm91bWw7c2NodCB3dXJkZSc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnQmFja2VuZC1HcnVwcGUnOwokbGFuZ1snaW5mb19zdGFyJ10gPSAnKiBEaWUgZm9sZ2VuZGVuIE1ha3JvcyBrJm91bWw7bm5lbiBpbiBkaWVzZW4gRmVsZGVybiB2ZXJ3ZW5kZXQgd2VyZGVuOiB7JHVzZXJuYW1lfSx7JGdyb3VwfS4gV2VubiBTaWUgZGFzIHskZ3JvdXB9LU1ha3JvIHZlcndlbmRlbiwgZXJzZXR6dCBkYXMgU3lzdGVtIGRlbiBOYW1lbiBkZXIgZXJzdGVuIEJlbnV0emVyZ3J1cHBlLCBkZXIgZGVyIEJlbnV0emVyIGFuZ2VoJm91bWw7cnQgdW5kIGxlaXRldCBpaG4gYXVmIGRpZXNlIFNlaXRlIHdlaXRlci4nOwokbGFuZ1snaW5mb19hZG1pbl9wYXNzd29yZCddID0gJ0JlYXJiZWl0ZW4gU2llIGRpZXNlcyBGZWxkLCB1bSBkYXMgUGFzc3dvcnQgZGVzIEJlbnV0emVycyB6dXImdXVtbDtja3p1c2V0emVuLic7CiRsYW5nWydpbmZvX2FkbWluX3JlcGVhdHBhc3N3b3JkJ10gPSAnQmVhcmJlaXRlbiBTaWUgZGllc2VzIEZlbGQsIHVtIGRhcyBQYXNzd29ydCBkZXMgQmVudXR6ZXJzIHp1ciZ1dW1sO2NrenVzZXR6ZW4uJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cyddID0gJ0VzIGV4aXN0aWVydCBiZXJlaXRzIGVpbiBCZW51dHplciBtaXQgZGllc2VtIEJlbnV0emVybmFtZW4uJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ1ZvbSBDU1YtRXhwb3J0IHd1cmRlbiBrZWluZSBEYXRlbiB6dXImdXVtbDtja2dlZ2ViZW4uJzsKJGxhbmdbJ3Byb21wdF91bmZsZGxlbiddID0gJ0wmYXVtbDtuZ2UgZGVzIEJlbnV0emVybmFtZW4tRmVsZGVzJzsKJGxhbmdbJ3Byb21wdF9wd2ZsZGxlbiddID0gJ0wmYXVtbDtuZ2UgZGVzIFBhc3N3b3J0LUZlbGRlcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnQmVpbSBVbnRlci0vJlV1bWw7YmVyc2NocmVpdGVuIGRpZXNlciBMJmF1bWw7bmdlIGlzdCBkYXMgUGFzc3dvcnQgdW5nJnV1bWw7bHRpZy4nOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lbGVuZ3RocyddID0gJ0JlaW0gVW50ZXItLyZVdW1sO2JlcnNjaHJlaXRlbiBkaWVzZXIgTCZhdW1sO25nZSBpc3QgZGVyIEJlbnV0emVybmFtZSB1bmcmdXVtbDtsdGlnLic7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ0YmdXVtbDtyIGRpZXNlcyBCZW51dHplcmtvbnRvIHd1cmRlIGtlaW5lIEVtYWlsYWRyZXNzZSBnZWZ1bmRlbi4nOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ0JlbnV0emVyICVzID0gJXMgaGluenVnZWYmdXVtbDtndCc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdCZW51dHplciB1aWQ9JXMgZ2VsJm91bWw7c2NodCc7CiRsYW5nWydwcm9wZXJ0eWZpbHRlciddID0gJ0VpZ2Vuc2NoYWZ0JzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdXZXJ0IChyZWd1bCZhdW1sO3JlciBBdXNkcnVjayknOwokbGFuZ1snd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnXSA9ICdXYXJudW5nOiBEaWVzZSBGZWxkZXIgYmVlaW5mbHVzc2VuIGRpZSBHciZvdW1sOyZzemxpZztlIGRlciBFaW5nYWJlZmVsZGVyIGluIEZvcm11bGFyZW4uICBEaWUgVmVycmluZ2VydW5nIGRpZXNlciBaYWhsIGlzdCBkYWhlciBhdWYgZWluZXIgYmVyZWl0cyBleGlzdGllcmVuZGVuIFNlaXRlIG5pY2h0IHJhdHNhbS4nOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ0FkbWluaXN0cmF0b3ItRWluc3RlbGx1bmdlbiAmYXVtbDtuZGVybj8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0RpZXNlIEVtYWlsYWRyZXNzZSBpc3QgYmVyZWl0cyBpbiBWZXJ3ZW5kdW5nLic7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJ0VtYWlsLUR1cGxpa2F0ZSBlcmxhdWJlbic7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoZXJsYXVidCBtZWhyZXJlbiBCZW51dHplcm4gZGllIE51dHp1bmcgZGVyIGdsZWljaGVuIEVtYWlsYWRyZXNzZSknOwokbGFuZ1snZXJyb3JfbWlzc2luZ3VzZXJuYW1lJ10gPSAnU2llIGhhYmVuIGtlaW5lbiBCZW51dHplcm5hbWVuIGVpbmdlZ2ViZW4uJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdwYXNzd29yZCddID0gJ1NpZSBoYWJlbiBrZWluIFBhc3N3b3J0IGVpbmdlZ2ViZW4uJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dvdXQnXSA9ICdGcm9udGVuZFVzZXIgLSBBYm1lbGR1bmcnOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ2dlZGluJ10gPSAnRnJvbnRlbmRVc2VyIC0gQW5tZWxkdW5nJzsKJGxhbmdbJ2VkaXRwcm9wX2luZm9tc2cnXSA9ICc8Zm9udCBjb2xvcj0mcXVvdDtyZWQmcXVvdDs+PGI+QUNIVFVORzwvYj4gV2VubiBTaWUgYmVyZWl0cyBleGlzdGllcmVuZGUgRWlnZW5zY2hhZnRlbiAmYXVtbDtuZGVybiwgZGllIHNjaG9uIEdydXBwZW4genVnZW9yZG5ldCBzaW5kLCBpc3QgZXMgbSZvdW1sO2dsaWNoLCBkYXMgSWhyZSBTZWl0ZSBtJm91bWw7Z2xpY2hlcndlaXNlIHplcnN0Jm91bWw7cnQgd2lyZCA8aT4oYmVzb25kZXJzLCB3ZW5uIFNpZSBkaWUgTCZhdW1sO25nZSBkZXIgRmVsZGVyIHJlZHV6aWVyZW4sIGV0YykuPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdEaWVzIGZ1bmt0aW9uaWVydCBOSUNIVCB1bnRlciBXaW5kb3dzLic7CiRsYW5nWydtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJ10gPSAnRXJzdGVsbGVuIFNpZSBuaWVtYWxzIGVpbmUgRWlnZW5zY2hhZnQgZiZ1dW1sO3IgZWluZW4gQmVudXR6ZXJuYW1lbiwgYXVjaCB3ZW5uIGVzIG1pdCBkZW0gRnJvbnRFbmRVc2Vycy1Nb2R1bCBtJm91bWw7Z2xpY2ggaXN0Lic7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnQmVudXR6ZXIgaW4gZWluZSBDU1YtRGF0ZWkgZXhwb3J0aWVyZW4nOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRXhwb3J0aWVyZW4nOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbmlzdHJhdG9yJzsKJGxhbmdbJ2VkaXRwcm9wJ10gPSAnRWlnZW5zY2hhZnQgYmVhcmJlaXRlbic7CiRsYW5nWydtYXhsZW5ndGgnXSA9ICdNYXhpbWFsZSBMJmF1bWw7bmdlJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdFcnN0ZWxsdCc7CiRsYW5nWydzb3J0YnknXSA9ICdTb3J0aWVyZW4gbmFjaCc7CiRsYW5nWydzb3J0J10gPSAnU29ydGllcnVuZyc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdCZW51dHplciBpbiBkZXIvZGVuIGF1c2dldyZhdW1sO2hsdGVuIEdydXBwZShuKSc7CiRsYW5nWyd1c2VybGltaXQnXSA9ICdFcmdlYm5pc3NlIGJlc2NociZhdW1sO25rZW4gYXVmJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ0YmdXVtbDtyIGRpZXNlbiBCZW51dHplciBrb25udGUgZGFzIEVtYWlsLUZlbGQgbmljaHQgZ2VmdW5kZW4gd2VyZGVuLiAgQml0dGUga29udGFrdGllcmVuIFNpZSBkZW4gU3lzdGVtYWRtaW5pc3RyYXRvci4nOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZiZ1dW1sO3IgZGFzIEZvcm11bGFyICZxdW90O1Bhc3N3b3J0IHZlcmdlc3NlbiZxdW90Oyc7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3NfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBmJnV1bWw7ciBkYXMgRm9ybXVsYXIgJnF1b3Q7RWluc3RlbGx1bmdlbiAmYXVtbDtuZGVybiZxdW90Oyc7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBkZXIgU2VpdGUsIGF1ZiBkaWUgbmFjaCBkZXIgQW5tZWxkdW5nIGdlc3BydW5nZW4gd2VyZGVuIHNvbGwnOwokbGFuZ1sncHJvbXB0X2xvZ291dF9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIGRlciBTZWl0ZSwgYXVmIGRpZSBuYWNoIGRlciBBYm1lbGR1bmcgZ2VzcHJ1bmdlbiB3ZXJkZW4gc29sbCc7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdSZWloZW5mb2xnZSBkZXIgU29ydGllcnVuZyc7CiRsYW5nWydwcm9tcHRfbnVtcmVzZXRyZWNvcmQnXSA9ICdFaW5lIEFuemFobCB2b24gQmVudXR6ZXJuIGlzdCBnZXJhZGUgZGFiZWksIElociB2ZXJsb3JlbmVzIFBhc3N3b3J0IHp1ciZ1dW1sO2NrenVzZXR6ZW4uIEFrdHVlbGwgc3RlaHQgZGVyIFomYXVtbDtobGVyIGF1ZjonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICdBbGxlIEVpbnRyJmF1bWw7Z2UgZW50ZmVybmVuLCBkaWUgJmF1bWw7bHRlciBhbHMgZWluZSBXb2NoZSBzaW5kJzsKJGxhbmdbJ3JlbW92ZTFtb250aCddID0gJ0FsbGUgRWludHImYXVtbDtnZSBlbnRmZXJuZW4sIGRpZSAmYXVtbDtsdGVyIGFscyBlaW4gTW9uYXQgc2luZCc7CiRsYW5nWydyZW1vdmVhbGwnXSA9ICdBbGxlIEVpbnRyJmF1bWw7Z2UgZW50ZmVybmVuJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTaW5kIFNpZSBzaWNoZXI/JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRjb2RlJ10gPSAnRXMgd3VyZGUgZWluIHVuZyZ1dW1sO2x0aWdlciBDb2RlIGVpbmdlZ2ViZW47IGJpdHRlIHZlcnN1Y2hlbiBTaWUgZXMgbm9jaCBlaW5tYWwuJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdGJnV1bWw7ciBJaHJlIEJlbnV0emVyLUlEIHd1cmRlIGtlaW4gdGVtcG9yJmF1bWw7cmVyIENvZGUgaW4gZGVyIERhdGVuYmFuayBnZWZ1bmRlbi4nOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdmVyaWZ5dGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBmJnV1bWw7ciBkaWUgQW56ZWlnZSBkZXMgJlV1bWw7YmVycHImdXVtbDtmdW5ncy1Gb3JtdWxhcnMnOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfZW1haWx0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGYmdXVtbDtyIGRpZSBFbWFpbCBiZWkgdmVyZ2Vzc2VuZW0gUGFzc3dvcnQnOwokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ0VudHdlZGVyIFNpZSBzZWxic3Qgb2RlciBqZW1hbmQgYW5kZXJlcyBoYXQgYmVyZWl0cyBkYXMgWnVyJnV1bWw7Y2tzZXR6ZW4gZGVzIFBhc3N3b3J0cyBmJnV1bWw7ciBkaWVzZSBLb250byBhdXNnZWwmb3VtbDtzdC4gUHImdXVtbDtmZW4gU2llIElocmVuIEVtYWlsLUVpbmdhbmcuIFNpZSBmaW5kZW4gZG9ydCB3ZWl0ZXJlIEFud2Vpc3VuZ2VuIHp1bSBadXImdXVtbDtja3NldHplbiBJaHJlcyBQYXNzd29ydGVzLic7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0ZW5iYW5rZmVobGVyJzsKJGxhbmdbJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCddID0gJ1NpZSBlcmhhbHRlbiBkaWVzZSBOYWNocmljaHQsIGRhIGplbWFuZCBhdWYgdW5zZXJlciBTZWl0ZSBhbmdlZ2ViZW4gaGF0LCBkYXNzIHNpZSBpaHIgUGFzc3dvcnQgdmVybG9yZW4gaGFiZW4uIEZhbGxzIGRpZXMgenV0cmlmZnQsIGxlc2VuIHNpZSBiaXR0ZSBkaWUgd2VpdGVyZW4gQW53ZWlzdW5nZW4uICBXZW5uIHNpZSBrZWluZSBBaG51bmcgaGFiZW4sIHdhcyBkYXMgaXN0LCBkYW5uIGwmb3VtbDtzY2hlbiBzaWUgc2ljaGVyaGVpdHNoYWxiZXIgZGllc2UgTmFjaHJpY2h0LiBXaXIgYmVkYW5rZW4gdW5zLCBkYXNzIHNpZSBzaWNoIGRpZSB6ZWl0IGdlbm9tbWVuIGhhYmVuLic7CiRsYW5nWydwcm9tcHRfY29kZSddID0gJ0NvZGUnOwokbGFuZ1snbWVzc2FnZV9jb2RlJ10gPSAnRGVyIGZvbGdlbmRlIENvZGUgd3VyZGUgenVmJmF1bWw7bGxpZyBnZW5lcmllcnQsIHVtIGRhcyBVc2VyLUtvbnRvIHp1ICZ1dW1sO2JlcnByJnV1bWw7ZmVuLiBXZW5uIFNpZSBhdWYgZGVuIGZvbGdlbmRlbiBMaW5rIGtsaWNrZW4sIGdlbGFuZ2VuIFNpZSBhdWYgZWluZSBTZWl0ZSwgd28gU2llIGRpZXNlbiBDb2RlIGVpbmdlYmVuIG0mdXVtbDtzc2VuLiBOb3JtYWxlcndlaXNlIGVudGgmYXVtbDtsdCBkYXMgRmVsZCBiZXJlaXRzIElocmVuIENvZGUuIEFiZXIgZmFsbHMgbmljaHQsIGxhdXRldCBkZXIgQ29kZTonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdFaW4gS2xpY2sgYXVmIGRlbiBmb2xnZW5kZW4gTGluayBicmluZ3QgU2llIGF1ZiBkaWUgV2Vic2VpdGUsIHdvIFNpZSBkZW4gdW50ZW5zdGVoZW5kZW4gQ29kZSBlaW5nZWJlbiB1bmQgZGFtaXQgSWhyIFBhc3N3b3J0IHp1ciZ1dW1sO2Nrc2V0emVuIGsmb3VtbDtubmVuOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnUGFzc3dvcnQgdmVybG9yZW4nOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdEYXMgQ01TTWFpbGVyLU1vZHVsIHd1cmRlIG5pY2h0IGdlZnVuZGVuLic7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICdFaW5lIEVtYWlsIG1pdCBJbmZvcm1hdGlvbmVuIHp1bSBadXImdXVtbDtja3NldHplbiBkZXMgUGFzc3dvcnRzIHd1cmRlIGFuICVzIHZlcnNhbmR0LiBWaWVsZW4gRGFuayEnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdTaWUgaGFiZW4gSWhyIFBhc3N3b3J0IHZlcmdlc3NlbiBvZGVyIHZlcmxvcmVuLiBHZWJlbiBTaWUgaGllciBJaHJlbiBVc2VybmFtZW4gZWluLiBXZW5uIHdpciBTaWUgaW0gU3lzdGVtIGZpbmRlbiwgZXJoYWx0ZW4gU2llIGVpbmUgRW1haWwgbWl0IHdlaXRlcmVuIEFud2Vpc3VuZ2VuIHp1bSBadXImdXVtbDtja3NldHplbiBkZXMgUGFzc3dvcnRzLic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGYmdXVtbDtyIHZlcmdlc3NlbmUgUGFzc3cmb3VtbDtydGVyJzsKJGxhbmdbJ2Vycm9yX3Byb3Bub3Rmb3VuZCddID0gJ0VpZ2Vuc2NoYWZ0ICVzIG5pY2h0IGdlZnVuZGVuJzsKJGxhbmdbJ3Byb3BzZm91bmQnXSA9ICdFaWdlbnNjaGFmdGVuIGdlZnVuZGVuJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdFaWdlbnNjaGFmdCBoaW56dWYmdXVtbDtnZW4nOwokbGFuZ1snZXJyb3JfcmVxdWlyZWRmaWVsZCddID0gJ0VpbiBlcmZvcmRlcmxpY2hlcyBGZWxkICglcykgd2FyIGxlZXIuJzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnVW0gSWhyIFBhc3N3b3J0IHp1ICZhdW1sO25kZXJuLCBnZWJlbiBTaWUgYml0dGUgaGllciBlaW4gbmV1ZXMgUGFzc3dvcnQgZWluLic7CiRsYW5nWydlcnJvcl9ub3Rsb2dnZWRpbiddID0gJ0VzIHNjaGVpbnQgc28sIGFscyBvYiBTaWUgbmljaHQgYW5nZW1lbGRldCBzaW5kLic7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnRWluc3RlbGx1bmdlbic7CiRsYW5nWyd1c2VyX3JlZ2lzdHJhdGlvbiddID0gJ1JlZ2lzdHJpZXJ1bmcnOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdEaWVzZXMgS29udG8gaXN0IGFiZ2VsYXVmZW4nOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ1VuZ2VuYXVlIEZvcm1hdGllcnVuZyBkZXIgRW1haWxhZHJlc3NlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRleHBpcnlkYXRlJ10gPSAnVW5nJnV1bWw7bHRpZ2VzIEFibGF1ZmRhdHVtJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5ncHJvcGVydHknXSA9ICdGZWhsZXIgYmVpbSBTZXR6ZW4gZGVyIEVpZ2Vuc2NoYWZ0ICVzIGYmdXVtbDtyIGRlbiBCZW51dHplciAkcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZ3JvdXBpZCddID0gJ1VuZyZ1dW1sO2x0aWdlIEJlbnV0emVyLUlEICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnS2VubnplaWNobnVuZyBkZXMgdmVyYm9yZ2VuZW4gRmVsZGVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkY29sb3InXSA9ICdGYXJiZSBkZXMgdmVyYm9yZ2VuZW4gRmVsZGVzJzsKJGxhbmdbJ2hpZGRlbiddID0gJ1ZlcmJvcmdlbic7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnRWluZSBFaWdlbnNjaGFmdCBtaXQgZGllc2VtIE5hbWVuIHd1cmRlIGJlcmVpdHMgZGVmaW5pZXJ0Lic7CiRsYW5nWydlcnJvcl9ub3Byb3BlcnRpZXMnXSA9ICdLZWluZSBFaWdlbnNjaGFmdGVuIGRlZmluaWVydCc7CiRsYW5nWydlcnJvcl9ub3JlbGF0aW9ucyddID0gJ0YmdXVtbDtyIGRpZXNlIEJlbnV0ZXpyZ3J1cHBlIHd1cmRlbiBrZWluZSBFaWdlbnNjaGFmdGVuIGF1c2dldyZhdW1sO2hsdC4nOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdCZW51dHplcmdydXBwZW4gZ2VmdW5kZW4nOwokbGFuZ1snZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCddID0gJ0RpZSBNaXRnbGllZHNjaGFmdCBpbiBpcmdlbmQgZWluZXIgR3J1cHBlIGlzdCBlcmZvcmRlcmxpY2guJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdFcmZvcmRlcnQgZGllIE1pdGdsaWVkc2NoYWZ0IGluIG1pbmRlc3RlbnMgZWluZXIgR3J1cHBlJzsKJGxhbmdbJ2JhY2snXSA9ICdadXImdXVtbDtjayc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnJXMgaXN0IGVpbiBlcmZvcmRlcmxpY2hlcyBGZWxkLic7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnRXJmb3JkZXJsaWNoZSBGZWxkZXIga2VubnplaWNobmVuIG1pdCc7CiRsYW5nWydyZXF1aXJlZGZpZWxkY29sb3InXSA9ICdFcmZvcmRlcmxpY2hlIEZlbGRlciBlaW5mJmF1bWw7cmJlbiBtaXQnOwokbGFuZ1snbmV4dCddID0gJ1dlaXRlcic7CiRsYW5nWydlcnJvcl9ncm91cGV4aXN0cyddID0gJ0VpbmUgR3J1cHBlIG1pdCBkaWVzZW0gTmFtZW4gZXhpc3RpZXJ0IGJlcmVpdHMuJzsKJGxhbmdbJ3JlcXVpcmVkJ10gPSAnRXJmb3JkZXJsaWNoZXMgRmVsZCc7CiRsYW5nWydvcHRpb25hbCddID0gJ09wdGlvbmFsJzsKJGxhbmdbJ29mZiddID0gJ0F1cyc7CiRsYW5nWydsZW5ndGgnXSA9ICdMJmF1bWw7bmdlJzsKJGxhbmdbJ2xlbmd0aGNvbW1lbnQnXSA9ICc8YnI+KFplaWNoZW4gaW4gZGVyIFRleHRlaW5nYWJlKSc7CiRsYW5nWydzZWxvcHRpb25zJ10gPSAnTGlzdGVuZmVsZC1PcHRpb25lbiwgZ2V0cmVubnQgbWl0IFplaWxlbnVtYnImdXVtbDtjaGVuJzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ3Byb21wdCddID0gJ0VpbmdhYmVhdWZmb3JkZXJ1bmcnOwokbGFuZ1sndHlwZSddID0gJ1R5cCc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydjaGVja2JveCddID0gJ0tvbnRyb2xsayZhdW1sO3N0Y2hlbic7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsYWRyZXNzZSc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHRmZWxkJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnTGlzdGVuZmVsZCc7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ1dpbGxrb21tZW4nOwokbGFuZ1snbG9nb3V0J10gPSAnQWJtZWxkZW4nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzJ10gPSAnTWVpbmUgRWluc3RlbGx1bmdlbiAmYXVtbDtuZGVybic7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0FubWVsZHVuZyBnZXNjaGVpdGVydCAtIHVuZyZ1dW1sO2x0aWdlciBVc2VybmFtZSBvZGVyIHVuZyZ1dW1sO2x0aWdlcyBQYXNzd29ydD8nOwokbGFuZ1snbG9naW4nXSA9ICdBbm1lbGRlbic7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdCZW51dHplcm5hbWUnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFzc3dvcnQnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdSZWdpc3RyaWVyZW4nOwokbGFuZ1snZm9yZ290cHcnXSA9ICdIYWJlbiBTaWUgSWhyIFBhc3N3b3J0IHZlcmdlc3Nlbj8nOwokbGFuZ1snZGVmYXVsdHMnXSA9ICdTdGFuZGFyZHMnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl91c2Vybm90Zm91bmQnXSA9ICdEaWUgQmVudXR6ZXItSUQgd3VyZGUgbmljaHQgZ2VmdW5kZW4uJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdEaWVzZXIgQmVudXR6ZXJuYW1lICglcykgaXN0IGJlcmVpdHMgaW4gVmVyd2VuZHVuZy4nOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1NNVFAgdmVyd2VuZGVuLCB1bSBkaWUgRW1haWxhZHJlc3NlbiBhdWYgRyZ1dW1sO2x0aWdrZWl0IHp1IHByJnV1bWw7ZmVuPyc7CiRsYW5nWydwcm9tcHRfbWlucHdsZW4nXSA9ICdNaW5pbWFsZSBMJmF1bWw7bmdlIGRlcyBQYXNzd29ydHMnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWF4aW1hbGUgTCZhdW1sO25nZSBkZXMgUGFzc3dvcnRzJzsKJGxhbmdbJ3Byb21wdF9taW51bmxlbiddID0gJ01pbmltYWxlIEwmYXVtbDtuZ2UgZGVzIFVzZXJuYW1lbnMnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTWF4aW1hbGUgTCZhdW1sO25nZSBkZXMgVXNlcm5hbWVucyc7CiRsYW5nWydwcm9tcHRfc2Vzc2lvbnRpbWVvdXQnXSA9ICdBdXN6ZWl0IGYmdXVtbDtyIFNpdHp1bmdlbiAoU2VrdW5kZW4pJzsKJGxhbmdbJ3Byb21wdF9hbGxvd2VtYWlscmVnJ10gPSAnRW1haWwtUmVnaXN0cmllcnVuZyBlcmxhdWJlbic7CiRsYW5nWydwcm9tcHRfZGZsdGdyb3VwJ10gPSAnU3RhbmRhcmQtQmVudXR6ZXJncnVwcGUgZiZ1dW1sO3IgbmV1ZSBVc2VyJzsKJGxhbmdbJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUgZiZ1dW1sO3IgRWluc3RlbGx1bmdlbiAmYXVtbDtuZGVybic7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnRGllIFBhc3N3Jm91bWw7cnRlciBzdGltbWVuIG5pY2h0ICZ1dW1sO2JlcmVpbi4nOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnVW5nJnV1bWw7bHRpZ2VyIEJlbnV0emVybmFtZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICdVbmcmdXVtbDtsdGlnZXMgUGFzc3dvcnQnOwokbGFuZ1snZWRpdHVzZXInXSA9ICdCZW51dHplciBiZWFyYmVpdGVuJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnRyZ1dW1sO2x0aWcnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdCZW51dHplciBuYW1lJzsKJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXR1cyc7CiRsYW5nWydlcnJvcl9tZW1iZXJncm91cHMnXSA9ICdEaWVzZXIgQmVudXR6ZXIgaXN0IG5pY2h0IE1pdGdsaWVkIGlyZ2VuZCBlaW5lciBCZW51dHplcmdydXBwZS4nOwokbGFuZ1snZXJyb3JfcHJvcGVydGllcyddID0gJ0tlaW5lIEVpZ2Vuc2NoYWZ0ZW4nOwokbGFuZ1sndmFsdWUnXSA9ICdXZXJ0JzsKJGxhbmdbJ2dyb3VwcyddID0gJ0JlbnV0emVyZ3J1cHBlbic7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnRWlnZW5zY2hhZnRlbic7CiRsYW5nWydwcm9wbmFtZSddID0gJ05hbWUgZGVyIEVpZ2Vuc2NoYWZ0JzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ1dlcnQgZGVyIEVpZ2Vuc2NoYWZ0JzsKJGxhbmdbJ2FkZCddID0gJ0hpbnp1ZiZ1dW1sO2dlbic7CiRsYW5nWydlZGl0J10gPSAnQmVhcmJlaXRlbic7CiRsYW5nWydleHBpcmVzJ10gPSAnQWJsYXVmJzsKJGxhbmdbJ3NwZWNpZnlfZGF0ZSddID0gJ0RhdHVtIGZlc3RsZWdlbic7CiRsYW5nWycxMmhycyddID0gJzEyIFN0dW5kZW4nOwokbGFuZ1snMjRocnMnXSA9ICcyNCBTdHVuZGVuJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggU3R1bmRlbic7CiRsYW5nWycxd2VlayddID0gJzEgV29jaGUnOwokbGFuZ1snMndlZWtzJ10gPSAnMiBXb2NoZW4nOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBNb25hdCc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBNb25hdGUnOwokbGFuZ1snNm1vbnRocyddID0gJzYgTW9uYXRlJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSBKYWhyJzsKJGxhbmdbJ25ldmVyJ10gPSAnTmllbWFscyc7CiRsYW5nWydwb3N0aW5zdGFsbG1lc3NhZ2UnXSA9ICdEYXMgTW9kdWwgd3VyZGUgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQuPGJyLz5TdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgU2llIGRpZSBCZXJlY2h0aWd1bmcgJnF1b3Q7TW9kaWZ5IEZyb250RW5kVXNlciBQcm9wZXJ0aWVzJnF1b3Q7IGdlc2V0enQgaGFiZW4uJzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnUGFzc3dvcnQnOwokbGFuZ1sncmVwZWF0cGFzc3dvcmQnXSA9ICdOb2NoIGVpbm1hbCc7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnRWluZSBCZW51dHplcmdydXBwZSBtaXQgZGllc2VtIE5hbWVuIGV4aXN0aWVydCBiZXJlaXRzLic7CiRsYW5nWydlZGl0Z3JvdXAnXSA9ICdCZW51dHplcmdydXBwZSBiZWFyYmVpdGVuJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0Fic2VuZGVuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FiYnJlY2hlbic7CiRsYW5nWydkZWxldGUnXSA9ICdMJm91bWw7c2NoZW4nOwokbGFuZ1snY29uZmlybV9lZGl0Z3JvdXAnXSA9ICdTaW5kIFNpZSBzaWNoZXIsIGRhc3MgZGFzIHJpY2h0aWdlbiBFaW5zdGVsbHVuZ2VuIGYmdXVtbDtyIGRpZXNlIEJlbnV0emVyZ3J1cHBlIHNpbmQ/XG5EYXMgRGVha3RpdmllcmVuIGVpbmVyIEVpZ2Vuc2NoYWZ0IGwmb3VtbDtzY2h0IGtlaW5lIEVpbnRyJmF1bWw7Z2UgaW4gZGVyIEVpZ2Vuc2NoYWZ0ZW50YWJlbGxlIGYmdXVtbDtyIGRpZXNlIEJlbnV0emVyZ3J1cHBlIC8gZGllc2VuIEJlbnV0emVyLiBTaWUgc2luZCBsZWRpZ2xpY2ggbmljaHQgbWVociB2ZXJmJnV1bWw7Z2Jhci4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJ1NpbmQgU2llIHNpY2hlciwgZGFzcyBTaWUgZGllc2UgQmVudXR6ZXJncnVwcGUgbCZvdW1sO3NjaGVuIHdvbGxlbj8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfcHJvcCddID0gJ1NpbmQgU2llIHNpY2hlciwgZGFzcyBTaWUgZGllc2UgRWlnZW5zY2hhZnQga29tcGxldHQgbCZvdW1sO3NjaGVuIHdvbGxlbj9cbkZhbGxzIGphLCB3aXJkIGF1Y2ggamVkZXIgVXNlcmVpbnRyYWcgZiZ1dW1sO3IgZGllc2UgRWlnZW5zY2hhZnQgZ2VsJm91bWw7c2NodC4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnVW56dXJlaWNoZW5kZSBQYXJhbWV0ZXInOwokbGFuZ1snaWQnXSA9ICdJRCc7CiRsYW5nWyduYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydlcnJvcl9jYW50YWRkZ29ydXAnXSA9ICdQcm9ibGVtIGJlaW0gSGluenVmJnV1bWw7Z2VuIGVpbmVyIEJlbnV0emVyZ3J1cHBlICc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnVW5nJnV1bWw7bHRpZ2UgUGFyYW1ldGVyJzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnQW53ZW5kZW4nOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3VzZXJmaWx0ZXInXSA9ICdCZW51dHplcm5hbWUgcmVndWwmYXVtbDtyZXIgQXVzZHJ1Y2snOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNjaHJlaWJ1bmcnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnTmFtZSBkZXIgQmVudXR6ZXJncnVwcGUgJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1p1Z3JpZmYgdmVyd2VpZ2VydCc7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlcic7CiRsYW5nWydhZGRncm91cCddID0gJ0VpbmUgQmVudXR6ZXJncnVwcGUgaGluenVmJnV1bWw7Z2VuJzsKJGxhbmdbJ2FkZHVzZXInXSA9ICdFaW5lbiBCZW51dHplciBoaW56dWYmdXVtbDtnZW4nOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ0JlbnV0emVyIGdlZnVuZGVuLCBkaWUgZGVuIEtyaXRlcmllbiBlbnRzcHJlY2hlbic7CiRsYW5nWydncm91cCddID0gJ0JlbnV0emVyZ3J1cHBlICc7CiRsYW5nWydzZWxlY3Rncm91cCddID0gJ0JlbnV0emVyZ3J1cHBlIGF1c3cmYXVtbDtobGVuJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ1JlZ2lzdHJpZXJ1bmdzLVRlbXBsYXRlJzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ0FibWVsZHVuZ3MtVGVtcGxhdGUnOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICdBbm1lbGR1bmdzLVRlbXBsYXRlJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnRWluc3RlbGx1bmdlbic7CiRsYW5nWyd1c2VycyddID0gJ0JlbnV0emVyJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kVXNlci1WZXJ3YWx0dW5nJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVmVyd2FsdGV0IGRpZSBGcm9udGVuZC1CZW51dHplcic7CiRsYW5nWydkZWZhdWx0ZnJvbnRwYWdlJ10gPSAnU3RhbmRhcmQtU3RhcnRzZWl0ZSc7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnTGV0enRlIFNlaXRlLCBhdWYgZGllIHp1Z2VncmlmZmVuIHd1cmRlJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ0FuZGVyZSBTZWl0ZTogJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT4wLjAuMSAtIE9jdG9iZXIsIDIwMDUgLSBJbml0aWFsIE5SUFQgKE5vdCBSZWFkeSBmb3IgUHJpbWUgVGltZSkgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjAgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCByZWxlYXNlPC9saT4NCjxsaT4wLjEuMSAtIE9jdG9iZXIsIDIwMDUgLSBGaXhlZCBpc3N1ZXMgd2l0aCBwcm9wZXJ0aWVzPC9saT4NCjxsaT4wLjEuMiAtIE9jdG9iZXIsIDIwMDUgLSBBZGRlZCBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eTwvbGk+DQo8bGk+PHA+MC4xLjMgLSBOb3ZlbWJlciwgMjAwNTwvcD4NCiAgICA8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgcmVkaXJlY3QgcGFnZSBvbiBsb2dpbiwgbG9nb3V0LCBmb3Jnb3QgcGFzc3dvcmQsIGFuZCBjaGFuZ2Ugc2V0dGluZ3MsIGFuZCBhZGRlZCB0aGUgcmV0dXJudG8gYW5kIGZvcm0gcGFyYW1ldGVycyB0byB0aGUgdXNlciBzaWRlIG9mIHRoaW5ncywgYWxzbyBkaWQgYSBjb3VwbGUgbGYgbGl0dGxlIGNsZWFudXBzLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIHYwLjExIGFuZCBhYm92ZSBmb3IgY2VydGFpbi48L3A+PC9saT4NCjxsaT4wLjEuNCAtIE5vdmVtYmVyLCAyMDA1IC0gVmVyeSBtaW5vciBjaGFuZ2Ugd2l0aCByZXNwZWN0IHRvIGEgZm9yZ290dGVuIGFuZCBubyBsb25nZXIgbmVlZGVkIGZ1bmN0aW9uIGNhbGw8L2xpPg0KPGxpPjxwPjAuMS41IC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QW5vdGhlciB2ZXJ5IG1pbm9yIGNoYW5nZSwgYWRkZWQgc29tZSB0ZXh0IHRvIHRoZSBQb3N0SW5zdGFsbCBtZXNzYWdlLjwvcD48L2xpPg0KPGxpPjxwPjAuMS42IC0gSmFudWFyeSwgMjAwNjxwPg0KICAgIDxwPkNoYW5nZXMgdG8gdGhlIHBlcm1pc3Npb24gbW9kZWwsIGFuZCBtaW5vciBidWcgZml4ZXMgdG8gdGhlIHByZWZlcmVuY2VzLiAgQWxzbyBzb21lIHBocDUgZml4ZXMgYnV0IEkgYW0gc3VyZSB0aGF0IHRoZXJlIGFyZSBtb3JlIG91dCB0aGVyZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNyAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5NYW55IHRoYW5rcyB0byA8Yj5rYXRvbjwvYj4gZm9yIGFkZGluZyB0aGUgdGV4dGFyZWEgYW5kIGRyb3Bkb3duIHByb3BlcnR5IHR5cGVzLjwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgcHJvcGVydHkgYWRkaW5nIHRvIGZpeCBwcm9ibGVtcyB3aXRoIHNwYWNlcyBpbiBwcm9wZXJ0eSBuYW1lcyAod2Ugbm8gbG9uZ2VyIGxldCB0aGF0IGhhcHBlbikuPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMCAtIEZlYnJ1YXJ5LCAyMDA2PHA+DQogICAgPHA+QWRkZWQgZmlsdGVyaW5nIGFuZCByb3cgbGltaXRpbmcgdG8gdGhlIGFkbWluIHBhbmVsLiBUaGlzIHdpbGwgaGF2ZSBiaWcgYmVuZWZpdHMgdG8gdGhvc2UgdGhhdCBhcmUgdXNpbmcgdGhpcyBtb2R1bGUgZm9yIGhpZ2ggdHJhZmljLCBhbmQgaGlnaCB1c2VyIHNpdGVzLjwvcD4NCiAgICA8cD5BZGRlZCBzb3J0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbDwvcD4NCiAgICA8cD5BZGRlZCBtYXggbGVuZ3RoIGFiaWxpdHkgdG8gdGV4dCBhbmQgZW1haWwgZmllbGRzPC9wPg0KICAgIDxwPkZpeGVkIGEgc21hbGwgcHJvYmxlbSB3aXRoIHRoZSBkZWZhdWx0IGdyb3VwIG5vdCBiZWluZyBjaGVja2VkIHdoZW4gYWRkaW5nIGEgdXNlcjwvcD4NCiAgICA8cD5TYXZlIGZpbHRlciBzZXR0aW5ncyBpbiBwcmVmZXJlbmNlcywgYW5kIHRoZSBhY3RpdmUgdGFiIHRvby48L3A+DQogICAgPHA+RGVsZXRlIHVzZXIgcHJvcGVydGllcyB3aGVuIGEgcHJvcGVydHkgaXMgZGVsZXRlZCA8ZW0+Tm90ZTwvZW0+LCBub3Qgd2hlbiBpdCBpcyBkaXNhYmxlZCBpbiB0aGUgZWRpdCBncm91cCBkaWFsb2c8L3A+DQogICAgPHA+QWRkIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGluIGVkaXQgZ3JvdXBzLjwvcD4NCiAgICA8cD5BZGRlZCBhIGNvdXBsZSBtb3JlIGNvbmZpcm1hdGlvbiBtZXNzYWdlcy48L3A+DQogICAgPHA+QWRkZWQgQ1NWIEV4cG9ydCBvcHRpb248L3A+DQogICAgPHA+VG9kbyAtIEFkZCBwcmVmZXJlbmNlcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkbGVuZ3RoPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMSAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZSBlbWFpbCBhZGRyZXNzZXM8L3A+DQogICAgPHA+Rml4IHByb2JsZW0gd2hlcmUgZXhwaXJ5IGRhdGUgd2FzIGJlaW5nIG1vZGlmaWVkIHdoZW4gYWRtaW4gbW9kaWZpZWQgdXNlciBzZXR0aW5nczwvcD4NCiAgICA8cD5BZGQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcHJlZmVyZW5jZXMgc3VibWl0IGJ1dHRvbjwvcD4NCiAgICA8cD5GaXhlZCBhIG1pbm9yIGJ1ZyB3aGVuIGNvdXRpbmcgdGhlIG51bWJlciBvZiB1c2VycyBpbiBhIGdyb3VwPC9wPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBzaXplIG9mIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZHMsIGFuZCBtYXhsZW5ndGg8L3A+DQogICAgPHA+QWRkZWQgYWR2YW5jZWQgZmlsdGVyaW5nIG9uIHByb3BlcnRpZXM8L3A+DQogICAgPHA+Q2hhbmdlcyB0byBsYWJlbGluZyBpbiBhZGQgb3IgZWRpdCB1c2VyPC9wPg0KICAgIDxwPkZpeGVzIHRvIHByb2JsZW1zIHdpdGggaW5saW5lIGFuZCBub24gaW5saW5lIGZvcm1zLCB0aGUgcGFzc3dvcmQgaXMgbmV2ZXIgc2VudCBvbiB0aGUgZ2V0IGxpbmU8L3A+DQogICAgPHA+Q2hhbmdlZCB0byByZXF1aXJlIENNUyAwLjEyLWJldGEyIGF0IGEgbWluaW11bSAoZm9yIHNhZmV0eSBwdXJwb3Nlcyk8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4yIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5Nb3JlIGZpZWxkIGxlbmd0aCBmaXhlczwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjMgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPkV4cG9ydCB0byBzbWFydHkgYWxsIG9mIHRoZSB1c2VyIHByb3BlcnRpZXMgd2hlbiB0aGV5IGFyZSBsb2dnZWQgaW48L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC40IC0gTWF5LCAyMDA2PHA+DQogICAgPHA+Rml4ZXMgdG8gdGhlIGV4cG9ydCBjb2RlPC9wPg0KICAgIDxwPkNvZGUgY2xlYW51cCAoYWxwaGFiZXRpemUgZnVuY3Rpb25zKTwvcD4NCiAgICA8cD5NaW5vciBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzIChyZWNvbW1lbmRlZCBieSBuaWxzNzMpIGZvciBkZWFsaW5nIHdpdGggdGhlIGNoYW5nZSBwYXNzd29yZCBzdHVmZi48L3A+DQogICAgPHA+UmVtb3ZlZCB0aGUgcmVxdWlyZW1lbnQgZm9yIENNUyAwLjEyLCBhbmQgcHV0IGl0IGJhY2sgdG8gMC4xMS4yPC9wPg0KICAgIDxwPkFkZGVkIHRoZSBcJiMwMzk7c2lsZW50XCYjMDM5OyBmb3JtPC9wPg0KICAgIDxwPkNsZWFuZWQgdXAgZGF0YWJhc2UgYWNjZXNzIHN0dWZmIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIChob3BlZnVsbHkpPC9wPg0KICAgIDxwPkFkZGVkIGNvcHlyaWdodCBpbmZvPC9wPg0KICAgIDxwPkFkZGVkIG1hY3JvcyBmb3IgcmVkaXJlY3RvIHRvIGEgdXNlciBzcGVjaWZpYyBwYWdlIG9uIGxvZ2luIG9yIGxvZ291dDwvcD4NCiAgICA8cD5Ud2Vha3MgdG8gdGhlIGFkbWluIHByZWZlcmVuY2VzIHRhYjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjUgLSBNYXksIDIwMDY8L3A+DQogICAgPHA+Rml4ZWQgYSBwcm9ibGVtIHdpdGggZXhwaXJ5IGRhdGVzPC9wPg0KICAgIDxwPlN0YXJ0IHNwbGl0dGluZyB0aGUgY29kZSB1cCBpbnRvIHNldmVyYWwgZmlsZXM8L3A+DQo8bGk+PHA+MS4wLjYgLSBNYXksIDIwMDY8L3A+DQogICAgPHA+Rml4ZWQgYSBwcm9ibGVtIHdpdGggZWRpdGluZyBkcm9wZG93bnM8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMS4wIC0gTWF5LCAyMDA2PC9wPg0KICAgIDxwPkV2ZW50czwvcD4NCiAgICA8cD5PcHRpb25hbGx5IGRpc2FsbG93IHJlcGVhdGVkIGxvZ2luczwvcD4NCiAgICA8cD5FeHBvcnQgdGhlIHVzZXIgaWQgdG8gc21hcnR5PC9wPg0KICAgIDxwPkFkZGVkIG9wdGlvbmFsbHkgeyRncm91cFx9IGZvciB0aGUgcGFnZXMgdG8ganVtcCB0byBvbiBsb2dpbjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4xLjEgLSBTZXB0LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVkIGEgYnVnIHdoZW4gYSB1c2VyIHdhcyBlZGl0aW5nIGhpcyBzZXR0aW5ncyB3aXRoIFwmIzAzOTthbGxvdyBkdXBsaWNhdGUgZW1haWxzXCYjMDM5OyB3YXMgb2ZmPC9wPg0KICAgIDxwPkNoYW5nZWQgdGhlIGRyb3Bkb3duIHRhYmxlIHRvIDI1NSBjaGFyYWN0ZXJzPC9wPg0KICAgIDxwPk1pbm9yIGNsZWFudXBzPC9wPg0KPC9saT4NCjxsaT48cD4xLjEuMiAtIE9jdCwgMjAwNjwvcD4NCiAgICA8cD5GaXhlcyAoaG9wZWZ1bGwpIHRvIHRoZSBhZG9kYi9hZG9kYi1saXRlIERBVEVUSU1FIGlzc3VlPC9wPg0KPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2FzIG1hY2h0IGRpZXNlcyBNb2R1bD88L2gzPg0KPHA+RGllc2VzIE1vZHVsIGVybGF1YnQgZGllIFZlcndhbHR1bmcgdW5kIEFkbWluaXN0cmF0aW9uIHZvbiBGcm9udEVuZC1CZW51dHplcm4gPGk+KD1CZW51dHplciwgZGllIGtlaW5lbiBadWdyaWZmIGF1ZiBkaWUgQWRtaW5pc3RyYXRpb24gaGFiZW4pPC9pPi4gRXMgZXJtJm91bWw7Z2xpY2h0IHp1bSBlaW5lbiBkYXMgRXJzdGVsbGVuIHZvbiBCZW51dHplcmdydXBwZW4gdW5kIEJlbnV0emVya29udGVuIHVuZCB6dW0gYW5kZXJlbiBkYXMgQW4tIHVuZCBBYm1lbGRlbiB2b24gQmVudXR6ZXJuLiBJbiBWZXJiaW5kdW5nIG1pdCBkZW0gQ3VzdG9tQ29udGVudC1Nb2R1bCBrJm91bWw7bm5lbiB1bnRlcnNjaGllZGxpY2hlbiBCZW51dHplcm4gdW50ZXJzY2hpZWRsaWNoZSBJbmhhbHRlIGFuZ2V6ZWlndCB3ZXJkZW4sIGpld2VpbHMgaW4gQWJoJmF1bWw7bmdpZ2tlaXQgZGF2b24sIG9iIGRlciBCZW51dHplciBhbmdlbWVsZGV0IGlzdCBvZGVyIG5pY2h0IGJ6dy4gd2VsY2hlciBCZW51dHplcmdydXBwZSBlciBhbmdlaCZvdW1sO3J0LjwvcD4NCjxoMz5GZWF0dXJlczwvaDM+DQo8dWw+DQo8bGk+PHA+QWJsYXVmIGRlciBCZW51dHplcmtvbnRlbi4gSGllcm1pdCBrJm91bWw7bm5lbiBTaWUgemVpdGxpY2ggYmVzY2hyJmF1bWw7bmt0IGVpbmVuIFVzZXIgZXJzdGVsbGVuLjwvcD48L2xpPg0KPGxpPjxwPkJlbnV0emVyZ3J1cHBlbmVpZ2Vuc2NoYWZ0ZW4uIFNpZSBrJm91bWw7bm5lbiB2b24gZGVuIE1pdGdsaWVkZXJuIHVudGVyc2NoaWVkbGljaGUgR3J1cHBlbiB1bmQgdW50ZXJzY2hpZWRsaWNoZSBJbmZvcm1hdGlvbmVuIGFiZnJhZ2VuLjwvcD48L2xpPg0KPGxpPjxwPkh1bmRlcnRlIHZvbiBVc2VybiBzaW5kIG0mb3VtbDtnbGljaC48L3A+PC9saT4NCjxsaT48cD5oYXQgZWluZSB1bWZhbmdyZWljaGUgQVBJIGYmdXVtbDtyIGRhcyBIaW56dWYmdXVtbDtnZW4gdm9uIEZ1bmt0aW9uZW48L3A+PC9saT4NCjwvdWw+DQo8aDM+V2llIHdpcmQgZXMgZWluZ2VzZXR6dCA/PC9oMz4NCjx1bD4NCjxsaT48cD5OYWNoIGRlciBJbnN0YWxsYXRpb24gayZvdW1sO25uZW4gU2llIHVudGVyIGRlbSBNZW4mdXVtbDsgJnF1b3Q7VXNlciAmYW1wOyBHcnVwcGVuJnF1b3Q7IGF1ZiBkaWUgQWRtaW5pc3RyYXRpb24gZGVzIEZyb250RW5kVXNlcnMtTW9kdWxzIHp1Z3JlaWZlbi48L3A+PC9saT4NCjxsaT4NCjxwPlp1biZhdW1sO2Noc3Qgc29sbHRlbiBTaWUgRWlnZW5zY2hhZnRlbiBkZWZpbmllcmVuLiBFaWdlbnNjaGFmdGVuIHNpbmQgZ3J1bmRzJmF1bWw7dHpsaWNoIEZlbGRkZWZpbml0aW9uZW4sIG1pdCBkZW5lbiBTaWUgZGVuIFR5cCBkZXIgenUgZXJmYXNzZW5kZW4gSW5mb3JtYXRpb25lbiB1bmQgZGVyZW4gQmVzY2hyJmF1bWw7bmt1bmdlbiBmZXN0bGVnZW4gayZvdW1sO25uZW4gd2llIHp1bSBCZWlzcGllbDogTmFtZSwgQWx0ZXIsIFN0YWR0LCBCdW5kZXNsYW5kLCBTdGFhdCwgRW1haWxhZHJlc3NlIHVzdy48L3A+DQo8cD48Yj5IaW53ZWlzOjwvYj4gRiZ1dW1sO3IgZGVuIEJlbnV0emVybmFtZW4gdW5kIGRhcyBQYXNzd29ydCBtJnV1bWw7c3NlbiBTaWUga2VpbmUgRWlnZW5zY2hhZnRlbiBmZXN0bGVnZW47IGRpZXMgd2lyZCBiZXJlaXRzIHZvbSBNb2R1bCBlcmxlZGlndC48L2I+DQo8L2xpPg0KPGxpPjxwPkFscyBOJmF1bWw7Y2hzdGVzIHNvbGx0ZW4gU2llIGVpbmUgb2RlciBtZWhyZXJlIEJlbnV0emVyZ3J1cHBlbiBlcnN0ZWxsZW4uIFdlbm4gU2llIGVpbmUgR3J1cHBlbiBlcnN0ZWxsZW4sIHdlcmRlbiBTaWUgbmFjaCBkZW0gQmVudXR6ZXJncnVwcGVubmFtZW4sIGVpbmVyIEJlc2NocmVpYnVuZyBzb3dpZSBkZW4gZGVyIEJlbnV0emVyZ3J1cHBlIHp1enVvcmRuZW5kZW4gRWlnZW5zY2hhZnRlbiB1bmQgZGVzc2VuIFNvcnRpZXJ1bmcgZ2VmcmFndC4gT3B0aW9uYWwgc2luZCBhdWNoIFBmbGljaHQtIG9kZXIgdmVyYm9yZ2VuZSBGZWxkZXIgbSZvdW1sO2dsaWNoIDxpPiggYXVjaCBvZmYgaXN0IGcmdXVtbDtsdGlnKTwvaT48L3A+PC9saT4NCjxsaT48cD48Yj5IaW53ZWlzOjwvYj4gQmV2b3IgU2llIHdlaXRlciBtYWNoZW4sIHNvbGx0ZW4gU2llIHNpY2hlciBzZWluLCBkYXNzIGRpZSBFaW5zdGVsbHVuZ2VuIGtvcnJla3QgZ2VzZXR6dCBzaW5kLjwvcD48L2xpPg0KPGxpPjxwPkFuc2NobGllJnN6bGlnO2VuZCBzb2xsdGVuIFNpZSBlaW4gcGFhciBCZW51dHplciBlcnN0ZWxsZW4uIEJlbnV0emVyIHdlcmRlbiBpbiB6d2VpIFNjaHJpdHRlbiBoaW56dWdlZiZ1dW1sO2d0LiBXZW5uIFNpZSBlaW5lbiBCZW51dHplciBlcnN0ZWxsZW4sIHdlcmRlbiBTaWUgbmFjaCBkZW0gQmVudXR6ZXJuYW1lbiB1bmQgZGVtIFBhc3N3b3J0IHNvd2llIG5hY2ggZWluZW0gQWJsYXVmZGF0dW0gZiZ1dW1sO3IgZGllc2VuIEJlbnV0emVyIGdlZnJhZ3QuIERhbm4gbSZ1dW1sO3NzZW4gU2llIG5vY2ggZGllIEdydXBwZW4gYXVzdyZhdW1sO2hsZW4sIGluIHdlbGNoZW4gZGVyIEJlbnV0emVyIE1pdGdsaWVkIHNlaW4gc29sbC4gS2xpY2tlbiBTaWUgZGFubiBhdWYgXCYjMDM5O1dlaXRlclwmIzAzOTs8L3A+DQo8cD48ZW0+SGlud2VpczogPC9lbT5EYXMgaXN0IGVpbiBzZWhyIGFyYmVpdHNpbnRlbnNpdmVyIHVuZCBsYW5nd2VpbGlnZXIgUHJvemVzcy4gRXMgaXN0IGRhaGVyIGVpbmZhY2hlciwgd2VubiBTaWUgc2ljaCBkaWUgQmVudXR6ZXIgc2VsYnN0IHJlZ2lzdHJpZXJlbiBsYXNzZW4uIFNpZSBtJnV1bWw7c3NlbiBkaWUgQmVudXR6ZXIgZGFubiBudXIgbm9jaCBlaW5lciBvZGVyIG1laHJlcmVuIEJlbnV0emVyZ3J1cHBlbiB6dW9yZG5lbi4gQWJlciAgZXJzdGVsbGVuIFNpZSBiaXR0ZSBmJnV1bWw7ciBUZXN0endlY2tlIG1pbmRlc3RlbnMgZWluZW4gQmVudXR6ZXIuPC9wPjwvbGk+DQo8bGk+PHA+TmFjaGRlbSBkYXMgU3lzdGVtIGFsbGUgZiZ1dW1sO3IgZGllc2VuIEJlbnV0emVyIG5vdHdlbmRpZ2VuIEZlbGRlciBiZXN0aW1tdCBoYXQsIHdpcmQgSWhuZW4gZWluIEZvcm11bGFyIG1pdCBkZW4gZXJmb3JkZXJsaWNoZW4gSW5mb3JtYXRpb25lbiAmdXVtbDtiZXIgZGVuIEJlbnV0emVyIGFuZ2V6ZWlndC4gTWl0IGRlciBLb21wbGV0dGllcnVuZyBkaWVzZXMgRm9ybXVsYXJzIHdpcmQgZGFzIEhpbnp1ZiZ1dW1sO2dlbiBlaW5lcyBCZW51dHplcnMgYWJnZXNjaGxvc3Nlbi48L3A+PC9saT4NCjxsaT48cD5TaWUgayZvdW1sO25uZW4gamV0enQgZGllIEZ1bmt0aW9uIGRlcyBGcm9udEVuZC1Nb2R1bHMgYXVmIElocmVyIFNlaXRlIG51dHplbi4gSGllcnp1IG0mdXVtbDtzc2VuIFNpZSBlaW5mYWNoIG51ciBkZW4gVGFnIHtjbXNfbW9kdWxlIG1vZHVsZT1Gcm9udEVuZFVzZXJzfSBpbiBJaHJlIFNlaXRlIG9kZXIgVGVtcGxhdGUgZWluZiZ1dW1sO2dlbi48L3A+PC9saT4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5EaWVzZXMgTW9kdWwgYmVpbmhhbHRldCBrZWluZW4ga29tbWVyemllbGxlbiBTdXBwb3J0LiBTaWUgayZvdW1sO25uZW4gamVkb2NoICZ1dW1sO2JlciBmb2xnZW5kZSBNJm91bWw7Z2xpY2hrZWl0ZW4gSGlsZmUgenUgZGVtIE1vZHVsIGVyaGFsdGVuOjwvcD4NCjx1bD4NCjxsaT5GJnV1bWw7ciBkaWUgbGV0enRlIFZlcnNpb24gZGllc2VzIE1vZHVscywgRkFRcywgZGVtIFZlcnNhbmQgZWluZXMgRmVobGVycmVwb3J0cyBvZGVyIGRlbSBLYXVmIGtvbW1lcnppZWxsZW4gU3VwcG9ydCBiZXN1Y2hlbiBzaWUgYml0dGUgY2FsZ3V5cyBIb21lcGFnZSB1bnRlciA8YSBocmVmPSZxdW90O2h0dHA6Ly90ZWNoY29tLmR5bmRucy5vcmcmcXVvdDs+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPg0KPGxpPkVpbmUgd2VpdGVyZSBEaXNrdXNzaW9uIHp1IGRpZXNlbSBNb2R1bCBpc3QgYXVjaCBpbiBkZW4gRm9yZW4gdm9uIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZTwvYT4genUgZmluZGVuLjwvbGk+DQo8bGk+RGVyIEF1dG9yIGNhbGd1eTEwMDAsIGlzdCBoJmF1bWw7dWZpZyBpbSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+IHp1IGZpbmRlbi48L2xpPg0KPGxpPkxldHp0bGljaCBlcnJlaWNoZW4gc2llIGRlbiBBdXRvciBhdWNoICZ1dW1sO2JlciBlaW5lIGRpcmVrdGUgRW1haWwuPC9saT4gIA0KPC91bD4NCjxoMz5QYXJhbWV0ZXI8L2gzPg0KPHVsPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0mcXVvdDtuYW1lJnF1b3Q7PC9saT4NCjxwPkZvcm11bGFyZToNCjx1bD4NCiA8bGk+PGVtPmxvZ2luPC9lbT4gLSBaZWlndCBkYXMgRm9ybXVsYXIgenVyIEFubWVsZHVuZyBhbjwvbGk+DQogPGxpPjxlbT5sb2dvdXQ8L2VtPiAtIFplaWd0IGRhcyBGb3JtdWxhciB6dXIgQWJtZWxkdW5nIGFuPC9saT4NCiA8bGk+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT4gLSBaZWlndCBkYXMgRm9ybXVsYXIgenVtICZBdW1sO25kZXJuIGRlciBFaW5zdGVsbHVuZ2VuIGFuPC9saT4NCiA8bGk+PGVtPmZvcmdvdHB3PC9lbT4gLSBaZWlndCBkYXMgRm9ybXVsYXIgZiZ1dW1sO3IgdmVyZ2Vzc2VuZSBQYXNzdyZvdW1sO3J0ZXIgYW48L2xpPg0KPC91bD4NCjwvcD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHJldHVybnRvPSZxdW90O3BhZ2UmcXVvdDs8L2xpPg0KPHA+RGllc2VyIFBhcmFtZXRlciBlbnRoJmF1bWw7bHQgZGllIElEIG9kZXIgZGVuIEFsaWFzIGVpbmVyIFNlaXRlLCBhdWYgZGllIGRlciBVc2VyIHdlaXRlcmdlbGVpdGV0IHdpcmQsIHdlbm4gamV3ZWlscyBkYXMgRm9ybXVsYXIgZXJmb2xncmVpY2ggYXVzZ2VmJnV1bWw7bGx0IHd1cmRlLiBFciBsJmF1bWw7c3N0IHNpY2ggaW4gVmVyYmluZHVuZyBtaXQgZGVuIEZvcm11bGFyZW4genVyIEFuLSB1bmQgQWJtZWxkdW5nIHNvd2llIHp1bSAmQXVtbDtuZGVybiBkZXIgRWluc3RlbGx1bmdlbiBudXR6ZW4uPC9wPg0KPC91bD4NCjxwPk5hY2ggZGVyIEdQTCB3aXJkIGRpZXNlIFNvZnR3YXJlIHNvIHZlciZvdW1sO2ZmZW50bGljaHQsIHdpZSBzaWUgaXN0LiBCaXR0ZSBsZXNlbiBTaWUgZGVuIExpemVuenRleHQgZiZ1dW1sO3IgZGVuIHZvbGxlbiBIYWZ0dW5nc2F1c3NjaGx1c3MuPC9wPg0KPGgzPkFuZm9yZGVydW5nZW48L2gzPg0KPHA+VW0gZGllIEZ1bmt0aW9uIGYmdXVtbDtyIGRpZSB2ZXJnZXNzZW5lbiBQYXNzdyZvdW1sO3J0ZXIgenUgbnV0emVuLCBtdXNzIHp1dm9yIGRhcyBDTVNNYWlsZXItTW9kdWwgaW5zdGFsbGllcnQgd2VyZGVuLjwvcD4NCjxoMz5Db3B5cmlnaHQgdW5kIExpemVuejwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA1LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0mcXVvdDttYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZxdW90Oz5jYWxndXkxMDAwQGhvdG1haWwuY29tPC9hPi4gQWxsZSBSZWNodGUgdm9yYmVoYWx0ZW4uPC9wPg0KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHVudGVyIGRlciA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjcxNzQ2MjczNi4xMTQ3NTExODU2LjExNjE1ODQyNzAuMTE2MTY5MzMxMS44MCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNjE2OTMzMTEuODAuNDQudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWZvcnVtLmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vaW5kZXgucGhwfHV0bWNtZD1yZWZlcnJhbCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/el_GR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3Byb21wdF91bmZsZGxlbiddID0gJ86czq7Ous6/z4Igz4DOtc60zq/Ov8+FIM6zzrnOsSDPhM6/IM+Mzr3Ov868zrEgz4fPgc6uz4PPhM63JzsKJGxhbmdbJ3Byb21wdF9wd2ZsZGxlbiddID0gJ86czq7Ous6/z4Igz4DOtc60zq/Ov8+FIM6zzrnOsSDPhM6/zr0gzrrPic60zrnOus+MJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnXSA9ICfOpM6/IM61zrvOrM+HzrnPg8+Ezr8vzrzOrc6zzrnPg8+Ezr8gzrzOrs66zr/PgiDOs865zrEgz4TOv869IM66z4nOtM65zrrPjCDOtM61zr0gzrXOr869zrHOuSDOsc+Azr/OtM61zrrPhM+MJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZWxlbmd0aHMnXSA9ICfOpM6/IM61zrvOrM+HzrnPg8+Ezr8vzrzOrc6zzrnPg8+Ezr8gzrzOrs66zr/PgiDOs865zrEgz4TOvyDPjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyDOtM61zr0gzrXOr869zrHOuSDOsc+Azr/OtM61zrrPhM+MJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxhZGRyZXNzJ10gPSAnzpTOtc69IM61z4XPgc6tzrjOt866zrUgzrTOuc61z43OuM+Fzr3Pg863IGVtYWlsIM6zzrnOsSDOsc+Fz4TPjM69IM+Ezr/OvSDOu86/zrPOsc+BzrnOsc+DzrzPjCc7CiRsYW5nWyd1c2VyX2FkZGVkJ10gPSAnzp8gz4fPgc6uz4PPhM63z4Igz4DPgc6/z4PPhM6tzrjOt866zrUgJXMgPSAlcyc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICfOnyDPh8+Bzq7Pg8+EzrfPgiDOtM65zrHOs8+BzqzPhs63zrrOtSB1aWQ9JXMnOwokbGFuZ1sncHJvcGVydHlmaWx0ZXInXSA9ICfOmc60zrnPjM+EzrfPhM6xJzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICfOpM65zrzOriAocmVndWxhciBleHByZXNzaW9uKSc7CiRsYW5nWyd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCddID0gJ86gz4HOv861zrnOtM6/z4DOv86vzrfPg863OiDOpM6xIM+AzrXOtM6vzrEgzrHPhc+EzqwgzrXPgM63z4HOtc6szrbOv8+Fzr0gz4TOvyDOvM6tzrPOtc64zr/PgiDPhM+Jzr0gz4DOtc60zq/Pic69IM61zrnPg86xzrPPic6zzq7PgiDOs865zrEgz4TOuc+CIM+Gz4zPgc68zrXPgi4gIM6XIM61zrvOu86sz4TPic+Dzrcgz4TOv8+FIM6xz4HOuc64zrzOv8+NIM6xz4XPhM6/z40gz4POtSDOv8+Azr/Ouc6/zrTOrs+Azr/PhM61IM+Fz4DOsc+BzrrPhM+MIM60zrnOus+Ez4XOsc66z4wgz4TPjM+Azr8gzrTOtc69IM61zr3OtM61zq/Ous69z4XPhM6xzrknOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ86Yzq3Ou861z4TOtSDPhM63zr0gzrHOu867zrHOs86uIM+Ez4nOvSDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+Ezr/PhSDOtM65zrHPh861zrnPgc65z4PPhM6uPyc7CiRsYW5nWydlcnJvcl9lbWFpbGFscmVhZHl1c2VkJ10gPSAnzpcgzrTOuc61z43OuM+Fzr3Pg863IEVtYWlsIM6uzrTOtyDPh8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrknOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICfOnc6xIM61z4DOuc+Ez4HOrc+Azr/Ovc+EzrHOuSDOtM65z4DOu86sIGVtYWlscyc7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcozp3OsSDOtc+AzrnPhM+Bzq3PgM6/zr3PhM6xzrkgz4DOv867zrvOsc+AzrvOv86vIM+Hz4HOrs+Dz4TOtc+CIM68zrUgz4TOt869IM6vzrTOuc6xIM60zrnOtc+NzrjPhc69z4POtyBlbWFpbCknOwokbGFuZ1snZXJyb3JfbWlzc2luZ3VzZXJuYW1lJ10gPSAnzpTOtc69IM6tz4fOtc+EzrUgzrXOuc+DzqzOs861zrkgzq3Ovc6xIM+Mzr3Ov868zrEgz4fPgc6uz4PPhM63JzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdwYXNzd29yZCddID0gJ86UzrXOvSDOrc+HzrXPhM61IM61zrnPg86szrPOtc65IM6tzr3Osc69IM66z4nOtM65zrrPjCDPgM+Bz4zPg86yzrHPg863z4InOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ291dCddID0gJ86Rz4DOv8+Dz43Ovc60zrXPg863IM61zrPOs861zrPPgc6xzrzOrc69zr/PhSDPh8+Bzq7Pg8+EzrcnOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ2dlZGluJ10gPSAnzqPPjc69zrTOtc+DzrcgzrXOs86zzrXOs8+BzrHOvM6tzr3Ov8+FIM+Hz4HOrs+Dz4TOtyc7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPGZvbnQgY29sb3I9JnF1b3Q7cmVkJnF1b3Q7PjxiPs6gz4HOv8+Dzr/Ph86uIM+Dz4TOt869IM+Hz4HOrs+Dzrc8L2I+IM6XIM6xzrvOu86xzrPOriDPhM+Jzr0gzrnOtM65zr/PhM6uz4TPic69IM+Azr/PhSDOuc+Dz4fPjc6/z4XOvSDOs865zrEgz4TOuc+CIM+Fz4DOrM+Bz4fOv8+Fz4POtc+CIM6/zrzOrM60zrXPgiwgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM65z4bOrc+BzrXOuSDOus6xz4TOsc+Dz4TPgc6/z4bOriDOus6xzrkgzrTOuc6xzrrOv8+Azq4gzrvOtc65z4TOv8+Fz4HOs86vzrHPgiDPg861IM6/z4DOv865zr/OtM6uz4DOv8+EzrUgz4XPgM6sz4HPh86/zr3PhM6xIM60zrnOus+Ez4XOsc66z4wgz4TPjM+Azr8gPGk+KM65zrTOuc6xzq/PhM61z4HOsSDOsc69IM61zrvOu86xz4TPjs+DzrXPhM61IM+EzrEgzrzOrs66zrcgz4TPic69IM+AzrXOtM6vz4nOvSwgzrrOu8+AKTwvaT48L2ZvbnQ+JzsKJGxhbmdbJ2luZm9fc210cHZhbGlkYXRlJ10gPSAnzpHPhc+Ezq4gzrcgzrTOuc6xzrTOuc66zrHPg86vzrEgzrTOtc69IM67zrXOuc+Ezr/Phc+BzrPOtc6vIM+Dz4TOsSB3aW5kb3dzJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICfOnM6uzr0gzrTOt868zrnOv8+Fz4HOs86uz4POtc+EzrUgzrzOr86xIM65zrTOuc+Mz4TOt8+EzrEgzrPOuc6xIM6tzr3OsSDPjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyDOriDOus6sz4TOuSDPgM6xz4HPjM68zr/Ouc6/IM66zrHOuM+Oz4IgzrHPhc+Ez4wgzrXOr869zrHOuSDOtc69z4PPic68zrHPhM+JzrzOrc69zr8gz4PPhM6/IM6sz4HOuM+Bz4nOvM6xICBGcm9udEVuZFVzZXJzJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRjc3YnXSA9ICfOlc6+zrHOs8+JzrPOriDPh8+BzrfPg8+Ez47OvSDPg861IM6xz4HPh861zq/OvyDPhM+Nz4DOv8+FIENTVic7CiRsYW5nWydleHBvcnRjc3YnXSA9ICfOlc6+zrHOs8+JzrPOric7CiRsYW5nWydhZG1pbiddID0gJ86UzrnOsc+HzrXOuc+BzrnPg8+Ezq7Pgic7CiRsYW5nWydlZGl0cHJvcCddID0gJ86Vz4DOtc6+zrXPgc6zzrHPg86vzrEgzrnOtM65z4zPhM63z4TOsc+CJzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ86czq3Os865z4PPhM6/IM68zq7Ous6/z4InOwokbGFuZ1snY3JlYXRlZCddID0gJ86UzrfOvM65zr/Phc+BzrPOrs64zrfOus61JzsKJGxhbmdbJ3NvcnRieSddID0gJ86kzrHOvs65zr3PjM68zrfPg863IM66zrHPhM6xJzsKJGxhbmdbJ3NvcnQnXSA9ICfOpM6xzr7Ouc69z4zOvM63z4POtyc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICfOp8+Bzq7Pg8+EzrXPgiDPg8+EzrcozrnPgikgIM61z4DOuc67zrXOs868zq3Ovc63KM61z4IpIM6/zrzOrM60zrEozrXPgiknOwokbGFuZ1sndXNlcmxpbWl0J10gPSAnzpjOrc+Dzrcgzr/Pgc6vzr/PhSDPg8+EzrEgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6xIM+DzrUnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc+Nz4HOtc+DzrcgzrXOvc+Mz4Igz4DOtc60zq/Ov8+FIGVtYWlsIM6zzrnOsSDOsc+Fz4TPjM69IM+Ezr/OvSDPh8+Bzq7Pg8+EzrcuICDOmc+Dz4nPgiDPgM+Bzq3PgM61zrkgzr3OsSDOtc+AzrnOus6/zrnOvc+Jzr3Ors+DzrXPhM61IM68zrUgz4TOv869IM60zrnOsc+HzrXOuc+BzrnPg8+Ezq4gz4PPhc+Dz4TOrs68zrHPhM6/z4InOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICfOkc69zrHOs869z4nPgc65z4PPhM65zrrPjCDPg861zrvOr860zrHPgi/OjM69zr/OvM6xIM6xzr3PhM65z4PPhM6/zq/Ph865z4POt8+CIM6zzrnOsSDPhM63zr0gz4bPjM+BzrzOsSAizp7Orc+HzrHPg86xIM+Ezr/OvSDOus+JzrTOuc66z4wgz4DPgc+Mz4POss6xz4POt8+CIic7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3NfcGFnZSddID0gJ86Rzr3Osc6zzr3Pic+BzrnPg8+EzrnOus+MIM+DzrXOu86vzrTOsc+CL86Mzr3Ov868zrEgzrHOvc+EzrnPg8+Ezr/Or8+HzrnPg863z4IgzrPOuc6xIM+EzrfOvSDPhs+Mz4HOvM6xICLOkc67zrvOsc6zzq4gz4HPhc64zrzOr8+DzrXPic69Iic7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ86Rzr3Osc6zzr3Pic+BzrnPg8+EzrnOus+MIM+DzrXOu86vzrTOsc+CL86Mzr3Ov868zrEgzrHOvc+EzrnPg8+Ezr/Or8+HzrnPg863z4Igz4PPhM63zr0gzr/PgM6/zq/OsSDOuM6xIM68zrXPhM6xz4bOrc+Bzr/Ovc+EzrHOuSDOvM61z4TOsSDPhM63zr0gzrXOr8+Dzr/OtM6/JzsKJGxhbmdbJ3Byb21wdF9sb2dvdXRfcGFnZSddID0gJ86Rzr3Osc6zzr3Pic+BzrnPg8+EzrnOus+MIM+DzrXOu86vzrTOsc+CL86Mzr3Ov868zrEgzrHOvc+EzrnPg8+Ezr/Or8+HzrnPg863z4LPg8+EzrfOvSDOv8+Azr/Or86xIM64zrEgzrzOtc+EzrHPhs6tz4HOv869z4TOsc65IM68zrXPhM6sIM+EzrfOvSDOrc6+zr/OtM6/JzsKJGxhbmdbJ3NvcnRvcmRlciddID0gJ86kz4HPjM+Azr/PgiDPhM6xzr7Ouc69z4zOvM63z4POt8+CJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ86Izr3Osc+CIM6xz4HOuc64zrzPjM+CIM+Hz4HOt8+Dz4TPjs69IM61z4XPgc6vz4POus6/zr3PhM6xzrkgz4PPhM63zr0gzrTOuc6xzrTOuc66zrHPg86vzrEgzrHOu867zrHOs86uz4Igz4fOsc68zq3Ovc+Jzr0gzrrPic60zrnOus+Ozr0gz4DPgc+Mz4POss6xz4POt8+CLiAgzqPPhM63zr0gz4DOsc+Bzr/Pjc+DzrEgz4PPhM65zrPOvM6uIM6/IM6xz4HOuc64zrzPjM+CIM6xz4XPhM+Mz4IgzrXOr869zrHOuTonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICfOms6xz4TOrM+BzrPOt8+Dzrcgz4zOu8+Jzr0gzrXOus61zq/Ovc+Jzr0gz4TPic69IM61zrPOs8+BzrHPhs+Ozr0gz4DOv8+FIM61zq/Ovc6xzrkgz4DOsc67zrHOuc+Mz4TOtc+BzrXPgiDOsc+Azr8gzrzOuc6xIM61zrLOtM6/zrzOrM60zrEnOwokbGFuZ1sncmVtb3ZlMW1vbnRoJ10gPSAnzprOsc+EzqzPgc6zzrfPg863IM+MzrvPic69IM61zrrOtc6vzr3Pic69IM+Ez4nOvSDOtc6zzrPPgc6xz4bPjs69IM+Azr/PhSDOtc6vzr3Osc65IM+AzrHOu86xzrnPjM+EzrXPgc61z4IgzrHPgM6/IM6tzr3OsSDOvM6uzr3OsSc7CiRsYW5nWydyZW1vdmVhbGwnXSA9ICfOms6xz4TOrM+BzrPOt8+Dzrcgz4zOu8+Jzr0gz4TPic69IM61zrPOs8+BzrHPhs+Ozr0nOwokbGFuZ1snYXJleW91c3VyZSddID0gJ86Vzq/Pg8+EzrUgz4POr86zzr/Phc+Bzr/OuT8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNvZGUnXSA9ICfOiM+HzrXOuSDOtc65z4POsc+HzrjOtc6vIM68zrcgzq3Os866z4XPgc6/z4IgzrrPjs60zrnOus6xz4IsIM+Az4HOv8+Dz4DOsc64zq7Pg8+EzrUgzr7Osc69zqwnOwokbGFuZ1snZXJyb3JfdGVtcGNvZGVub3Rmb3VuZCddID0gJ86UzrXOvSDOrc+HzrXOuSDOss+BzrXOuM61zq8gz4DPgc6/z4PPic+BzrnOvc+Mz4IgzrrPjs60zrnOus6xz4Igz4DOv8+FIM69zrEgzrHOvc+EzrnPg8+Ezr/Ouc+HzrXOryDPg8+Ezr8gzrTOuc66z4wgz4POsc+CIM6xzr3Osc6zzr3Pic+BzrnPg8+EzrnOus+MIM+Hz4HOrs+Dz4TOtyDPg8+EzrfOvSDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0nOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdmVyaWZ5dGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyDOtc68z4bOrM69zrnPg863z4Igz4TOt8+CIM+Gz4zPgc68zrHPgiDOtc+AzrHOu86uzrjOtc+Fz4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnzqDPgc+Mz4TPhc+Azr8gZW1haWwgzrPOuc6xIM+Ezr/Phc+CIM6+zrXPh86xz4POvM6tzr3Ov8+Fz4IgzrrPic60zrnOus6/z43PgiDPgM+Bz4zPg86yzrHPg863z4InOwokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ86JIM61z4POtc6vz4Igzq4gzrrOrM+Azr/Ouc6/z4IgzqzOu867zr/PgiDOrc+HzrXOuSDOrs60zrcgzrXOus66zrnOvc6uz4POtc65IM60zrnOsc60zrnOus6xz4POr86xIM6zzrnOsSDPhM63zr0gzrHOu867zrHOs86uIM66z4nOtM65zrrOv8+NIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgzrHPhc+Ez4zOvSDPhM6/zr0gzrvOv86zzrHPgc65zrHPg868z4wuICDOlc67zq3Os86+z4TOtSDPhM6/IGVtYWlsIM+DzrHPgiwgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM67zqzOss61z4TOtSDPgM61z4HOsc65z4TOrc+Bz4kgzr/OtM63zrPOr861z4IgzrPOuc6xIM+EzrfOvSDOsc67zrvOsc6zzq4gzrrPic60zrnOus6/z40gz4PPhM6xIM61zrnPg861z4HPh8+MzrzOtc69zrEnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ86jz4bOrM67zrzOsSDOss6sz4POt8+CIM60zrXOtM6/zrzOrc69z4nOvSc7CiRsYW5nWydtZXNzYWdlX2ZvcmdvdHB3ZW1haWwnXSA9ICfOlc67zqzOss6xz4TOtSDOsc+Fz4TPjCDPhM6/IM68zq7Ovc+FzrzOsSDOtc+AzrXOuc60zq4gzrrOrM+Azr/Ouc6/z4IgzrHOvc6tz4bOtc+BzrUgz4PPhM6/zr0gzrTOuc66z4TPhc6xzrrPjCDPhM+Mz4DOvyDPjM+Ezrkgzq3Ph861z4TOtSDOvs61z4fOrM+DzrXOuSDPhM6/zr0gzrrPic60zrnOus+MIM+Az4HPjM+DzrLOsc+DzrfPgi4gIM6Rzr0gz4zOvc+Ez4nPgiDOrc+Ez4POuSDPg8+FzrzOss6xzq/Ovc61zrkgzrTOuc6xzrLOrM+Dz4TOtSDPhM65z4Igz4DOsc+BzrHOus6sz4TPiSDOv860zrfOs86vzrXPgi4gIM6Rzr0gzrTOtc69IM6tz4fOtc+EzrUgzrnOtM6tzrEgzrPOuc6xIM6xz4XPhM+MIM+Ezr8gzrjOrc68zrEgzrTOuc6xzrPPgc6sz4jPhM61IM68zrUgzrHPg8+GzqzOu861zrnOsSDPhM6/IM+AzrHPgc+Mzr0gzrzOrs69z4XOvM6xLCDPg86xz4IgzrXPhc+HzrHPgc65z4PPhM6/z43OvM61IM6zzrnOsSDPhM6/zr0gz4fPgc+Mzr3OvyDPg86xz4IuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnzprPjs60zrnOus6xz4InOwokbGFuZ1snbWVzc2FnZV9jb2RlJ10gPSAnzp8gz4DOsc+BzrHOus6sz4TPiSDOus+OzrTOuc66zrHPgiDOrc+HzrXOuSDOtM63zrzOuc6/z4XPgc6zzrfOuM61zq8gz4TPhc+HzrHOr86xIM+Az4HOv866zrXOuc68zq3Ovc6/z4Ugzr3OsSDOtc+AzrHOu863zrjOtc+Fz4TOtc6vIM6/IM67zr/Os86xz4HOuc6xz4POvM+Mz4Igz4fPgc6uz4PPhM63LiAgz4zPhM6xzr0gzrrOrM69zrXPhM61IM66zrvOr866IM+Dz4TOv869IM+Fz4DOtc+Bz4PPjc69zrTOtc+DzrzOvyDPgM6/z4UgzrHOus6/zrvOv8+FzrjOtc6vIM64zrEgz4POsc+CIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM6tzr3OsSDPgM61zrTOr86/IM6zzrnOsSDPhM63zr0gzrXOuc+DzrHOs8+JzrPOriDPhM6/z4UgzrrPjs60zrnOus6xLiAgzqPPhc69zq7OuM+Jz4Igz4TOvyDPgM61zrTOr86/IM6tz4fOtc65IM+Az4HOv8+Dz4XOvM+AzrvOt8+Bz4nOvM6tzr3OvyDPhM6/zr0gzrrPjs60zrnOus6xIM6xzrvOu86xIM+Dz4TOt869IM+AzrXPgc6vz4DPhM+Jz4POtyDPgM6/z4UgzrTOtc69IM61zq/Ovc6xzrksIM6/IM66z47OtM65zrrOsc+CIM61zq/Ovc6xzrk6JzsKJGxhbmdbJ3Byb21wdF9saW5rJ10gPSAnzprOrM69z4nOvc+EzrHPgiDOus67zq/OuiDPg8+Ezr8gz4DOsc+BzrHOus6sz4TPiSDPhc+AzrXPgc+Dz43Ovc60zrXPg868zr8gzrjOsSDOvM61z4TOsc+GzrXPgc64zrXOr8+EzrUgz4PPhM6/IM60zrnOus+Ez4XOsc66z4wgz4TPjM+Azr8gz4zPgM6/z4UgzrjOsSDOtc65z4POrM6zzrXPhM61IM+Ezr/OvSDPgM6xz4HOsc+AzrHOrM69z4IgzrrPjs60zrnOus6xIM66zrHOuSDOuM6xIM6xzrvOu86szr7Otc+EzrUgz4TOv869IM66z4nOtM65zrrPjDonOwokbGFuZ1snbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCddID0gJ86ezrXPh86xz4POvM6tzr3Ov8+CIM66z4nOtM65zrrPjM+CJzsKJGxhbmdbJ2Vycm9yX25vbWFpbGVybW9kdWxlJ10gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc+Nz4HOtc+Dzrcgz4TOv8+FIM6xz4HOuM+Bz47OvM6xz4TOv8+CIENNU01haWxlcic7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICfOiM+HzrXOuSDOsc+Azr/Pg8+EzrHOu867zrXOryBlbWFpbCDPg8+Ezr/OvSAlcyDOvM61IM6/zrTOt86zzq/Otc+CIM6zzrnOsSDPhM6/zr0gz4TPgc+Mz4DOvyDOsc67zrvOsc6zzq7PgiDOus+JzrTOuc66zr/PjS4gIM6jzrHPgiDOtc+Fz4fOsc+BzrnPg8+Ezr/Pjc68zrUnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICfOj8+Dz4TOtSDOvs61z4fOrM+DzrHPhM61IM6uIM+HzqzPg86xz4TOtSDPhM6/zr0gzrrPic60zrnOus+MIM+Az4HPjM+DzrLOsc+DzrfPgi4gzpvOv865z4DPjM69LCDPgM67zrfOus+Ez4HOv867zr/Os86uz4PPhM61IM+Ezr8gz4zOvc6/zrzOsSDPh8+Bzq7Pg8+EzrcgzrXOtM+OLCDOus6xzrkgzqzOvSDOtc6vzr3Osc65IM60z4XOvc6xz4TOriDOtyDOtc+Nz4HOtc+Dzrcgz4POsc+CIM64zrEgz4POsc+CIM+Dz4TOsc67zrvOtc6vIM6tzr3OsSBlbWFpbCDOvM61IM6/zrTOt86zzq/Otc+CIM6zzrnOsSDPhM63zr0gzrHOu867zrHOs86uIM+Ezr/PhSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ86gz4HPjM+Ez4XPgM6xIM6zzrnOsSDPhM6/z4XPgiDPh86xzrzOrc69zr/Phc+CIM66z4nOtM65zrrOv8+Nz4InOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnzpTOtc69IM61z4XPgc6tzrjOt866zrUgzrcgzrnOtM65z4zPhM63z4TOsSAlcyAnOwokbGFuZ1sncHJvcHNmb3VuZCddID0gJ86Vz4XPgc6tzrjOt866zrHOvSDOv865IM65zrTOuc+Mz4TOt8+EzrXPgic7CiRsYW5nWydhZGRwcm9wJ10gPSAnzqDPgc6/z4POuM6uzrrOtyDOuc60zrnPjM+EzrfPhM6xz4InOwokbGFuZ1snZXJyb3JfcmVxdWlyZWRmaWVsZCddID0gJ86kzr8gzrHPgM6xzrnPhM6/z43OvM61zr3OvyDPgM61zrTOr86/ICglcykgzq7PhM6xzr0gzrrOtc69z4wnOwokbGFuZ1snaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnXSA9ICfOlc65z4POrM6zzrXPhM61IM6tzr3Osc69IM69zrXPjCDOus+JzrTOuc66z4wgzrXOtM+OIM+Az4HOv866zrXOuc68zq3Ovc6/z4Ugzr3OsSDOsc67zrvOrM6+zrXPhM61IM66z4nOtM65zrrPjCc7CiRsYW5nWydlcnJvcl9ub3Rsb2dnZWRpbiddID0gJ86UzrXOvSDOrc+HzrXPhM61IM66zqzOvc61zrkgzrXOuc+DzrHOs8+JzrPOric7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnzqHPhc64zrzOr8+DzrXOuc+CJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnzpXOs86zz4HOsc+Gzq4nOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICfOkc+Fz4TPjM+CIM6/IM67zr/Os86xz4HOuc6xz4POvM+Mz4Igzq3Ph861zrkgzrvOrs6+zrXOuSc7CiRsYW5nWydlcnJvcl9pbXByb3BlcmVtYWlsZm9ybWF0J10gPSAnzpHOvc+EzrnOus6xzr3Ov869zrnOus6uIM68zr/Pgc+Gzq4gzrTOuc61z43OuM+Fzr3Pg863z4IgZW1haWwnOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICfOnM63IM6xz4DOv860zrXOus+Ezq4gzrfOvM61z4HOv868zrfOvc6vzrEgzrvOrs6+zrfPgic7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2V0dGluZ3Byb3BlcnR5J10gPSAnzqPPhs6szrvOvM6xIM+Dz4TOt869IM+Bz43OuM68zrnPg863IM+EzrfPgiDOuc60zrnPjM+EzrfPhM6xz4IgJXMgzrPOuc6xIM+Ezr/OvSDPh8+Bzq7Pg8+EzrcgJHMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGdyb3VwaWQnXSA9ICfOnM63IM6xz4DOv860zrXOus+Ez4wgzrHOvc6xzrPOvc+Jz4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv868zqzOtM6xICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnzprPgc+Fz4bPjCDPgM61zrTOr86/IM60zrXOr866z4TOtyc7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnzprPgc+Fz4bPjCDPgM61zrTOr86/IM+Hz4HPjs68zrHPhM6/z4InOwokbGFuZ1snaGlkZGVuJ10gPSAnzprPgc+Fz4bPjCc7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnzpcgzr/Ovc6/zrzOsc+Dzq/OsSDOsc+Fz4TOrs+CIM+EzrfPgiDOmc60zrnPjM+EzrfPhM6xz4Igzq3Ph861zrkgzq7OtM63IM6xz4DOv860zr/OuM61zq8nOwokbGFuZ1snZXJyb3Jfbm9wcm9wZXJ0aWVzJ10gPSAnzpTOtc69IM6tz4fOv8+Fzr0gzr/Pgc65z4PPhM61zq8gzrnOtM65z4zPhM63z4TOtc+CJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnzpTOtc69IM6tz4fOv8+Fzr0gzrXPgM65zrvOtc6zzrXOryDOuc60zrnPjM+EzrfPhM61z4IgzrPOuc6xIM6xz4XPhM6uzr0gz4TOt869IM6/zrzOrM60zrEnOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICfOlc+Fz4HOrc64zrfOus6xzr0gzr/OvM6szrTOtc+CJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICfOkc+AzrHOuc+EzrXOr8+EzrHOuSDPg8+FzrzOvM61z4TOv8+Hzq4gz4POtSDPhM6/z4XOu86sz4fOuc+Dz4TOv869IM68zq/OsSDOv868zqzOtM6xJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICfOkc+AzrHOuc+EzrXOr8+EzrHOuSDPg8+FzrzOvM61z4TOv8+Hzq4gz4POtSDPhM6/z4XOu86sz4fOuc+Dz4TOv869IM68zq/OsSDOv868zqzOtM6xJzsKJGxhbmdbJ2JhY2snXSA9ICfOoM6vz4PPiSc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnzqTOvyAlcyDOtc6vzr3Osc65IM6xz4DOsc65z4TOv8+NzrzOtc69zr8gz4DOtc60zq/Ovyc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnzqPOt868zqzOvc61z4TOtSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgz4DOtc60zq/OsSDOvM61JzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ86Vz4DOuc+DzrfOvM6szr3Otc+EzrUgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM+AzrXOtM6vzrEgzrzOtSc7CiRsYW5nWyduZXh0J10gPSAnzpXPgM+MzrzOtc69zr8nOwokbGFuZ1snZXJyb3JfZ3JvdXBleGlzdHMnXSA9ICfOpc+AzqzPgc+HzrXOuSDOrs60zrcgzr/OvM6szrTOsSDOvM61IM6xz4XPhM+MIM+Ezr8gz4zOvc6/zrzOsSc7CiRsYW5nWydyZXF1aXJlZCddID0gJ86Rz4DOsc65z4TOv8+NzrzOtc69zr8gz4DOtc60zq/Ovyc7CiRsYW5nWydvcHRpb25hbCddID0gJ86gz4HOv86xzrnPgc61z4TOuc66zqwnOwokbGFuZ1snb2ZmJ10gPSAnzpXOus+Ez4zPgic7CiRsYW5nWydsZW5ndGgnXSA9ICfOnM6uzrrOv8+CJzsKJGxhbmdbJ2xlbmd0aGNvbW1lbnQnXSA9ICc8YnI+KM+HzrHPgc6xzrrPhM6uz4HOtc+CIM+Dz4TOt869IM61zrnPg86xzrPPic6zzq4gzrrOtc65zrzOrc69zr/PhSknOwokbGFuZ1snc2Vsb3B0aW9ucyddID0gJ86Vz4DOuc67zr/Os86tz4IgzrzOtc69zr/PjSBEcm9wZG93biwgzrzOtSDOtM65zrHPh8+Jz4HOuc+Dz4TOuc66zq3PgiDOs8+BzrHOvM68zq3Pgic7CiRsYW5nWyd5ZXMnXSA9ICfOnc6xzrknOwokbGFuZ1sncHJvbXB0J10gPSAnzqDPgc6/z4TPgc6/z4DOric7CiRsYW5nWyd0eXBlJ10gPSAnzqTPjc+Azr/Pgic7CiRsYW5nWyd0ZXh0J10gPSAnzprOtc6vzrzOtc69zr8nOwokbGFuZ1snY2hlY2tib3gnXSA9ICfOkc69z4TOuc66zrXOr868zrXOvc6/IM61zrvOrc6zz4fOv8+FIENoZWNrYm94JzsKJGxhbmdbJ2VtYWlsJ10gPSAnzpTOuc61z43OuM+Fzr3Pg863IEVtYWlsJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnzqDOtc+BzrnOv8+Hzq4gzrrOtc65zrzOrc69zr/PhSc7CiRsYW5nWydkcm9wZG93biddID0gJ86czrXOvc6/z40gRHJvcGRvd24nOwokbGFuZ1snbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnXSA9ICfOms6xzrvPjs+CIM6uzrvOuM6xz4TOtSc7CiRsYW5nWydsb2dvdXQnXSA9ICfOkc+Azr/Pg8+Nzr3OtM61z4POtyc7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3MnXSA9ICfOkc67zrvOsc6zzq4gz4DPgc6/z4PPic+AzrnOus+Ozr0gz4HPhc64zrzOr8+DzrXPic69JzsKJGxhbmdbJ2Vycm9yX2xvZ2luZmFpbGVkJ10gPSAnzpcgz4PPjc69zrTOtc+DzrcgzrHPgM6tz4TPhc+HzrUgLSDOnM63IM6xz4DOv860zrXOus+Ez4wgz4zOvc6/zrzOsSDPh8+Bzq7Pg8+Ezrcgzq4gzrrPic60zrnOus6/z40nOwokbGFuZ1snbG9naW4nXSA9ICfOlc6vz4POv860zr/Pgic7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICfOjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyc7CiRsYW5nWydwcm9tcHRfcGFzc3dvcmQnXSA9ICfOms+JzrTOuc66z4zPgic7CiRsYW5nWydyZWdpc3RlciddID0gJ86VzrPOs8+BzrHPhs6uJzsKJGxhbmdbJ2ZvcmdvdHB3J10gPSAnzp7Otc+HzqzPg86xz4TOtSDPhM6/zr0gzrrPic60zrnOus+MPyc7CiRsYW5nWydkZWZhdWx0cyddID0gJ86gz4HOv861z4DOuc67zr/Os86tz4InOwokbGFuZ1sndGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyc7CiRsYW5nWydlcnJvcl91c2Vybm90Zm91bmQnXSA9ICfOpM6/IM6xzr3Osc6zzr3Pic+BzrnPg8+EzrnOus+MIM+Hz4HOrs+Dz4TOtyDOtM61zr0gzrXPhc+Bzq3OuM63zrrOtSc7CiRsYW5nWydlcnJvcl91c2VybmFtZXRha2VuJ10gPSAnzpHPhc+Ez4wgz4TOvyDPjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyAoJXMpIM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOrs60zrcnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ86nz4HOrs+DzrcgU01UUCDOs865zrEgz4TOt869IM61z4DOuc66z43Pgc+Jz4POtyDPhM+Jzr0gzrTOuc61z4XOuM+Nzr3Pg861z4nOvSBlbWFpbD8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnzpXOu86sz4fOuc+Dz4TOvyDOvM6uzrrOv8+CIM6az4nOtM65zrrOv8+NJzsKJGxhbmdbJ3Byb21wdF9tYXhwd2xlbiddID0gJ86czq3Os865z4PPhM6/IM68zq7Ous6/z4IgzprPic60zrnOus6/z40nOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnzpXOu86sz4fOuc+Dz4TOvyDOvM6uzrrOv8+CIM6/zr3PjM68zrHPhM6/z4Igz4fPgc6uz4PPhM63JzsKJGxhbmdbJ3Byb21wdF9tYXh1bmxlbiddID0gJ86czq3Os865z4PPhM6/IM68zq7Ous6/z4Igzr/Ovc+MzrzOsc+Ezr/PgiDPh8+Bzq7Pg8+EzrcnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnzqfPgc+Mzr3Ov8+CIM67zq7Ovs63z4IgzrTOuc61z4DOsc+Gzq7PgiAozrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ86Vz4DOuc+Ez4HOrc+AzrXPhM6xzrkgzrcgzrXOs86zz4HOsc+Gzq4gz4PPhM63zr0gz4XPgM63z4HOtc+Dzq/OsSBFbWFpbCc7CiRsYW5nWydwcm9tcHRfZGZsdGdyb3VwJ10gPSAnzqDPgc6/zrXPgM65zrvOtc6zzrzOrc69zrcgzr/OvM6szrTOsSDOs865zrEgz4TOv8+Fz4Igzr3Orc6/z4XPgiDPh8+Bzq7Pg8+EzrXPgic7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJ86RzrvOu86xzrPOriDPgc+FzrjOvM6vz4POtc+Jzr0gz4DPgc6/z4TPjc+Azr/PhSc7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnzp/OuSDOus+JzrTOuc66zr/OryDPgM+Bz4zPg86yzrHPg863z4IgzrTOtc69IM+EzrHOuc+BzrnOrM62zr/Phc69JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZSddID0gJ86czrcgzrHPgM6/zrTOtc66z4TPjCDPjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICfOnM63IM6xz4DOv860zrXOus+Ez4zPgiDOus+JzrTOuc66z4zPgic7CiRsYW5nWydlZGl0dXNlciddID0gJ86Vz4DOtc6+zrXPgc6zzrHPg86vzrEgz4PPhM6/zrnPh861zq/Pic69IM+Hz4HOrs+Dz4TOtyc7CiRsYW5nWyd2YWxpZCddID0gJ86IzrPOus+Fz4HOvyc7CiRsYW5nWyd1c2VybmFtZSddID0gJ86Mzr3Ov868zrEgz4fPgc6uz4PPhM63JzsKJGxhbmdbJ3N0YXR1cyddID0gJ86azrHPhM6sz4PPhM6xz4POtyc7CiRsYW5nWydlcnJvcl9tZW1iZXJncm91cHMnXSA9ICfOkc+Fz4TPjM+CIM6/IM+Hz4HOrs+Dz4TOt8+CIM60zrXOvSDOtc6vzr3Osc65IM68zq3Ou86/z4IgzrrOsc68zrzOr86xz4Igzr/OvM6szrTOsc+CJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICfOp8+Jz4HOr8+CIM65zrTOuc+Mz4TOt8+EzrXPgic7CiRsYW5nWyd2YWx1ZSddID0gJ86kzrnOvM6uJzsKJGxhbmdbJ2dyb3VwcyddID0gJ86fzrzOrM60zrXPgic7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnzpnOtM65z4zPhM63z4TOtc+CJzsKJGxhbmdbJ3Byb3BuYW1lJ10gPSAnzozOvc6/zrzOsSDOuc60zrnPjM+EzrfPhM6xz4InOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnzqTOuc68zq4gzrnOtM65z4zPhM63z4TOsc+CJzsKJGxhbmdbJ2FkZCddID0gJ86gz4HOv8+DzrjOrs66zrcnOwokbGFuZ1snZWRpdCddID0gJ86Vz4DOtc6+zrXPgc6zzrHPg86vzrEnOwokbGFuZ1snZXhwaXJlcyddID0gJ86bzq7Os861zrknOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnzp/Pgc65z4POvM+Mz4IgzrfOvM61z4HOv868zrfOvc6vzrHPgic7CiRsYW5nWycxMmhycyddID0gJzEyIM+Oz4HOtc+CJzsKJGxhbmdbJzI0aHJzJ10gPSAnMjQgz47Pgc61z4InOwokbGFuZ1snNDhocnMnXSA9ICc0OCDPjs+BzrXPgic7CiRsYW5nWycxd2VlayddID0gJzEgzrXOss60zr/OvM6szrTOsSc7CiRsYW5nWycyd2Vla3MnXSA9ICcyIM61zrLOtM6/zrzOrM60zrXPgic7CiRsYW5nWycxbW9udGgnXSA9ICcxIM68zq7Ovc6xz4InOwokbGFuZ1snM21vbnRocyddID0gJzMgzrzOrs69zrXPgic7CiRsYW5nWyc2bW9udGhzJ10gPSAnNiDOvM6uzr3Otc+CJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSDOrc+Ezr/Pgic7CiRsYW5nWyduZXZlciddID0gJ86gzr/PhM6tJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsbWVzc2FnZSddID0gJ86kzr8gzqzPgc64z4HPic68zrEgzrXOs866zrHPhM6xz4PPhM6szrjOt866zrUgzrXPgM65z4TPhc+Hz47Pgi48YnIvPs6SzrXOss6xzrnPic64zq7PhM61IM+Mz4TOuSDOv8+Bzq/Pg86xz4TOtSDOtM65zrrOsc65z47OvM6xz4TOsSAizqTPgc6/z4DOv8+Azr/Or863z4POtyDOuc60zrnOv8+Ezq7PhM+Jzr0gz4PPhM6xIM60zrnOus6xzrnPjs68zrHPhM6xIM+Ezr/PhSBGcm9udEVuZFVzZXIuIic7CiRsYW5nWydwYXNzd29yZCddID0gJ86az4nOtM65zrrPjM+CIM+Az4HPjM+DzrLOsc+DzrfPgic7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ86Vz4DOsc69zqzOu863z4jOtyc7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnzpcgzr/OvM6szrTOsSDOvM61IM6xz4XPhM6uzr0gz4TOt869IM6/zr3Ov868zrHPg86vzrEgz4XPgM6sz4HPh861zrkgzq7OtM63JzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ86Vz4DOtc6+zrXPgc6zzrHPg86vzrEgzr/OvM6szrTOsc+CJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ86Rz4DOv8+Dz4TOv867zq4nOwokbGFuZ1snY2FuY2VsJ10gPSAnzobOus+Fz4HOvyc7CiRsYW5nWydkZWxldGUnXSA9ICfOlM65zrHOs8+BzrHPhs6uJzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnzpXOr8+Dz4TOtSDPg86vzrPOv8+Fz4HOv865IM+Mz4TOuSDOsc+Fz4TOrc+CIM61zq/Ovc6xzrkgzr/OuSDOus6xz4TOrM67zrvOt867zrXPgiDPgc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM6xz4XPhM6uzr0gz4TOt869IM6/zrzOrM60zrE/XFxuIM6XIM6xz4DOv861zr3Otc+BzrPOv8+Azr/Or863z4POtyDOvM65zrHPgiDOuc60zrnPjM+EzrfPhM6xz4IgzrTOtc69IDjOsSDOrc+HzrXOuSDPic+CIM+Dz4XOvc6tz4DOtc65zrEgz4TOt869IM60zrnOsc6zz4HOsc+Gzq4gzrrOrM+Azr/Ouc6xz4IgzrXOs86zz4HOsc+Gzq7PgiDPg8+Ezr/OvSDPgM6vzr3Osc66zrEgzrnOtM65zr/PhM6uz4TPic69IM6zzrnOsSDPhM63zr0gzr/OvM6szrTOsS/Ph8+Bzq7Pg8+EzrcuICDOkc+AzrvOrCDOtM61zr0gOM6xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xLic7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZWdyb3VwJ10gPSAnzpXOr8+Dz4TOtSDPg86vzrPOv8+Fz4HOv865IM6zzrnOsSDPhM63zr0gzrTOuc6xzrPPgc6xz4bOriDOsc+Fz4TOrs+CIM+EzrfPgiDOv868zqzOtM6xz4I/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3Byb3AnXSA9ICfOlc6vz4PPhM61IM+Dzq/Os86/z4XPgc6/zrkgzrPOuc6xIM+EzrfOvSDPgM67zq7Pgc63IM60zrnOsc6zz4HOsc+Gzq4gzrHPhc+Ezq7PgiDPhM63z4IgzrnOtM65z4zPhM63z4TOsc+CP1xcbs6azrHPhFwnzrHPhc+Ez4zOvSDPhM6/zr0gz4TPgc+Mz4DOvyDOuM6xIM60zrnOsc6zz4HOsc+Gzr/Pjc69IM66zrHOuSDOv8+Azr/Ouc61z4IgzrXOs86zz4HOsc+Gzq3PgiDPh8+Bzq7Pg8+EzrcgzrHPhs6/z4HOv8+Nzr0gz4TOt869IM65zrTOuc+Mz4TOt8+EzrEgzrHPhc+Ezq4uJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ86RzrrOsc64z4zPgc65z4PPhM61z4Igz4DOsc+BzqzOvM61z4TPgc6/zrknOwokbGFuZ1snaWQnXSA9ICfOkc69zrHOs869z4nPgc65z4PPhM65zrrPjCc7CiRsYW5nWyduYW1lJ10gPSAnzp/Ovc6/zrzOsc+Dzq/OsSc7CiRsYW5nWydlcnJvcl9jYW50YWRkZ29ydXAnXSA9ICfOoM+Bz4zOss67zrfOvM6xIM+Dz4TOt869IM+Az4HOv8+DzrjOrs66zrcgzr/OvM6szrTOsc+CJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXJhbXMnXSA9ICfOnM6uIM6tzrPOus+Fz4HOtc+CIM+AzrHPgc6szrzOtc+Ez4HOv865JzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnzpXPhs6xz4HOvM6/zrPOric7CiRsYW5nWydmaWx0ZXInXSA9ICfOps6vzrvPhM+Bzr8nOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ1JlZ3VsYXIgRXhwcmVzc2lvbiDOs865zrEgz4TOvyDPjM69zr/OvM6xIM+Hz4HOrs+Dz4TOtyc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ86gzrXPgc65zrPPgc6xz4bOric7CiRsYW5nWydncm91cG5hbWUnXSA9ICfOn869zr/OvM6xz4POr86xIM6/zrzOrM60zrHPgic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICfOkc+AzrHOs86/z4HOtc+NzrXPhM6xzrkgzrcgz4DPgc+Mz4POss6xz4POty4nOwokbGFuZ1snZXJyb3InXSA9ICfOo8+GzqzOu868zrEnOwokbGFuZ1snYWRkZ3JvdXAnXSA9ICfOoM+Bzr/Pg864zq7Ous63IM69zq3Osc+CIM6fzrzOrM60zrHPgic7CiRsYW5nWydhZGR1c2VyJ10gPSAnzqDPgc6/z4POuM6uzrrOtyDOvc6tzr/PhSDPh8+Bzq7Pg8+EzrcnOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ86Vz4XPgc6tzrjOt866zrHOvSDOv865IM+AzrHPgc6xzrrOrM+Ez4kgz4fPgc6uz4PPhM61z4Igz4DOv8+FIM65zrrOsc69zr/PgM6/zrnOv8+Nzr0gz4TOsSDOus+BzrnPhM6uz4HOuc6xJzsKJGxhbmdbJ2dyb3VwJ10gPSAnzp/OvM6szrTOsSc7CiRsYW5nWydzZWxlY3Rncm91cCddID0gJ86Vz4DOuc67zr/Os86uIM6/zrzOrM60zrHPgic7CiRsYW5nWydyZWdpc3RyYXRpb25fdGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyDOtc6zzrPPgc6xz4bOrs+CJzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ86gz4HPjM+Ez4XPgM6/IM6xz4DOv8+Dz43Ovc60zrXPg863z4InOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyDPg8+Nzr3OtM61z4POt8+CJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnzqDPgc6/z4TOuc68zq7Pg861zrnPgic7CiRsYW5nWyd1c2VycyddID0gJ86nz4HOrs+Dz4TOtc+CJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ86UzrnOsc+HzrXOr8+BzrnPg863IM61zrPOs861zrPPgc6xzrzOrc69z4nOvSDPh8+BzrfPg8+Ez47OvSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ86UzrnOsc+HzrXOuc+BzrnPg8+EzrXOr8+EzrUgz4TOv8+Fz4IgzrXOs86zzrXOs8+BzrHOvM6tzr3Ov8+Fz4Igz4fPgc6uz4PPhM61z4InOwokbGFuZ1snZGVmYXVsdGZyb250cGFnZSddID0gJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc63IM6xz4HPh865zrrOriDPg861zrvOr860zrEnOwokbGFuZ1snbGFzdGFjY2Vzc2VkcGFnZSddID0gJ86jzrXOu86vzrTOsSDPgM6/z4Ugz4DPgc6/z4PPgM61zrvOrM+Dz4TOt866zrUgz4DPgc+Mz4PPhs6xz4TOsSc7CiRsYW5nWydvdGhlcnBhZ2UnXSA9ICfOhs67zrvOtyDPg861zrvOr860zrE6ICc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+MC4wLjEgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCBOUlBUIChOb3QgUmVhZHkgZm9yIFByaW1lIFRpbWUpIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4wIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjEgLSBPY3RvYmVyLCAyMDA1IC0gRml4ZWQgaXNzdWVzIHdpdGggcHJvcGVydGllczwvbGk+DQo8bGk+MC4xLjIgLSBPY3RvYmVyLCAyMDA1IC0gQWRkZWQgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHk8L2xpPg0KPGxpPjxwPjAuMS4zIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHJlZGlyZWN0IHBhZ2Ugb24gbG9naW4sIGxvZ291dCwgZm9yZ290IHBhc3N3b3JkLCBhbmQgY2hhbmdlIHNldHRpbmdzLCBhbmQgYWRkZWQgdGhlIHJldHVybnRvIGFuZCBmb3JtIHBhcmFtZXRlcnMgdG8gdGhlIHVzZXIgc2lkZSBvZiB0aGluZ3MsIGFsc28gZGlkIGEgY291cGxlIGxmIGxpdHRsZSBjbGVhbnVwcy4gIFRoaXMgdmVyc2lvbiByZXF1aXJlcyB2MC4xMSBhbmQgYWJvdmUgZm9yIGNlcnRhaW4uPC9wPjwvbGk+DQo8bGk+MC4xLjQgLSBOb3ZlbWJlciwgMjAwNSAtIFZlcnkgbWlub3IgY2hhbmdlIHdpdGggcmVzcGVjdCB0byBhIGZvcmdvdHRlbiBhbmQgbm8gbG9uZ2VyIG5lZWRlZCBmdW5jdGlvbiBjYWxsPC9saT4NCjxsaT48cD4wLjEuNSAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFub3RoZXIgdmVyeSBtaW5vciBjaGFuZ2UsIGFkZGVkIHNvbWUgdGV4dCB0byB0aGUgUG9zdEluc3RhbGwgbWVzc2FnZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNiAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5DaGFuZ2VzIHRvIHRoZSBwZXJtaXNzaW9uIG1vZGVsLCBhbmQgbWlub3IgYnVnIGZpeGVzIHRvIHRoZSBwcmVmZXJlbmNlcy4gIEFsc28gc29tZSBwaHA1IGZpeGVzIGJ1dCBJIGFtIHN1cmUgdGhhdCB0aGVyZSBhcmUgbW9yZSBvdXQgdGhlcmUuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjcgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+TWFueSB0aGFua3MgdG8gPGI+a2F0b248L2I+IGZvciBhZGRpbmcgdGhlIHRleHRhcmVhIGFuZCBkcm9wZG93biBwcm9wZXJ0eSB0eXBlcy48L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHByb3BlcnR5IGFkZGluZyB0byBmaXggcHJvYmxlbXMgd2l0aCBzcGFjZXMgaW4gcHJvcGVydHkgbmFtZXMgKHdlIG5vIGxvbmdlciBsZXQgdGhhdCBoYXBwZW4pLjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjAgLSBGZWJydWFyeSwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIGZpbHRlcmluZyBhbmQgcm93IGxpbWl0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbC4gVGhpcyB3aWxsIGhhdmUgYmlnIGJlbmVmaXRzIHRvIHRob3NlIHRoYXQgYXJlIHVzaW5nIHRoaXMgbW9kdWxlIGZvciBoaWdoIHRyYWZpYywgYW5kIGhpZ2ggdXNlciBzaXRlcy48L3A+DQogICAgPHA+QWRkZWQgc29ydGluZyB0byB0aGUgYWRtaW4gcGFuZWw8L3A+DQogICAgPHA+QWRkZWQgbWF4IGxlbmd0aCBhYmlsaXR5IHRvIHRleHQgYW5kIGVtYWlsIGZpZWxkczwvcD4NCiAgICA8cD5GaXhlZCBhIHNtYWxsIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBncm91cCBub3QgYmVpbmcgY2hlY2tlZCB3aGVuIGFkZGluZyBhIHVzZXI8L3A+DQogICAgPHA+U2F2ZSBmaWx0ZXIgc2V0dGluZ3MgaW4gcHJlZmVyZW5jZXMsIGFuZCB0aGUgYWN0aXZlIHRhYiB0b28uPC9wPg0KICAgIDxwPkRlbGV0ZSB1c2VyIHByb3BlcnRpZXMgd2hlbiBhIHByb3BlcnR5IGlzIGRlbGV0ZWQgPGVtPk5vdGU8L2VtPiwgbm90IHdoZW4gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIGVkaXQgZ3JvdXAgZGlhbG9nPC9wPg0KICAgIDxwPkFkZCBjb25maXJtYXRpb24gbWVzc2FnZSBpbiBlZGl0IGdyb3Vwcy48L3A+DQogICAgPHA+QWRkZWQgYSBjb3VwbGUgbW9yZSBjb25maXJtYXRpb24gbWVzc2FnZXMuPC9wPg0KICAgIDxwPkFkZGVkIENTViBFeHBvcnQgb3B0aW9uPC9wPg0KICAgIDxwPlRvZG8gLSBBZGQgcHJlZmVyZW5jZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZGxlbmd0aDwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjEgLSBGZWJydWFyeSwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZW1haWwgYWRkcmVzc2VzPC9wPg0KICAgIDxwPkZpeCBwcm9ibGVtIHdoZXJlIGV4cGlyeSBkYXRlIHdhcyBiZWluZyBtb2RpZmllZCB3aGVuIGFkbWluIG1vZGlmaWVkIHVzZXIgc2V0dGluZ3M8L3A+DQogICAgPHA+QWRkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIHN1Ym1pdCBidXR0b248L3A+DQogICAgPHA+Rml4ZWQgYSBtaW5vciBidWcgd2hlbiBjb3V0aW5nIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gYSBncm91cDwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgc2l6ZSBvZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRzLCBhbmQgbWF4bGVuZ3RoPC9wPg0KICAgIDxwPkFkZGVkIGFkdmFuY2VkIGZpbHRlcmluZyBvbiBwcm9wZXJ0aWVzPC9wPg0KPC9wPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzcyk8L2k+LiAgSXQgYWxsb3dzIGNyZWF0aW9uIG9mIHVzZXIgZ3JvdXBzLCBhbmQgdXNlciBhY2NvdW50cyBhbmQgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQuICBpdCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBDdXN0b21Db250ZW50IG1vZHVsZSB0byBkaXNwbGF5IGRpZmZlcmVudCBjb250ZW50IHRvIGRpZmZlcmVudCB1c2VycyBvbmNlIHRoZXkgaGF2ZSBsb2dnZWQgaW48L3A+DQo8aDM+RmVhdHVyZXM8L2gzPg0KPHVsPg0KPGxpPjxwPlVzZXIgYWNjb3VudCBleHBpcmF0aW9uLiAgWW91IGNhbiBjcmVhdGUgdGVtcG9yYXJ5IHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHM8L3A+PC9saT4NCjxsaT48cD5DYXBhYmxlIG9mIGhhbmRsaW5nIGh1bmRyZWRzIG9mIHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+SGFzIGFuIGV4dGVuc2l2ZSBBUEkgZm9yIGFkZGluZyBmdW5jdGlvbmFsaXR5PC9wPjwvbGk+DQo8L3VsPg0KPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+DQo8dWw+DQo8bGk+PHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB1bmRlciB0aGUgIlVzZXJzICYgZ0dyb3VwcyIgbWVudS48L3A+PC9saT4NCjxsaT4NCjxwPlNlY29uZGx5LCB5b3Ugc2hvdWxkIGRlZmluZSBwcm9wZXJ0aWVzLiAgUHJvcGVydGllcyBhcmUgZXNzZW50aWFsbHkgZmllbGQgZGVmaW5pdGlvbnMsIGhlcmUgeW91IHNwZWNpZnkgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gZ2F0aGVyLCBhbmQgbGltaXRzLiBpLmU6ICBOYW1lLCBBZ2UsIENpdHksIFN0YXRlLCBDb3VudHJ5LCBFbWFpbCBhZGRyZXNzLCBldGMuPC9wPg0KPHA+PGI+Tm90ZTo8L2I+IFlvdSBkbyBub3QgbmVlZCB0byBkZWZpbmUgcHJvcGVydGllcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3U8L2I+DQo8L2xpPg0KPGxpPjxwPk5leHQgeW91IHNob3VsZCBjcmVhdGUgb25lIG9yIG1vcmUgdXNlciBncm91cHMuICBXaGVuIHlvdSBjcmVhdGUgYSBncm91cCwgeW91IGFyZSBhc2tlZCBmb3IgYSBncm91cCBuYW1lLCBhIGRlc2NyaXB0aW9uIGFuZCB0byBhc3NvY2lhdGUgcHJvcGVydGllcyB3aXRoIHRoYXQgZ3JvdXAsIHNwZWNpZnkgdGhlIHByb3BlcnRpZXMgc29ydCBvcmRlciwgYW5kIHdldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZCA8aT4ob2ZmIGlzIGFsc28gdmFsaWQpPC9pPjwvcD48L2xpPg0KPGxpPjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuPC9wPjwvbGk+DQo8bGk+PHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrIFxcXCdOZXh0XFxcJzwvcD4NCjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzLCBhbmQgdGhlbiB5b3UgY2FuIGVkaXQgdGhlaXIgZ3JvdXAgaW5mb3JtYXRpb24uICBidXQgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHBsZWFzZSBjcmVhdGUgYXQgbGVzdCBvbmUgdXNlcjwvcD48L2xpPg0KPGxpPjxwPkxhc3RseSwgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGZpZWxkcyB0byBiZSBwcmVzZW50ZWQgZm9yIHRoYXQgdXNlciwgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGZvcm0gYXNraW5nIGZvciBhbGwgb2YgdGhlIHJlcXVpcmVkIHVzZXIgaW5mb3JtYXRpb24uICBDb21wbGV0ZSB0aGlzIGZvcm0gdG8gY29tcGxldGUgdGhlIHVzZXIgYWRkaXRpb248L3A+PC9saT4NCjxsaT48cD5Zb3UgYXJlIG5vdyByZWFkeSB0byBhZGQgdGhlIGZyb250IGVuZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgc2l0ZS4gIFRoaXMgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUge2Ntc19tb2R1bGUgbW9kdWxlPUZyb250RW5kVXNlcnN9IHRhZyB0byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGU8L3A+PC9saT4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVxcXCdzDQptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vdGVjaGNvbS5keW5kbnMub3JnJnF1b3Q7PnRlY2hjb20uZHluZG5zLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZvcm09Im5hbWUiPC9saT4NCjxwPkZvcm1zOg0KPHVsPg0KIDxsaT48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm08L2xpPg0KIDxsaT48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybTwvbGk+DQogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPg0KIDxsaT48ZW0+Zm9yZ290cHc8L2VtPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtPC9saT4NCjwvdWw+DQo8L3A+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiByZXR1cm50bz0icGFnZSI8L2xpPg0KPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPg0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPlJlcXVpcmVtZW50czwvaDM+DQo8cD5JbiBvcmRlciB0byBpbXBsZW1lbnQgdGhlIGZvcmdvdHRlbiBwYXNzd29yZCBmdW5jdGlvbmFsaXR5LCB0aGlzIG1vZHVsZSByZXF1aXJlcyB0aGUgQ01TTWFpbGVyIG1vZHVsZSB0byBiZSBwcmV2aW91c2x5IGluc3RhbGxlZDwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0IMKpIDIwMDUsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/et_EE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdTZWUga2FzdXRhamEgb24ganViYSBzaXNzZSBsb2dpdHVkJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXSA9ICdMdWJhIGthc3V0YWphdGVsIGxvZ2lkYSBzaXNzZSByb2hrZW0sIGt1aSAmdXVtbDtrcyBrb3JkJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnPGgzPk9uRGVsZXRlVXNlcjxoMz4NCjxwPlMmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphIGt1c3R1dGFtaXNlbDwvcD4NCjxoND5QYXJhbWVldHJpZDwvaDQ+DQo8dWw+DQo8bGk+PGVtPmthc3V0YWphbmltaTwvZW0+IC0ga2FzdXRhamEgbmltaTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBrYXN1dGFqYSBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlVXNlciddID0gJzxoMz5PbkNyZWF0ZVVzZXI8aDM+DQo8cD5TJnV1bWw7bmRtdXMsIG1pcyBnZW5lcmVlcml0YWtzZSB1dWUga2FzdXRhamEgbG9vbWlzZWw8L3A+DQo8aDQ+UGFyYW1lZXRyaWQ8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uaW1pPC9lbT4gLSBrYXN1dGFqYSBuaW1pPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIGthc3V0YWphIGlkPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVHcm91cCddID0gJzxoMz5PbkNyZWF0ZUdyb3VwPGgzPg0KPHA+UyZ1dW1sO25kbXVzLCBtaXMgZ2VuZXJlZXJpdGFrc2Uga2FzdXRhamFncnVwaSBsb29taXNlbDwvcD4NCjxoND5QYXJhbWVldHJpZDwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5pbWk8L2VtPiAtIGdydXBpIG5pbWk8L2xpPg0KPGxpPjxlbT5raXJqZWxkdXM8L2VtPiAtIGdydXBpIGtpcmplbGR1czwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBncnVwaSBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlR3JvdXAnXSA9ICc8aDM+T25EZWxldGVHcm91cDxoMz4NCjxwPlMmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphZ3J1cGkga3VzdHV0YW1pc2VsPC9wPg0KPGg0PlBhcmFtZWV0cmlkPC9oND4NCjx1bD4NCjxsaT48ZW0+bmltaTwvZW0+IC0gZ3J1cGkgbmltaTwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBncnVwaSBpZDwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICc8aDM+T25Mb2dpbjxoMz4NCjxwPlMmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphIHNpc3NlbG9naW1pc2VsIHMmdXVtbDtzdGVlbWk8L3A+DQo8aDQ+UGFyYW1lZXRyaWQ8L2g0Pg0KPHVsPg0KPGxpPjxlbT5rYXN1dGFqYW5pbWk8L2VtPiAtIFNpc3NlIGxvZ2ludWQga2FzdXRhamEga2FzdXRhamFuaW1pPC9saT4NCjxsaT48ZW0+aXA8L2VtPiAtIEtsaWVuZGkgSVAgYWFkcmVzczwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dvdXQnXSA9ICc8aDM+T25Mb2dpbjxoMz4NCjxwPlMmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphIHYmYXVtbDtsamFsb2dpbWlzZWwgcyZ1dW1sO3N0ZWVtaXN0PC9wPg0KPGg0PlBhcmFtZWV0cmlkPC9oND4NCjx1bD4NCjxsaT48ZW0+a2FzdXRhamFuaW1pPC9lbT4gLSBTaXNzZSBsb2dpbnVkIGthc3V0YWphIGthc3V0YWphbmltaTwvbGk+DQo8bGk+PGVtPmlwPC9lbT4gLSBLbGllbmRpIElQIGFhZHJlc3M8L2xpPg0KPC91bD4NCg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25FeHBpcmVVc2VyJ10gPSAnPHA+UyZ1dW1sO25kbXVzLCBtaXMgZ2VuZXJlZXJpdGFrc2Uga2FzdXRhamEgc2Vzc2lvb25pIGFlZ3VtaXNlbDwvcD4NCjxoND5QYXJhbWVldHJpZDwvaDQ+DQo8dWw+DQo8bGk+PGVtPmthc3V0YWphbmltaTwvZW0+IC0gYWVndW51ZCBrYXN1dGFqYSBrYXN1dGFqYW5pbWk8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gYWVndW51ZCBrYXN1dGFqYSBJRDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbiddID0gJ1MmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphIHNpc3NlbG9naW1pc2VsIHMmdXVtbDtzdGVlbWknOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ291dCddID0gJ1MmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphIHYmYXVtbDtsamFsb2dpbWlzZWwgcyZ1dW1sO3N0ZWVtaXN0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25FeHBpcmVVc2VyJ10gPSAnUyZ1dW1sO25kbXVzLCBtaXMgZ2VuZXJlZXJpdGFrc2Uga2FzdXRhamEgc2Vzc2lvb25pIGFlZ3VtaXNlbCc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlVXNlciddID0gJ1MmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIHV1ZSBrYXN1dGFqYSBsb29taXNlbCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlVXNlciddID0gJ1MmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWpha29udG8ga3VzdHV0YW1pc2VsJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVHcm91cCddID0gJ1MmdXVtbDtuZG11cywgbWlzIGdlbmVyZWVyaXRha3NlIGthc3V0YWphZ3J1cGkgbG9vbWlzZWwnOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZUdyb3VwJ10gPSAnUyZ1dW1sO25kbXVzLCBtaXMgZ2VuZXJlZXJpdGFrc2Uga2FzdXRhamFncnVwaSBrdXN0dXRhbWlzZWwnOwokbGFuZ1snYmFja2VuZF9ncm91cCddID0gJ0FkbWluaXN0cmFhdG9yaWxpaWRlc2UgZ3J1cHAnOwokbGFuZ1snaW5mb19zdGFyJ10gPSAnKiBWJmF1bWw7bGphZGVsIHYmb3RpbGRlO2liIGthc3V0YWRhIGomYXVtbDtyZ25ldmFpZCBtYWtyb3NpOiB7JHVzZXJuYW1lfSx7JGdyb3VwfS4gS2FzdXRhZGVzIHskZ3JvdXB9IG1ha3JvdCwgYXNlbmRhYiBzJnV1bWw7c3RlZW0gZXNpbWVzZSBncnVwaSBuaW1lLCBtaWxsZXNzZSBrYXN1dGFqYSBrdXVsdWIsIGphIHN1dW5hYiBlZGFzaSBzZWxsZWxlIGxlaGVsZS4nOwokbGFuZ1snaW5mb19hZG1pbl9wYXNzd29yZCddID0gJ0thc3V0YWphIHBhcm9vbGkgdGFhc3RhbWlzZWtzIG11dWRhIHNlZGEgdiZhdW1sO2xqYSc7CiRsYW5nWydpbmZvX2FkbWluX3JlcGVhdHBhc3N3b3JkJ10gPSAnS2FzdXRhamEgcGFyb29saSB0YWFzdGFtaXNla3MgbXV1ZGEgc2VkYSB2JmF1bWw7bGphJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cyddID0gJ1NlbGxpc2Ugbm5pbWVnYSBrYXN1dGFqYSBqdWJhIGVrc2lzdGVlcmliJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ0NTViBla3Nwb3J0IGVpIHRvb251ZCB0dWxlbXVzaSc7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdLYXN1dGFqYW5pbWUgbGFodHJpIHBpa2t1cyc7CiRsYW5nWydwcm9tcHRfcHdmbGRsZW4nXSA9ICdQYXJvb2xpIGxhaHRyaSBwaWtrdXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkbGVuZ3RocyddID0gJ01pbi9NYXggcGFyb29saSBwaWtrdXNlZCBvbiB2aWdhc2VkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZWxlbmd0aHMnXSA9ICdNaW4vTWF4IGthc3V0YWphbmltZSBwaWtrdXNlZCBvbiB2aWdhc2VkJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxhZGRyZXNzJ10gPSAnTWVpIGVpIHN1dXRudWQgbGVpZGEgc2VsbGUga29udG9nYSBzZW90dWQgZS1tYWlsaSBhYWRyZXNzaSc7CiRsYW5nWyd1c2VyX2FkZGVkJ10gPSAnS2FzdXRhamEgbGlzYXR1ZCAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ2thc3V0YWphIGt1c3R1dGF0dWQgdWlkPSVzJzsKJGxhbmdbJ3Byb3BlcnR5ZmlsdGVyJ10gPSAnT21hZHVzJzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdWJmF1bWw7JmF1bWw7cnR1cyAodmFiYXMgdm9ybWlzKSc7CiRsYW5nWyd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCddID0gJ0hvaWF0dXM6IE5lZWQgbGFodHJpZCBtJm90aWxkZTtqdXRhdmFkIHZvcm1pZGUgbGFodHJpdGUgc3V1cnVzaS4gU2VsbGUgbnVtYnJpIHYmYXVtbDtoZW5kYW1pbmUgb2xlbWFzb2xldmFsIHNhaWRpbCBlaSBwcnV1Z2kgb2xsYSBzb292aXRhdGF2JzsKJGxhbmdbJ2NvbmZpcm1fc3VibWl0cHJlZnMnXSA9ICdNdXVkYSBhZG1pbm5pIGVlbGlzdHVzaT8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0UtbWFpbGkgYWFkcmVzcyBvbiBqdWJhIGthc3V0dXNlcyc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJ0x1YmEgZS1tYWlsaSBkdXBsaWthYXRlJzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJyhsdWJhIG1pdG1lbCBrYXN1dGFqYWwga2FzdXRhZGEgc2FtYSBlLW1haWxpIGFhZHJlc3NpKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcm5hbWUnXSA9ICdTYSBlaSBzaXNlc3RhbnVkIGthc3V0YWphbmltZSc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdTYSBlaSBzaXNlc3RhbnVkIHBhcm9vbGknOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ291dCddID0gJ0Vlc2xpaWRlc2UgS2FzdXRhamEgViZhdW1sO2xqYWxvZ2ltaW5lJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dnZWRpbiddID0gJ0Vlc2xpaWRlc2UgS2FzdXRhamEgU2lzc2Vsb2dpbWluZSc7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPGZvbnQgY29sb3I9JnF1b3Q7cmVkJnF1b3Q7PjxiPkVUVEVWQUFUVVNUPC9iPiBvbGVtYXNvbGV2YXRlIG9tYWR1c3RlIG11dXRtaW5lIHYmb3RpbGRlO2liIGomYXVtbDsmYXVtbDtkYXZhbHQga2FoanVzdGFkYSBvbGVtYXNvbGV2YXQgc2FpdGk8aT4oZXJpdGksIGt1aSBsJnV1bWw7aGVuZGFkIHYmYXVtbDtsamFkZSBwaWtrdXNpIHZtcy4pPC9pPjwvZm9udD4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdTZWUgZnVua3RzaW9vbiBlaSB0Jm91bWw7Jm91bWw7dGEgd2luZG93cyYjMDM5O2lsJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICcmQXVtbDtyYSBsb28ga2FzdXRhamFuaW1lIHYmb3RpbGRlO2kgcGFyb29saSBsYWh0cmVpZCAtIG5lZWQgb24ganViYSBGcm9udEVuZFVzZXJzIG1vb2R1bGlzc2Ugc2lzc2UgZWhpdGF0dWQnOwokbGFuZ1sncHJvbXB0X2V4cG9ydGNzdiddID0gJ0Vrc3BvcmRpIEthc3V0YWphZCBDU1YmIzAzOTtzc2UnOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRWtzcG9yZGknOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbmlzdHJhYXRvcic7CiRsYW5nWydlZGl0cHJvcCddID0gJ011dWRhIE9tYWR1c3QnOwokbGFuZ1snbWF4bGVuZ3RoJ10gPSAnTWFrc2ltYWFsbmUgcGlra3VzJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdMb29kdWQnOwokbGFuZ1snc29ydGJ5J10gPSAnU29ydGVlcmknOwokbGFuZ1snc29ydCddID0gJ1NvcnRlZXJpbWluZSc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdLYXN1dGFqYSh0KSB2YWxpdHVkIGdydXBwcGlkZXMnOwokbGFuZ1sndXNlcmxpbWl0J10gPSAnVHVsZW11c2knOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnU2VsbGVsZSBrYXN1dGFqYWxlIGVpIGxlaXR1ZCBlLW1haWxpIHYmYXVtbDtsamEuIFYmb3RpbGRlO2liLW9sbGEgcGVha3NpZCBrb250YWt0ZWVydW1hIHMmdXVtbDtzdGVlbWlhZG1pbmlzdHJhYXRvcmlnYT8nOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdMZWhlSUQvQWxpYXMgVW51c3RhdHVkIFBhcm9vbGkgdm9ybWkgamFva3MnOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdMZWhlSUQvQWxpYXMgU2VhZGV0ZSB2b3JtaSBqYW9rcyc7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ0xlaGVJRC9BbGlhcywga3VodSBzdXVuYXRhIHBlYWxlIHNpc3NlbG9naW1pc3QgKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdMZWhlSUQvQWxpYXMsIGt1aHUgc3V1bmF0YSBwZWFsZSB2JmF1bWw7bGphbG9naW1pc3QgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0ZWVyaW1pc2UgaiZhdW1sO3JqZWtvcmQnOwokbGFuZ1sncHJvbXB0X251bXJlc2V0cmVjb3JkJ10gPSAnTSZvdGlsZGU7bmVkIGthc3V0YWphZCB0YWFzdGF2YWQgb21hIGthZHVudWQgcGFyb29sZS4gSGV0a2VsIG9uIG5laWQ6JzsKJGxhbmdbJ3JlbW92ZTF3ZWVrJ10gPSAnRWVtYWxkYSBrJm90aWxkZTtpayBzaXNlc3R1c2VkLCBtaXMgb24gdmFuZW1hZCBrdWkgMSBuJmF1bWw7ZGFsJzsKJGxhbmdbJ3JlbW92ZTFtb250aCddID0gJ0VlbWFsZGEgayZvdGlsZGU7aWsgc2lzZXN0dXNlZCwgbWlzIG9uIHZhbmVtYWQga3VpIDEga3V1JzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ0VlbWFsZGEgayZvdGlsZGU7aWsgc2lzZXN0dXNlZCc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnT2xlZCBzYSBraW5kZWw/JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRjb2RlJ10gPSAnU2lzZXN0YXR1ZCBrb29kIG9uIHZpZ2FuZSwgcGFsdW4gcHJvb3ZpIHV1ZXN0aSc7CiRsYW5nWydlcnJvcl90ZW1wY29kZW5vdGZvdW5kJ10gPSAnU2ludSBrYXN1dGFqYSBJRC1sZSB2YXN0YXZhdCBhanV0aXN0IGtvb2RpIGFuZG1lYmFhc2lzdCBlaSBsZWl0dWQnOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdmVyaWZ5dGVtcGxhdGUnXSA9ICdLaW5uaXRhbWlzZSB2b3JtaSBtYWxsJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX2VtYWlsdGVtcGxhdGUnXSA9ICdVbnVzdGF0dWQgcGFyb29saSBlLW1haWxpIG1hbGwnOwokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ0thcyBzaW5hIHYmb3RpbGRlO2kga2VlZ2kgdGVpbmUgb24ganViYSBzZWxsZSBrYXN1dGFqYWtvbnRvIHBhcm9vbGkgdGFhc3RhbWlzdCBhbHVzdGFudWQuICBLb250cm9sbGkgb21hIGUtbWFpbGksIHNlYWwgdiZvdGlsZGU7aXZhZCBvbGxhIGVkYXNpc2VkIGp1aHRuJm91bWw7Jm91bWw7cmlkLCBrdWlkYXMgb21hIHBhcm9vbGkgbCZhdW1sO2h0ZXN0YWRhJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdBbmRtZWJhYXNpIHZpZ2EnOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnU2FpZCBzZWxsZSBraXJqYSwga3VuYSBrZWVnaSAmdXVtbDt0bGVzIG1laWUgbGVoZWxlLCBldCBvbGVkIGthb3RhbnVkIG9tYSBwYXJvb2xpLiBLdWkgc2VlIG9uIG5paSwgbG9lIGp1aGlzZWlkIGFsbHBvb2wuIEt1aSBzdWwgcG9sICZvdGlsZGU7cm5hIGFpbXVnaSwgbWlsbGVzdCBqdXR0IGsmYXVtbDtpYiwgdiZvdGlsZGU7aWQgc2VsbGUga2lyamEga3VzdHV0YWRhLic7CiRsYW5nWydwcm9tcHRfY29kZSddID0gJ0tvb2QnOwokbGFuZ1snbWVzc2FnZV9jb2RlJ10gPSAnSiZhdW1sO3JnbmV2IGtvb2Qgb24gc3V2YWxpc2VsdCBnZW5lcmVlcml0dWQga2FzdXRhamFrb250byBraW5uaXRhbWlzZWtzLiBLdWkgc2Ega2xpa2lkIGFsbGomYXVtbDtyZ25ldmFsIGxpbmdpbCwgdHVsZWIgc3VsIHNlZSBrb29kIHNpc2VzdGFkYSB2YXN0YXZhc3NlIGxhaHRyaXNzZS4gVGF2YWxpc2VsdCBvbiBrb29kIGp1YmEgbGFodHJpc3NlIHNpc2VzdGF0dWQsIGt1aSBhZ2EgbWl0dGUsIHNpaXMga29vZCBvbjonOwokbGFuZ1sncHJvbXB0X2xpbmsnXSA9ICdLbGlra2lkZXMgYWxsaiZhdW1sO3JnbmV2YWwgbGluZ2lsIHZpaWFrc2Ugc2luZCBzYWlkaWxlLCBrdXMgc2FhZCBzaXNlc3RhZGEgJnV1bWw7bGFscG9vbCB0b29kdWQga29vZGkgamEgdGFhc3RhZGEgb21hIHBhcm9vbGk6JzsKJGxhbmdbJ2xvc3RwYXNzd29yZF9lbWFpbHN1YmplY3QnXSA9ICdLYW90YXNpZCBTYWxhcyZvdGlsZGU7bmEnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdDTVNNYWlsZXIgbW9vZHVsaXQgZWkgc3V1ZGV0dWQgbGVpZGEnOwokbGFuZ1snaW5mb19mb3Jnb3Rwd21lc3NhZ2VzZW50J10gPSAnQWFkcmVzc2lsZSAlcyBvbiBzYWFkZXR1ZCBlLW1haWwganVoaXN0ZWdhLCBrdWlkYXMgc2Egc2FhZCBvbWEgcGFyb29saSB0YWFzdGFkYS4gVCZhdW1sO25hbWUnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdUaXBpIHNpc3NlIG9tYSBrYXN1dGFqYW5pbWkgbmluZyBtZSBzYWFkYW1lIHN1bGxlIGUtbWFpbGlnYSBqdWhpc2VkLCBrdWlkYXMgc2Egb21hIHBhcm9vbGkgdGFhc3RhZGEgc2FhZCc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ1VudXN0YXR1ZCBQYXJvb2xpIE1hbGxpZCc7CiRsYW5nWydlcnJvcl9wcm9wbm90Zm91bmQnXSA9ICclcyBvbWFkdXNpIGVpIGxlaXR1ZCc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnb21hZHVzKHQpIGxlaXR1ZCc7CiRsYW5nWydhZGRwcm9wJ10gPSAnTGlzYSBPbWFkdXMnOwokbGFuZ1snZXJyb3JfcmVxdWlyZWRmaWVsZCddID0gJ04mb3RpbGRlO3V0dWQgdiZhdW1sO2xpICglcykgb2xpIHQmdXVtbDtoaSc7CiRsYW5nWydpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCddID0gJ09tYSBwYXJvb2xpIG11dXRtaXNla3Mgc2lzZXN0YSBzaWlhIHV1cyBwYXJvb2wnOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdTYSBlaSBvbGUgc2lzc2UgbG9naXR1ZCc7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnU2VhZGVkJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnUmVnaXN0cmVlcmltaW5lJzsKJGxhbmdbJ2Vycm9yX2FjY291bnRleHBpcmVkJ10gPSAnU2VlIGtvbnRvIG9uIGFlZ3VudWQnOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ1ZpZ2FuZSBlLW1haWxpIGFhZHJlc3NpIHZvcm1pbmcnOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICdWaWdhbmUgYWVndW1pc2t1dXAmYXVtbDtldic7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2V0dGluZ3Byb3BlcnR5J10gPSAnVmlnYSBvbWFkdXNlICVzIG0mYXVtbDsmYXVtbDtyYW1pc2VsIGthc3V0YWphbGUgJHMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGdyb3VwaWQnXSA9ICdWaWdhbmUgZ3J1cGkgSUQgJXMnOwokbGFuZ1snaGlkZGVuZmllbGRtYXJrZXInXSA9ICdQZWlkZXR1ZCB2JmF1bWw7bGphIG1hcmtlcic7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnUGVpZGV0dWQgdiZhdW1sO2xqYSB2JmF1bWw7cnYnOwokbGFuZ1snaGlkZGVuJ10gPSAnUGVpZGV0dWQnOwokbGFuZ1snZXJyb3JfZHVwbGljYXRlbmFtZSddID0gJ1NlbGxpc2UgbmltZWdhIG9tYWR1cyBqdWJhIGVrc2lzdGVlcmliJzsKJGxhbmdbJ2Vycm9yX25vcHJvcGVydGllcyddID0gJ09tYWR1c2kgZWkgb2xlJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnU2VsbGUgZ3J1cGkgamFva3MgZWkgdmFsaXR1ZCAmdXVtbDtodGVnaSBvbWFkdXN0JzsKJGxhbmdbJ2dyb3Vwc2ZvdW5kJ10gPSAnZ3J1cHAoaSkgbGVpdHVkJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdLdXVsdXZ1cyB2JmF1bWw7aGVtYWx0ICZ1dW1sO2h0ZSBncnVwcGkgb24ga29odXN0dXNsaWsnOwokbGFuZ1sncHJvbXB0X3JlcXVpcmVvbmVncm91cCddID0gJ0t1dWx1dnVzIHYmYXVtbDtoZW1hbHQgJnV1bWw7aHRlIGdydXBwaSBvbiBrb2h1c3R1c2xpayc7CiRsYW5nWydiYWNrJ10gPSAnVGFnYXNpJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nXSA9ICclcyBvbiBuJm90aWxkZTt1dHVkIHYmYXVtbDtsaSc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnTSZhdW1sO3JnaXN0YSBuJm90aWxkZTt1dHVkIHYmYXVtbDtsamFkJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ1Qmb3RpbGRlO3N0YSBuJm90aWxkZTt1dHVkIHYmYXVtbDtsamFkIGVzaWxlJzsKJGxhbmdbJ25leHQnXSA9ICdKJmF1bWw7cmdtaW5lJzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnU2VsbGlzZSBuaW1lZ2EgZ3J1cHAganViYSBla3Npc3RlZXJpYic7CiRsYW5nWydyZXF1aXJlZCddID0gJ04mb3RpbGRlO3V0dWQgViZhdW1sO2xpJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnVmFsaWt1bGluZSc7CiRsYW5nWydvZmYnXSA9ICdWJmF1bWw7bGphcyc7CiRsYW5nWydsZW5ndGgnXSA9ICdQaWtrdXMnOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4odCZhdW1sO2hlbSZhdW1sO3JrZSBsYWh0cmlzKSc7CiRsYW5nWydzZWxvcHRpb25zJ10gPSAnVmFsaWttZW4mdXVtbDsmdXVtbDsgdmFsaWt1ZCwgZXJhbGRhdHVkIHJlYXZhaGVnYSc7CiRsYW5nWyd5ZXMnXSA9ICdKYWgnOwokbGFuZ1sncHJvbXB0J10gPSAnUGVhbGtpcmknOwokbGFuZ1sndHlwZSddID0gJ1QmdXVtbDsmdXVtbDtwJzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydjaGVja2JveCddID0gJ0xpbm51a2UnOwokbGFuZ1snZW1haWwnXSA9ICdFLW1haWxpIGFhZHJlc3MnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZWtzdGl2JmF1bWw7bGknOwokbGFuZ1snZHJvcGRvd24nXSA9ICdWYWxpa21lbiZ1dW1sOyZ1dW1sOyc7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ1RlcmUgdHVsZW1hc3QsJzsKJGxhbmdbJ2xvZ291dCddID0gJ0xvZ2kgdiZhdW1sO2xqYSc7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3MnXSA9ICdTZWFkZWQnOwokbGFuZ1snZXJyb3JfbG9naW5mYWlsZWQnXSA9ICdTaXNzZWxvZ2ltaW5lIGViYSZvdGlsZGU7bm5lc3R1cy4gVmFsZSBrYXN1dGFqYW5pbWkgdiZvdGlsZGU7aSBwYXJvb2w/JzsKJGxhbmdbJ2xvZ2luJ10gPSAnTG9naSBzaXNzZSc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdLYXN1dGFqYW5pbWknOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFyb29sJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0cmVlcmknOwokbGFuZ1snZm9yZ290cHcnXSA9ICdVbnVzdGFzaWQgc2FsYXMmb3RpbGRlO25hPyc7CiRsYW5nWydkZWZhdWx0cyddID0gJ1RhYXN0YSBhbGdzZWFkZWQnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWxsJzsKJGxhbmdbJ2Vycm9yX3VzZXJub3Rmb3VuZCddID0gJ0thc3V0YWphIElELWQgZWkgbGVpdHVkJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdTZWUga2FzdXRhamFuaW1pICglcykgb24ganViYSBrYXN1dHVzZWwnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ0thc3V0YSBTTVRQLWQgZS1tYWlsaSBhYWRyZXNzaWRlIGtlaHRpdnVzZSBraW5uaXRhbWlzZWtzPyc7CiRsYW5nWydwcm9tcHRfbWlucHdsZW4nXSA9ICdNaW5pbWFhbG5lIHBhcm9vbGkgcGlra3VzJzsKJGxhbmdbJ3Byb21wdF9tYXhwd2xlbiddID0gJ01ha3NpbWFhbG5lIHBhcm9vbGkgcGlra3VzJzsKJGxhbmdbJ3Byb21wdF9taW51bmxlbiddID0gJ01pbmltYWFsbmUga2FzdXRhamFuaW1lIHBpa2t1cyc7CiRsYW5nWydwcm9tcHRfbWF4dW5sZW4nXSA9ICdNYWtzaW1hYWxuZSBrYXN1dGFqYW5pbWUgcGlra3VzJzsKJGxhbmdbJ3Byb21wdF9zZXNzaW9udGltZW91dCddID0gJ1Nlc3Npb29uaSB0YWltYXV0IChzZWt1bmRpdGVzKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ0x1YmEgRS1tYWlsaSByZWdpc3RyZWVyaW1pc3QnOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ0FsZ25lIGdydXBwIHV1dGVsZSBrYXN1dGFqYXRlbGUnOwokbGFuZ1snY2hhbmdlc2V0dGluZ3NfdGVtcGxhdGUnXSA9ICdTZWFkZXRlIG11dXRtaXNlIE1hbGwnOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCddID0gJ1Bhcm9vbGlkIGVpIGthdHR1JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZSddID0gJ0ViYXNvYml2IEthc3V0YWphbmltaSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmQnXSA9ICdFYmFzb2JpdiBTYWxhcyZvdGlsZGU7bmEnOwokbGFuZ1snZWRpdHVzZXInXSA9ICdNdXVkYSBLYXN1dGFqYXQnOwokbGFuZ1sndmFsaWQnXSA9ICdLZWh0aXYnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdLYXN1dGFqYW5pbWknOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhYXR1cyc7CiRsYW5nWydlcnJvcl9tZW1iZXJncm91cHMnXSA9ICdTZWUga2FzdXRhamEgZWkga3V1bHUgJnV1bWw7aHRlZ2kgZ3J1cHBpJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdPbWFkdXNpIGVpIG9sZSc7CiRsYW5nWyd2YWx1ZSddID0gJ1YmYXVtbDsmYXVtbDtydHVzJzsKJGxhbmdbJ2dyb3VwcyddID0gJ0dydXBpZCc7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnT21hZHVzZWQnOwokbGFuZ1sncHJvcG5hbWUnXSA9ICdPbWFkdXNlIE5pbWknOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnT21hZHVzZSBWJmF1bWw7JmF1bWw7cnR1cyc7CiRsYW5nWydhZGQnXSA9ICdMaXNhJzsKJGxhbmdbJ2VkaXQnXSA9ICdNdXVkYSc7CiRsYW5nWydleHBpcmVzJ10gPSAnQWVndWInOwokbGFuZ1snc3BlY2lmeV9kYXRlJ10gPSAnVCZhdW1sO3BzdXN0YSBrdXVwJmF1bWw7ZXZhZ2EnOwokbGFuZ1snMTJocnMnXSA9ICcxMiBUdW5kaSc7CiRsYW5nWycyNGhycyddID0gJzI0IFR1bmRpJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggVHVuZGknOwokbGFuZ1snMXdlZWsnXSA9ICcxIE4mYXVtbDtkYWwnOwokbGFuZ1snMndlZWtzJ10gPSAnMiBOJmF1bWw7ZGFsYXQnOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBLdXUnOwokbGFuZ1snM21vbnRocyddID0gJzMgS3V1ZCc7CiRsYW5nWyc2bW9udGhzJ10gPSAnNiBLdXVkJzsKJGxhbmdbJzF5ZWFyJ10gPSAnMSBBYXN0YSc7CiRsYW5nWyduZXZlciddID0gJ01pdHRlIEt1bmFnaSc7CiRsYW5nWydwb3N0aW5zdGFsbG1lc3NhZ2UnXSA9ICdNb29kdWwgaW5zdGFsbGVlcml0dWQuPGJyLz5NJmF1bWw7JmF1bWw7cmEga2luZGxhc3RpIGsmb3RpbGRlO2lraWRlbGUgYXNqYWdhIHNlb3R1ZCBrYXN1dGFqYXRlbGUgJnF1b3Q7TW9kaWZ5IEZyb250RW5kVXNlciBQcm9wZXJ0aWVzJnF1b3Q7ICZvdGlsZGU7aWd1cy4nOwokbGFuZ1sncGFzc3dvcmQnXSA9ICdQYXJvb2wnOwokbGFuZ1sncmVwZWF0cGFzc3dvcmQnXSA9ICdQYXJvb2wgdXVlc3RpJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdTZWxsaXNlIG5pbWVnYSBncnVwcCBqdWJhIGVrc2lzdGVlcmliJzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ011dWRhIEdydXBwaSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTYWFkYSc7CiRsYW5nWydjYW5jZWwnXSA9ICdUJnV1bWw7aGlzdGEnOwokbGFuZ1snZGVsZXRlJ10gPSAnS3VzdHV0YSc7CiRsYW5nWydjb25maXJtX2VkaXRncm91cCddID0gJ09sZWQgc2Ega2luZGVsLCBldCBuZWVkIG9uIHNlbGxlIGdydXBpIGphb2tzIGtvcnJla3RzZWQgc2VhZGVkP1xuT21hZHVzZSB2JmF1bWw7bGphIGwmdXVtbDtsaXRhbWluZSBlaSBrdXN0dXRhICZ1dW1sO2h0ZWdpIHNpc3Nla2FubmV0IHNlbGxlIGdydXBpL2thc3V0YWphIG9tYWR1c3RlIHRhYmVsaXMuIE5laWQgZWkgc2FhIGxpaHRzYWx0IGthc3V0YWRhLic7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZWdyb3VwJ10gPSAnT2xlZCBraW5kZWwsIGV0IHNvb3ZpZCBzZWRhIGdydXBwaSBrdXN0dXRhZGE/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3Byb3AnXSA9ICdPbGVkIGtpbmRlbCwgZXQgc29vdmlkIHNlbGxlIG9tYWR1c2UgbCZvdGlsZGU7cGxpa3VsdCBrdXN0dXRhZGE/XG5TZWxsZWdhIGthYXNuZWIgayZvdGlsZGU7aWtpZGUga2FzdXRhamF0ZSBzZWxsZSBvbWFkdXNlIGt1c3R1dGFtaW5lLic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdFYmFwaWlzYXZhZCBwYXJhbWVldHJpZCc7CiRsYW5nWydpZCddID0gJ0lEJzsKJGxhbmdbJ25hbWUnXSA9ICdOaW1pJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRnb3J1cCddID0gJ1Byb2JsZWVtIGdydXBpIGxpc2FtaXNlbCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnVmlnYXNlZCBQYXJhbWVldHJpZCc7CiRsYW5nWydhcHBseWZpbHRlciddID0gJ1V1ZW5kYSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cmVlcmknOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ0thc3V0YWphbmltaSB2YWJhcyB2b3JtaXMnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdLaXJqZWxkdXMnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3J1cGkgTmltaSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdMaWdpcCZhdW1sOyZhdW1sO3Mga2VlbGF0dWQnOwokbGFuZ1snZXJyb3InXSA9ICdWaWdhJzsKJGxhbmdbJ2FkZGdyb3VwJ10gPSAnTGlzYSBHcnVwcCc7CiRsYW5nWydhZGR1c2VyJ10gPSAnTGlzYSBLYXN1dGFqYSc7CiRsYW5nWyd1c2Vyc2ZvdW5kJ10gPSAnYW50dWQga3JpdGVlcml1bWlsZSB2YXN0YXYoYXQpIGthc3V0YWphKHQpJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cHAnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdWYWxpIEdydXBwJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ1Jlc2dpc3RyZWVyaW1pc2UgTWFsbCc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdWJmF1bWw7bGphbG9naW1pc2UgTWFsbCc7CiRsYW5nWydsb2dpbl90ZW1wbGF0ZSddID0gJ1Npc3NlbG9naW1pc2UgTWFsbGwnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdFZWxpc3R1c2VkJzsKJGxhbmdbJ3VzZXJzJ10gPSAnS2FzdXRhamFkJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kIFVzZXIgTWFuYWdtZW50JzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnTHViYSBrYXN1dGFqYXRlbCBvbWEgc2FpZGkgZWVzbGlpdGVsIHNpc3NlIGxvZ2lkYSc7CiRsYW5nWydkZWZhdWx0ZnJvbnRwYWdlJ10gPSAnQWxnbmUgZXNpbGVodCc7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnVmlpbWF0aSB2YWFkYXR1ZCBsZWh0JzsKJGxhbmdbJ290aGVycGFnZSddID0gJ011dSBsZWh0OiAnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPjAuMC4xIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgTlJQVCAoTm90IFJlYWR5IGZvciBQcmltZSBUaW1lKSByZWxlYXNlPC9saT4NCjxsaT4wLjEuMCAtIE9jdG9iZXIsIDIwMDUgLSBJbml0aWFsIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4xIC0gT2N0b2JlciwgMjAwNSAtIEZpeGVkIGlzc3VlcyB3aXRoIHByb3BlcnRpZXM8L2xpPg0KPGxpPjAuMS4yIC0gT2N0b2JlciwgMjAwNSAtIEFkZGVkIGZvcmdvdHRlbiBwYXNzd29yZCBmdW5jdGlvbmFsaXR5PC9saT4NCjxsaT48cD4wLjEuMyAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSByZWRpcmVjdCBwYWdlIG9uIGxvZ2luLCBsb2dvdXQsIGZvcmdvdCBwYXNzd29yZCwgYW5kIGNoYW5nZSBzZXR0aW5ncywgYW5kIGFkZGVkIHRoZSByZXR1cm50byBhbmQgZm9ybSBwYXJhbWV0ZXJzIHRvIHRoZSB1c2VyIHNpZGUgb2YgdGhpbmdzLCBhbHNvIGRpZCBhIGNvdXBsZSBsZiBsaXR0bGUgY2xlYW51cHMuICBUaGlzIHZlcnNpb24gcmVxdWlyZXMgdjAuMTEgYW5kIGFib3ZlIGZvciBjZXJ0YWluLjwvcD48L2xpPg0KPGxpPjAuMS40IC0gTm92ZW1iZXIsIDIwMDUgLSBWZXJ5IG1pbm9yIGNoYW5nZSB3aXRoIHJlc3BlY3QgdG8gYSBmb3Jnb3R0ZW4gYW5kIG5vIGxvbmdlciBuZWVkZWQgZnVuY3Rpb24gY2FsbDwvbGk+DQo8bGk+PHA+MC4xLjUgLSBOb3ZlbWJlciwgMjAwNTwvcD4NCiAgICA8cD5Bbm90aGVyIHZlcnkgbWlub3IgY2hhbmdlLCBhZGRlZCBzb21lIHRleHQgdG8gdGhlIFBvc3RJbnN0YWxsIG1lc3NhZ2UuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjYgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+Q2hhbmdlcyB0byB0aGUgcGVybWlzc2lvbiBtb2RlbCwgYW5kIG1pbm9yIGJ1ZyBmaXhlcyB0byB0aGUgcHJlZmVyZW5jZXMuICBBbHNvIHNvbWUgcGhwNSBmaXhlcyBidXQgSSBhbSBzdXJlIHRoYXQgdGhlcmUgYXJlIG1vcmUgb3V0IHRoZXJlLjwvcD48L2xpPg0KPGxpPjxwPjAuMS43IC0gSmFudWFyeSwgMjAwNjxwPg0KICAgIDxwPk1hbnkgdGhhbmtzIHRvIDxiPmthdG9uPC9iPiBmb3IgYWRkaW5nIHRoZSB0ZXh0YXJlYSBhbmQgZHJvcGRvd24gcHJvcGVydHkgdHlwZXMuPC9wPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBwcm9wZXJ0eSBhZGRpbmcgdG8gZml4IHByb2JsZW1zIHdpdGggc3BhY2VzIGluIHByb3BlcnR5IG5hbWVzICh3ZSBubyBsb25nZXIgbGV0IHRoYXQgaGFwcGVuKS48L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4wIC0gRmVicnVhcnksIDIwMDY8cD4NCiAgICA8cD5BZGRlZCBmaWx0ZXJpbmcgYW5kIHJvdyBsaW1pdGluZyB0byB0aGUgYWRtaW4gcGFuZWwuIFRoaXMgd2lsbCBoYXZlIGJpZyBiZW5lZml0cyB0byB0aG9zZSB0aGF0IGFyZSB1c2luZyB0aGlzIG1vZHVsZSBmb3IgaGlnaCB0cmFmaWMsIGFuZCBoaWdoIHVzZXIgc2l0ZXMuPC9wPg0KICAgIDxwPkFkZGVkIHNvcnRpbmcgdG8gdGhlIGFkbWluIHBhbmVsPC9wPg0KICAgIDxwPkFkZGVkIG1heCBsZW5ndGggYWJpbGl0eSB0byB0ZXh0IGFuZCBlbWFpbCBmaWVsZHM8L3A+DQogICAgPHA+Rml4ZWQgYSBzbWFsbCBwcm9ibGVtIHdpdGggdGhlIGRlZmF1bHQgZ3JvdXAgbm90IGJlaW5nIGNoZWNrZWQgd2hlbiBhZGRpbmcgYSB1c2VyPC9wPg0KICAgIDxwPlNhdmUgZmlsdGVyIHNldHRpbmdzIGluIHByZWZlcmVuY2VzLCBhbmQgdGhlIGFjdGl2ZSB0YWIgdG9vLjwvcD4NCiAgICA8cD5EZWxldGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gYSBwcm9wZXJ0eSBpcyBkZWxldGVkIDxlbT5Ob3RlPC9lbT4sIG5vdCB3aGVuIGl0IGlzIGRpc2FibGVkIGluIHRoZSBlZGl0IGdyb3VwIGRpYWxvZzwvcD4NCiAgICA8cD5BZGQgY29uZmlybWF0aW9uIG1lc3NhZ2UgaW4gZWRpdCBncm91cHMuPC9wPg0KICAgIDxwPkFkZGVkIGEgY291cGxlIG1vcmUgY29uZmlybWF0aW9uIG1lc3NhZ2VzLjwvcD4NCiAgICA8cD5BZGRlZCBDU1YgRXhwb3J0IG9wdGlvbjwvcD4NCiAgICA8cD5Ub2RvIC0gQWRkIHByZWZlcmVuY2VzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRsZW5ndGg8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4xIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBjaGVjayBmb3IgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3NlczwvcD4NCiAgICA8cD5GaXggcHJvYmxlbSB3aGVyZSBleHBpcnkgZGF0ZSB3YXMgYmVpbmcgbW9kaWZpZWQgd2hlbiBhZG1pbiBtb2RpZmllZCB1c2VyIHNldHRpbmdzPC9wPg0KICAgIDxwPkFkZCBhIGNvbmZpcm1hdGlvbiBtZXNzYWdlIHRvIHRoZSBwcmVmZXJlbmNlcyBzdWJtaXQgYnV0dG9uPC9wPg0KICAgIDxwPkZpeGVkIGEgbWlub3IgYnVnIHdoZW4gY291dGluZyB0aGUgbnVtYmVyIG9mIHVzZXJzIGluIGEgZ3JvdXA8L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHNpemUgb2YgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkcywgYW5kIG1heGxlbmd0aDwvcD4NCiAgICA8cD5BZGRlZCBhZHZhbmNlZCBmaWx0ZXJpbmcgb24gcHJvcGVydGllczwvcD4NCiAgICA8cD5DaGFuZ2VzIHRvIGxhYmVsaW5nIGluIGFkZCBvciBlZGl0IHVzZXI8L3A+DQogICAgPHA+Rml4ZXMgdG8gcHJvYmxlbXMgd2l0aCBpbmxpbmUgYW5kIG5vbiBpbmxpbmUgZm9ybXMsIHRoZSBwYXNzd29yZCBpcyBuZXZlciBzZW50IG9uIHRoZSBnZXQgbGluZTwvcD4NCiAgICA8cD5DaGFuZ2VkIHRvIHJlcXVpcmUgQ01TIDAuMTItYmV0YTIgYXQgYSBtaW5pbXVtIChmb3Igc2FmZXR5IHB1cnBvc2VzKTwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjIgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPk1vcmUgZmllbGQgbGVuZ3RoIGZpeGVzPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMyAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+RXhwb3J0IHRvIHNtYXJ0eSBhbGwgb2YgdGhlIHVzZXIgcHJvcGVydGllcyB3aGVuIHRoZXkgYXJlIGxvZ2dlZCBpbjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjQgLSBNYXksIDIwMDY8cD4NCiAgICA8cD5GaXhlcyB0byB0aGUgZXhwb3J0IGNvZGU8L3A+DQogICAgPHA+Q29kZSBjbGVhbnVwIChhbHBoYWJldGl6ZSBmdW5jdGlvbnMpPC9wPg0KICAgIDxwPk1pbm9yIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgKHJlY29tbWVuZGVkIGJ5IG5pbHM3MykgZm9yIGRlYWxpbmcgd2l0aCB0aGUgY2hhbmdlIHBhc3N3b3JkIHN0dWZmLjwvcD4NCiAgICA8cD5SZW1vdmVkIHRoZSByZXF1aXJlbWVudCBmb3IgQ01TIDAuMTIsIGFuZCBwdXQgaXQgYmFjayB0byAwLjExLjI8L3A+DQogICAgPHA+QWRkZWQgdGhlIFwmIzAzOTtzaWxlbnRcJiMwMzk7IGZvcm08L3A+DQogICAgPHA+Q2xlYW5lZCB1cCBkYXRhYmFzZSBhY2Nlc3Mgc3R1ZmYgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKGhvcGVmdWxseSk8L3A+DQogICAgPHA+QWRkZWQgY29weXJpZ2h0IGluZm88L3A+DQogICAgPHA+QWRkZWQgbWFjcm9zIGZvciByZWRpcmVjdG8gdG8gYSB1c2VyIHNwZWNpZmljIHBhZ2Ugb24gbG9naW4gb3IgbG9nb3V0PC9wPg0KICAgIDxwPlR3ZWFrcyB0byB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgdGFiPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuNSAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBleHBpcnkgZGF0ZXM8L3A+DQogICAgPHA+U3RhcnQgc3BsaXR0aW5nIHRoZSBjb2RlIHVwIGludG8gc2V2ZXJhbCBmaWxlczwvcD4NCjxsaT48cD4xLjAuNiAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBlZGl0aW5nIGRyb3Bkb3duczwvcD4NCjwvbGk+DQo8bGk+PHA+MS4xLjAgLSBNYXksIDIwMDY8L3A+DQogICAgPHA+RXZlbnRzPC9wPg0KICAgIDxwPk9wdGlvbmFsbHkgZGlzYWxsb3cgcmVwZWF0ZWQgbG9naW5zPC9wPg0KICAgIDxwPkV4cG9ydCB0aGUgdXNlciBpZCB0byBzbWFydHk8L3A+DQogICAgPHA+QWRkZWQgb3B0aW9uYWxseSB7JGdyb3VwXH0gZm9yIHRoZSBwYWdlcyB0byBqdW1wIHRvIG9uIGxvZ2luPC9wPg0KPC9saT4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzcyk8L2k+LiAgSXQgYWxsb3dzIGNyZWF0aW9uIG9mIHVzZXIgZ3JvdXBzLCBhbmQgdXNlciBhY2NvdW50cyBhbmQgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQuICBpdCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBDdXN0b21Db250ZW50IG1vZHVsZSB0byBkaXNwbGF5IGRpZmZlcmVudCBjb250ZW50IHRvIGRpZmZlcmVudCB1c2VycyBvbmNlIHRoZXkgaGF2ZSBsb2dnZWQgaW48L3A+DQo8aDM+RmVhdHVyZXM8L2gzPg0KPHVsPg0KPGxpPjxwPlVzZXIgYWNjb3VudCBleHBpcmF0aW9uLiAgWW91IGNhbiBjcmVhdGUgdGVtcG9yYXJ5IHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHM8L3A+PC9saT4NCjxsaT48cD5DYXBhYmxlIG9mIGhhbmRsaW5nIGh1bmRyZWRzIG9mIHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+SGFzIGFuIGV4dGVuc2l2ZSBBUEkgZm9yIGFkZGluZyBmdW5jdGlvbmFsaXR5PC9wPjwvbGk+DQo8L3VsPg0KPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+DQo8dWw+DQo8bGk+PHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJmFtcDsgZ0dyb3VwcyZxdW90OyBtZW51LjwvcD48L2xpPg0KPGxpPg0KPHA+U2Vjb25kbHksIHlvdSBzaG91bGQgZGVmaW5lIHByb3BlcnRpZXMuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIEVtYWlsIGFkZHJlc3MsIGV0Yy48L3A+DQo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgZm9yIHlvdTwvYj4NCjwvbGk+DQo8bGk+PHA+TmV4dCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2V0aGVyIGl0IGlzIGFuIG9wdGlvbmFsLCByZXF1aXJlZCwgb3IgaGlkZGVuIGZpZWxkIDxpPihvZmYgaXMgYWxzbyB2YWxpZCk8L2k+PC9wPjwvbGk+DQo8bGk+PHA+PGI+Tm90ZTo8L2I+IEJlZm9yZSBwcm9jZWVkaW5nLCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBwcmVmZXJlbmNlcyBhcmUgc2V0IGNvcnJlY3RseS48L3A+PC9saT4NCjxsaT48cD5UaGlyZGx5IHlvdSBzaG91bGQgY3JlYXRlIHNvbWUgdXNlcnMuICBBZGRpbmcgdXNlcnMgaXMgYSB0d28gc3RlcCBwcm9jZXNzLiAgV2hlbiBjcmVhdGluZyBhIHVzZXIgeW91IGFyZSBhc2tlZCBmb3IgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgYW5kIGFuIGV4cGlyeSBkYXRlIGZvciB0aGF0IHVzZXIuICBZb3UgdGhlbiBtdXN0IHNlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgdGhhdCB1c2VyIGlzIGEgbWVtYmVyIG9mLCBhbmQgY2xpY2sgXCYjMDM5O05leHRcJiMwMzk7PC9wPg0KPHA+PGVtPk5vdGU6IDwvZW0+VGhpcyBpcyBhIGxhYm91ciBpbnRlbnNpdmUgYW5kIGJvcmluZyBwcm9jZXNzLCBpdCBpcyBlYXNpZXIgdG8gbGV0IHVzZXJzIHJlZ2lzdGVyIHRoZW1zZWx2ZXMsIGFuZCB0aGVuIHlvdSBjYW4gZWRpdCB0aGVpciBncm91cCBpbmZvcm1hdGlvbi4gIGJ1dCBmb3IgdGVzdGluZyBwdXJwb3NlcywgcGxlYXNlIGNyZWF0ZSBhdCBsZXN0IG9uZSB1c2VyPC9wPjwvbGk+DQo8bGk+PHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD48L2xpPg0KPGxpPjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSB7Y21zX21vZHVsZSBtb2R1bGU9RnJvbnRFbmRVc2Vyc30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZTwvcD48L2xpPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgY2FsZ3V5XCYjMDM5O3MNCm1vZHVsZSBob21lcGFnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly90ZWNoY29tLmR5bmRucy5vcmcmcXVvdDs+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0mcXVvdDtuYW1lJnF1b3Q7PC9saT4NCjxwPkZvcm1zOg0KPHVsPg0KIDxsaT48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm08L2xpPg0KIDxsaT48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybTwvbGk+DQogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPg0KIDxsaT48ZW0+Zm9yZ290cHc8L2VtPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtPC9saT4NCjxsaT48ZW0+c2lsZW50PC9lbT4gPSBEaXNwbGF5IG5vdGhpbmcsIGJ1dCBleHBvcnQgcHJvcGVydGllcyBhbmQgb3RoZXIgc21hcnR5IHZhcmlhYmxlcyBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci4gIElmIG5vIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGVuIG5vIHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQuPC9saT4NCjwvdWw+DQo8L3A+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiByZXR1cm50bz0mcXVvdDtwYWdlJnF1b3Q7PC9saT4NCjxwPlVzZWQgd2l0aCB0aGUgbG9naW4sIGxvZ291dCwgYW5kIGNoYW5nZXNldHRpbmdzIGZvcm1zLCB0aGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgcGFnZSBpZCBvciBhbGlhcyBvZiBhIHBhZ2UgdG8gcmVkaXJlY3QgdG8sIHdoZW4gdGhlIGZvcm0gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZDwvcD4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5SZXF1aXJlbWVudHM8L2gzPg0KPHA+SW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eSwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhlIENNU01haWxlciBtb2R1bGUgdG8gYmUgcHJldmlvdXNseSBpbnN0YWxsZWQ8L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNSwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0mcXVvdDttYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZxdW90Oz48Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbT48L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmcXVvdDs+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xNTI2MzMyMDUzLjExNTcxMjE2MTguMTE1Nzg5Njc2My4xMTU4MTYzMjExLjcnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTU3MTIxNjE4LjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdDZXQgdXRpbGlzYXRldXIgZXN0IGQmZWFjdXRlO2omYWdyYXZlOyBjb25uZWN0JmVhY3V0ZTsnOwokbGFuZ1sncHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2lucyddID0gJ0F1dG9yaXNlciBsZXMgdXRpbGlzYXRldXJzICZhZ3JhdmU7ICZlY2lyYzt0cmUgY29ubmVjdCZlYWN1dGU7cyBwbHVzIGQmIzAzOTt1bmUgZm9pcyc7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlVXNlciddID0gJzxoMz5PbkRlbGV0ZVVzZXI8aDM+DQo8cD5VbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBlc3QgZyZlYWN1dGU7biZlYWN1dGU7ciZlYWN1dGU7IHF1YW5kIHVuIHV0aWxpc2F0ZXVyIGVzdCBzdXBwcmltJmVhY3V0ZTs8L3A+DQo8aDQ+UGFyYW0mZWdyYXZlO3RyZXM8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gbGUgbm9tIGRlIGwmIzAzOTt1dGlsaXNhdGV1cjwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBsJiMwMzk7aWQgZGUgbCYjMDM5O3V0aWxpc2F0ZXVyPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVVc2VyJ10gPSAnPGgzPk9uQ3JlYXRlVXNlcjxoMz4NCjxwPlVuICZlYWN1dGU7diZlYWN1dGU7bmVtZW50IGVzdCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgcXVhbmQgdW4gdXRpbGlzYXRldXIgZXN0IGNyJmVhY3V0ZTsmZWFjdXRlOzwvcD4NCjxoND5QYXJhbSZlZ3JhdmU7dHJlczwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIGxlIG5vbSBkZSBsJiMwMzk7dXRpbGlzYXRldXI8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gbCYjMDM5O2lkIGRlIGwmIzAzOTt1dGlsaXNhdGV1cjwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlR3JvdXAnXSA9ICc8aDM+T25DcmVhdGVHcm91cDxoMz4NCjxwPlVuICZlYWN1dGU7diZlYWN1dGU7bmVtZW50IGVzdCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgcXVhbmQgdW4gZ3JvdXBlIGVzdCBjciZlYWN1dGU7JmVhY3V0ZTs8L3A+DQo8aDQ+UGFyYW0mZWdyYXZlO3RyZXM8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgZ3JvdXAgbmFtZTwvbGk+DQo8bGk+PGVtPmRlc2NyaXB0aW9uPC9lbT4gLSBsYSBkZXNjcmlwdGlvbiBkdSBncm91cGU8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gbCYjMDM5O2lkIGR1IGdyb3VwZTwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uRGVsZXRlR3JvdXAnXSA9ICc8aDM+T25EZWxldGVHcm91cDxoMz4NCjxwPlVuICZlYWN1dGU7diZlYWN1dGU7bmVtZW50IGVzdCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgcXVhbmQgdW4gZ3JvdXBlIGVzdCBzdXBwcmltJmVhY3V0ZTs8L3A+DQo8aDQ+UGFyYW0mZWdyYXZlO3RyZXM8L2g0Pg0KPHVsPg0KPGxpPjxlbT5uYW1lPC9lbT4gLSBsZSBub20gZHUgZ3JvdXBlPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIGwmIzAzOTtpZCBkdSBncm91cGU8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ2luJ10gPSAnPGgzPk9uTG9naW48aDM+DQo8cD5VbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBlc3QgZyZlYWN1dGU7biZlYWN1dGU7ciZlYWN1dGU7IHF1YW5kIHVuIHV0aWxpc2F0ZXVyIHNlIGNvbm5lY3RlPC9wPg0KPGg0PlBhcmFtJmVncmF2ZTt0cmVzPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIExlIG5vbSBkZSBsJiMwMzk7dXRpbGlzYXRldXIgY29ubmVjdCZlYWN1dGU7PC9saT4NCjxsaT48ZW0+aXA8L2VtPiAtIGwmIzAzOTthZHJlc3NlIGlwIGR1IGNsaWVudDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dvdXQnXSA9ICc8aDM+T25Mb2dvdXQ8aDM+DQo8cD5VbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBlc3QgZyZlYWN1dGU7biZlYWN1dGU7ciZlYWN1dGU7IHF1YW5kIHVuIHV0aWxpc2F0ZXVyIHNlIGQmZWFjdXRlO2Nvbm5lY3RlPC9wPg0KPGg0PlBhcmFtJmVncmF2ZTt0cmVzPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIExlIG5vbSBkZSBsJiMwMzk7dXRpbGlzYXRldXIgZCZlYWN1dGU7Y29ubmVjdCZlYWN1dGU7PC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIGwmIzAzOTtpZCBkZSBsJiMwMzk7dXRpbGlzYXRldXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudF9oZWxwX09uRXhwaXJlVXNlciddID0gJzxoMz5PbkV4cGlyZVVzZXI8aDM+DQo8cD5VbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBlc3QgZyZlYWN1dGU7biZlYWN1dGU7ciZlYWN1dGU7IHF1YW5kIHVuZSBzZXNzaW9uIGV4cGlyZTwvcD4NCjxoND5QYXJhbSZlZ3JhdmU7dHJlczwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBsZSBub20gZGUgbCYjMDM5O3V0aWxpc2F0ZXVyIGRvbnQgbGEgc2Vzc2lvbiBhIGV4cGlyJmVhY3V0ZTs8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gbCYjMDM5O2lkIGRlIGwmIzAzOTt1dGlsaXNhdGV1ciBkb250IGxhIHNlc3Npb24gYSBleHBpciZlYWN1dGU7PC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luJ10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZXN0IGcmZWFjdXRlO24mZWFjdXRlO3ImZWFjdXRlOyBxdWFuZCB1biB1dGlsaXNhdGV1ciBzZSBjb25uZWN0ZSc7CiRsYW5nWydldmVudF9pbmZvX09uTG9nb3V0J10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZXN0IGcmZWFjdXRlO24mZWFjdXRlO3ImZWFjdXRlOyBxdWFuZCB1biB1dGlsaXNhdGV1ciBzZSBkJmVhY3V0ZTtjb25uZWN0ZSc7CiRsYW5nWydldmVudF9pbmZvX09uRXhwaXJlVXNlciddID0gJ1VuICZlYWN1dGU7diZlYWN1dGU7bmVtZW50IGVzdCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgcXVhbmQgdW5lIHNlc3Npb24gZXhwaXJlJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVVc2VyJ10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZXN0IGcmZWFjdXRlO24mZWFjdXRlO3ImZWFjdXRlOyBxdWFuZCB1biB1dGlsaXNhdGV1ciBlc3QgY3ImZWFjdXRlOyZlYWN1dGU7JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZXN0IGcmZWFjdXRlO24mZWFjdXRlO3ImZWFjdXRlOyBxdWFuZCB1biB1dGlsaXNhdGV1ciBlc3Qgc3VwcHJpbSZlYWN1dGU7JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVHcm91cCddID0gJ1VuICZlYWN1dGU7diZlYWN1dGU7bmVtZW50IGVzdCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgcXVhbmQgdW4gZ3JvdXBlIGVzdCBjciZlYWN1dGU7JmVhY3V0ZTsnOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZUdyb3VwJ10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZXN0IGcmZWFjdXRlO24mZWFjdXRlO3ImZWFjdXRlOyBxdWFuZCB1biBncm91cGUgZXN0IHN1cHByaW0mZWFjdXRlOyc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnR3JvdXBlJzsKJGxhbmdbJ2luZm9fc3RhciddID0gJyogTGEgbWFjcm8gc3VpdmFudGUgcGV1dCAmZWNpcmM7dHJlIHV0aWxpcyZlYWN1dGU7ZSBkYW5zIGNlcyBjaGFtcHMmbmJzcDs6IHskdXNlcm5hbWV9LHtncm91cH0uJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICcmRWFjdXRlO2RpdGVyIGNlIGNoYW1wIHBvdXIgciZlYWN1dGU7aW5pdGlhbGlzZXIgbGUgbW90IGRlIHBhc3NlIHV0aWxpc2F0ZXVyJzsKJGxhbmdbJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnXSA9ICcmRWFjdXRlO2RpdGVyIGNlIGNoYW1wIHBvdXIgciZlYWN1dGU7aW5pdGlhbGlzZXIgbGUgbW90IGRlIHBhc3NlIHV0aWxpc2F0ZXVyJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cyddID0gJ1VuIHV0aWxpc2F0ZXVyIGF2ZWMgY2Ugbm9tIGV4aXN0ZSBkJmVhY3V0ZTtqJmFncmF2ZTsuJzsKJGxhbmdbJ25vY3N2cmVzdWx0cyddID0gJ0F1Y3VuIHImZWFjdXRlO3N1bHRhdCByZXRvdXJuJmVhY3V0ZTsgZGUgbCYjMDM5O2V4cG9ydCBjc3YnOwokbGFuZ1sncHJvbXB0X3VuZmxkbGVuJ10gPSAnTG9uZ3VldXIgZHUgY2hhbXAgbm9tIGQmIzAzOTt1dGlsaXNhdGV1cic7CiRsYW5nWydwcm9tcHRfcHdmbGRsZW4nXSA9ICdMb25ndWV1ciBkdSBjaGFtcCBtb3QgZGUgcGFzc2UnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkbGVuZ3RocyddID0gJ0xvbmd1ZXVyIG1pbmltYWxlL21heGltYWxlIGludmFsaWRlIHBvdXIgbGUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZWxlbmd0aHMnXSA9ICdMb25ndWV1ciBtaW5pbWFsZS9tYXhpbWFsZSBpbnZhbGlkZSBwb3VyIGxlIG5vbSBkJiMwMzk7dXRpbGlzYXRldXInOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGFkZHJlc3MnXSA9ICdJbCBuJiMwMzk7eSBhIHBhcyBkJiMwMzk7YWRyZXNzZSBlbWFpbCBlbnJlZ2lzdHImZWFjdXRlO2UgcG91ciBjZSBjb21wdGUuJzsKJGxhbmdbJ3VzZXJfYWRkZWQnXSA9ICdVdGlsaXNhdGV1ciBham91dCZlYWN1dGU7ICVzID0gJXMnOwokbGFuZ1sndXNlcl9kZWxldGVkJ10gPSAnVXRpbGlzYXRldXIgc3VwcHJpbSZlYWN1dGU7IHVpZD0lcyc7CiRsYW5nWydwcm9wZXJ0eWZpbHRlciddID0gJ1Byb3ByaSZlYWN1dGU7dCZlYWN1dGU7JzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdWYWxldXIgKGV4cHJlc3Npb24gciZlYWN1dGU7Z3VsaSZlZ3JhdmU7cmUpJzsKJGxhbmdbJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJ10gPSAnQXR0ZW50aW9uOiBDZXMgY2hhbXBzIGFmZmVjdGVudCBsYSB0YWlsbGUgZGUgY2hhbXBzIGQmIzAzOTtlbnRyJmVhY3V0ZTtlIGRhbnMgbGVzIGZvcm11bGFpcmVzLiAgRGVzY2VuZHJlIGNldHRlIHZhbGV1ciBzdXIgdW4gc2l0ZSBleGlzdGFudCBuJiMwMzk7ZXN0IHBhcyByZWNvbW1hbmQmZWFjdXRlOyc7CiRsYW5nWydjb25maXJtX3N1Ym1pdHByZWZzJ10gPSAnTW9kaWZpZXIgbGVzIHByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZXMgYWRtaW5pc3RyYXRldXImbmJzcDs/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdDZXR0ZSBhZHJlc3NlIGVtYWlsIGVzdCBkJmVhY3V0ZTtqJmFncmF2ZTsgdXRpbGlzJmVhY3V0ZTtlJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnQXV0b3Jpc2VyIGxlcyBkb3VibG9ucyBkJiMwMzk7ZW1haWwnOwokbGFuZ1snaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnKGF1dG9yaXNlciBkZSBtdWx0aXBsZXMgdXRpbGlzYXRldXJzIGF2ZWMgbGEgbSZlY2lyYzttZSBhZHJlc3NlIGVtYWlsKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcm5hbWUnXSA9ICdWb3VzIG4mIzAzOTthdmV6IHBhcyBlbnRyJmVhY3V0ZTsgZGUgbm9tIGQmIzAzOTt1dGlsaXNhdGV1cic7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdWb3VzIG4mIzAzOTthdmV6IHBhcyBlbnRyJmVhY3V0ZTsgZGUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dvdXQnXSA9ICdEJmVhY3V0ZTtjb25uZXhpb24gdXRpbGlzYXRldXInOwokbGFuZ1snZnJvbnRlbmR1c2VyX2xvZ2dlZGluJ10gPSAnQ29ubmV4aW9uIHV0aWxpc2F0ZXVyJzsKJGxhbmdbJ2VkaXRwcm9wX2luZm9tc2cnXSA9ICc8Zm9udCBjb2xvcj0mcXVvdDtyZWQmcXVvdDs+PGI+QVRURU5USU9OPC9iPiBlbiBjaGFuZ2VhbnQgdW5lIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IHF1aSBhICZlYWN1dGU7dCZlYWN1dGU7IGFzc2lnbiZlYWN1dGU7ZSAmYWdyYXZlOyBkZXMgZ3JvdXBlcywgdm91cyBwb3V2ZXogcG90ZW50aWVsbGVtZW50IGQmZWFjdXRlO3RydWlyZSBvdSBhYiZpY2lyYzttZXIgdW4gc2l0ZSBleGlzdGFudCA8aT4oZW4gcGFydGljdWxpZXIgc2kgdm91cyByJmVhY3V0ZTtkdWlzZXogbGVzIGxvbmd1ZXVycyBkZSBjaGFtcHMsIGV0Yyk8L2k+PC9mb250Pic7CiRsYW5nWydpbmZvX3NtdHB2YWxpZGF0ZSddID0gJ0NldHRlIGZvbmN0aW9uIG5lIG1hcmNoZSBwYXMgc291cyBXaW5kb3dzJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICdOZSBjciZlYWN1dGU7ZXogcGFzIGRlIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IHBvdXIgdXRpbGlzYXRldXIsIGNhciBjZWNpIGVzdCBpbmNsdXMgZGFucyBsZSBtb2R1bGUgRnJvbnRFbmRVc2Vycyc7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnRXhwb3J0ZXIgbGEgbGlzdGUgZGVzIHV0aWxpc2F0ZXVyIGRhbnMgdW4gZmljaGllciBhdSBmb3JtYXQgQ1NWJzsKJGxhbmdbJ2V4cG9ydGNzdiddID0gJ0V4cG9ydGVyJzsKJGxhbmdbJ2FkbWluJ10gPSAnQWRtaW4nOwokbGFuZ1snZWRpdHByb3AnXSA9ICcmRWFjdXRlO2RpdGVyIGxhIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ0xvbmd1ZXVyIG1heGltYWxlJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDciZlYWN1dGU7JmVhY3V0ZTsnOwokbGFuZ1snc29ydGJ5J10gPSAnVHJpZXIgcGFyJzsKJGxhbmdbJ3NvcnQnXSA9ICdUcmknOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVXRpbGlzYXRldXJzIGRhbnMgbGUgZ3JvdXBlJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0xpbWl0ZXIgbGVzIHImZWFjdXRlO3N1bHRhdHMgJmFncmF2ZTsnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnQXVjdW4gZW1haWwgdHJvdXYmZWFjdXRlOyBwb3VyIGNldCB1dGlsaXNhdGV1ci4gVm91cyBkZXZleiAmZWFjdXRlO3ZlbnR1ZWxsZW1lbnQgY29udGFjdGVyIGwmIzAzOTthZG1pbmlzdHJhdGV1ci4nOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZHUgZm9ybXVsYWlyZSBtb3QgZGUgcGFzc2Ugb3VibGkmZWFjdXRlOyc7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3NfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBkdSBmb3JtdWxhaXJlIGRlIGNoYW5nZW1lbnQgZGUgcGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1sncHJvbXB0X2xvZ2luX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgbyZ1Z3JhdmU7IHJlZGlyaWdlciBsJiMwMzk7dXRpbGlzYXRldXIgYXByJmVncmF2ZTtzIHF1JiMwMzk7aWwgc2Ugc29pdCBjb25uZWN0JmVhY3V0ZTsnOwokbGFuZ1sncHJvbXB0X2xvZ291dF9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIG8mdWdyYXZlOyByZWRpcmlnZXIgbCYjMDM5O3V0aWxpc2F0ZXVyIGFwciZlZ3JhdmU7cyBxdSYjMDM5O2lsIHNlIHNvaXQgZCZlYWN1dGU7Y29ubmVjdCZlYWN1dGU7JzsKJGxhbmdbJ3NvcnRvcmRlciddID0gJ09yZGUgZGUgdHJpJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ1VuIG5vbWJyZSBkJiMwMzk7dXRpbGlzYXRldXJzIGVzdCBlbiBjb3VycyBkZSByJmVhY3V0ZTtpbml0aWFsaXNhdGlvbiBkZSBtb3RzIGRlIHBhc3NlLiBDZSBub21icmUgZXN0IGFjdHVlbGxlbWVudCBkZTonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICdTdXBwcmltZXIgdG91dGVzIGxlcyBlbnRyJmVhY3V0ZTtlcyB2aWVpbGxlcyBkZSBwbHVzIGQmIzAzOTt1bmUgc2VtYWluZSc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdTdXBwcmltZXIgdG91dGVzIGxlcyBlbnRyJmVhY3V0ZTtlcyB2aWVpbGxlcyBkZSBwbHVzIGQmIzAzOTt1biBtb2lzJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1N1cHByaW1lciB0b3V0ZXMgbGVzIGVudHImZWFjdXRlO2VzJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICcmRWNpcmM7dGVzLXZvdXMgcyZ1Y2lyYztyJm5ic3A7Pyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ1VuIGNvZGUgaW52YWxpZGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBlbnRyJmVhY3V0ZTssIHZldWlsbGV6IHImZWFjdXRlO2Vzc2F5ZXInOwokbGFuZ1snZXJyb3JfdGVtcGNvZGVub3Rmb3VuZCddID0gJ0xlIGNvZGUgdGVtcG9yYWlyZSBwb3VyIHZvdHJlIGlkIHV0aWxpc2F0dWVyIG4mIzAzOTthIHBhcyBwdSAmZWNpcmM7dHJlIHRyb3V2JmVhY3V0ZTsgZGFucyBsYSBiYXNlIGRlIGRvbm4mZWFjdXRlO2VzJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJ10gPSAnR2FiYXJpdCB1dGlsaXMmZWFjdXRlOyBwb3VyIGFmZmljaGVyIGxlIGZvcm11bGFpcmUgZGUgdiZlYWN1dGU7cmlmaWNhdGlvbic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnR2FiYXJpdCB1dGlsaXMmZWFjdXRlOyBwb3VyIGwmIzAzOTtlbWFpbCBlbnZveSZlYWN1dGU7IGxvcnMgZGUgbCYjMDM5O291YmxpIGR1IG1vdCBkZSBwYXNzZSc7CiRsYW5nWydlcnJvcl9yZXNldGFscmVhZHlzZW50J10gPSAnVW5lIGRlbWFuZGUgZGUgciZlYWN1dGU7aW5pdGlhbGlzYXRpb24gZGUgbW90IGRlIHBhc3NlIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgc291bWlzZSBwb3VyIGNlIGNvbXB0ZSwgc29pdCBwYXIgdm91cy1tJmVjaXJjO21lLCBzb2l0IHBhciBxdWVscXUmIzAzOTt1biBkJiMwMzk7YXV0cmUuIFYmZWFjdXRlO3JpZmlleiB2b3RyZSBlbWFpbCwgdm91cyB5IHRyb3V2ZXJleiBsZXMgaW5zdHJ1Y3Rpb25zIHBvdXIgbGEgciZlYWN1dGU7aW5pdGlhbGlzYXRpb24gZGUgdm90cmUgbW90IGRlIHBhc3NlLic7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRXJyZXVyIGRlIGJhc2UgZGUgZG9ubiZlYWN1dGU7ZXMnOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnVm91cyByZWNldmV6IGNlIG1lc3NhZ2UgY2FyIHF1ZWxxdSYjMDM5O3VuIG5vdXMgYSBkaXQgcXVlIHZvdXMgYXZpZXogcGVyZHUgdm90cmUgbW90IGRlIHBhc3NlLiBTaSBjJiMwMzk7ZXN0IGxlIGNhcywgbGlzZXogbGVzIGluc3RydWN0aW9ucyBjaS1kZXNzb3VzLiBTaSB2b3VzIG5lIHNhdmV6IHBhcyBkZSBxdW9pIGlsIHMmIzAzOTthZ2l0LCB2b3VzIHBvdXZleiBzaW1wbGVtZW50IGVmZmFjZXIgY2UgbWVzc2FnZS4gTm91cyB2b3VzIHJlbWVyY2lvbnMuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnQ29kZSc7CiRsYW5nWydtZXNzYWdlX2NvZGUnXSA9ICdMZSBjb2RlIHN1aXZhbnQgYSAmZWFjdXRlO3QmZWFjdXRlOyBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgYXUgaGFzYXJkIHBvdXIgbGEgdiZlYWN1dGU7cmlmaWNhdGlvbiBkdSBjb21wZSB1dGlsaXNhdGV1ci4gTG9yc3F1ZSB2b3VzIGNsaXF1ZXJleiBzdXIgbGUgbGllbiBjaS1kZXNzb3VzLCB2b3VzIHRyb3V2ZXJleiB1biBjaGFtcCBkYW5zIGxlcXVlbCBlbnRyZXIgY2UgY29kZS4gTm9ybWFsZW1lbnQsIGNlIGNoYW1wIGVzdCByZW1wbGkgcG91ciB2b3VzLCBtYWlzIGRhbnMgbGUgY2FzIGNvbnRyYWlyZSwgbGUgY29kZSBlc3QmbmJzcDs6JzsKJGxhbmdbJ3Byb21wdF9saW5rJ10gPSAnTGUgbGllbiBzdWl2YW50IHZvdXMgYW0mZWdyYXZlO25lIGF1IHNpdGUgbyZ1Z3JhdmU7IHZvdXMgcG91dmV6IGVudHJlciBsZSBjb2RlIGNpLWRlc3N1cywgZXQgciZlYWN1dGU7aW5pdGlhbGlzZXIgdm90cmUgbW90IGRlIHBhc3NlJm5ic3A7Oic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnTW90IGRlIHBhc3NlIG91YmxpJmVhY3V0ZTsnOwokbGFuZ1snZXJyb3Jfbm9tYWlsZXJtb2R1bGUnXSA9ICdMZSBtb2R1bGUgQ01TTWFpbGVyIG4mIzAzOTthIHBhcyAmZWFjdXRlO3QmZWFjdXRlOyB0cm91diZlYWN1dGU7JzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ1VuIGVtYWlsIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgZW52b3kmZWFjdXRlOyAmYWdyYXZlOyAlcyBhdmVjIGxlcyBpbnN0cnVjdGlvbnMgcG91ciBsYSByJmVhY3V0ZTtpbml0aWFsaXNhdGlvbiBkdSBtb3QgZGUgcGFzc2UuIE1lcmNpJzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnU2kgdm91cyBhdmV6IG91YmxpJmVhY3V0ZTsgdm90cmUgbW90IGRlIHBhc3NlLCB2ZXVpbGxleiBlbnRyZXIgdm90cmUgaWRlbnRpZmlhbnQgaWNpLCBldCBzaSBub3VzIGxlIHRyb3V2b25zLCB2b3VzIHJlY2V2cmV6IHVuIGVtYWlsIGF2ZWMgbGVzIGluc3RydWN0aW9ucyBwb3VyIGxhIHImZWFjdXRlO2luaXRpYWxpc2F0aW9uIGR1IG1vdCBkZSBwYXNzZS4nOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfdGVtcGxhdGUnXSA9ICdHYWJhcml0cyBwb3VyIGwmIzAzOTtvdWJsaSBkdSBtb3QgZGUgcGFzc2UnOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnTGEgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTsgJXMgbiYjMDM5O2EgcGFzICZlYWN1dGU7dCZlYWN1dGU7IHRyb3V2JmVhY3V0ZTtlJzsKJGxhbmdbJ3Byb3BzZm91bmQnXSA9ICdwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MgdHJvdXYmZWFjdXRlO2VzJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdBam91dGVyIHVuZSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyc7CiRsYW5nWydlcnJvcl9yZXF1aXJlZGZpZWxkJ10gPSAnVW4gY2hhbXAgcmVxdWlzICglcykgZXN0IHZpZGUnOwokbGFuZ1snaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnXSA9ICdWZXVpbGxleiBlbnRyZXIgaWNpIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ2Vycm9yX25vdGxvZ2dlZGluJ10gPSAnVm91cyBuZSBzZW1ibGV6IHBhcyAmZWNpcmM7dHJlIGNvbm5lY3QmZWFjdXRlOyc7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnUGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1sndXNlcl9yZWdpc3RyYXRpb24nXSA9ICdFbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydlcnJvcl9hY2NvdW50ZXhwaXJlZCddID0gJ0NlIGNvbXB0ZSBhIGV4cGlyJmVhY3V0ZTsnOwokbGFuZ1snZXJyb3JfaW1wcm9wZXJlbWFpbGZvcm1hdCddID0gJ0Zvcm1hdCBkJiMwMzk7YWRyZXNzZSBlbWFpbCBpbnZhbGlkZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ0RhdGUgZCYjMDM5O2V4cGlyYXRpb24gaW52YWxpZGUnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdwcm9wZXJ0eSddID0gJ0lsIHkgYSBldSB1bmUgZXJyZXVyIGxvcnMgZGUgbGEgZCZlYWN1dGU7ZmluaXRpb24gJXMgcG91ciBsJiMwMzk7dXRpbGlzYXRldXIgJHMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGdyb3VwaWQnXSA9ICdpZCBkZSBncm91cGUgJXMgaW52YWxpZGUnOwokbGFuZ1snaGlkZGVuZmllbGRtYXJrZXInXSA9ICdNYXJxdWV1ciBkZSBjaGFtcCBjYWNoJmVhY3V0ZTsnOwokbGFuZ1snaGlkZGVuZmllbGRjb2xvciddID0gJ0NvdWxldXIgZGUgY2hhbXAgY2FjaCZlYWN1dGU7JzsKJGxhbmdbJ2hpZGRlbiddID0gJ0NhY2gmZWFjdXRlOyc7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnVW5lIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IGR1IG0mZWNpcmM7bWUgbm9tIGVzdCBkJmVhY3V0ZTtqJmFncmF2ZTsgZCZlYWN1dGU7ZmluaWUnOwokbGFuZ1snZXJyb3Jfbm9wcm9wZXJ0aWVzJ10gPSAnQXVjdW5lIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IGQmZWFjdXRlO2ZpbmllJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnQXVjdW4gcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTsgbiYjMDM5O2EgJmVhY3V0ZTt0JmVhY3V0ZTsgcyZlYWN1dGU7bGVjdGlvbm4mZWFjdXRlO2UgcG91ciBjZSBncm91cGUnOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcm91cGVzIHRyb3V2JmVhY3V0ZTtzJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdMJiMwMzk7YXBwYXJ0ZW5hbmNlICZhZ3JhdmU7IGF1IG1vaW5zIHVuIGdyb3VwZSBlc3QgcmVxdWlzZSc7CiRsYW5nWydwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJ10gPSAnUmVxdWllcnQgbCYjMDM5O2FwcGFydGVuYW5jZSAmYWdyYXZlOyBhdSBtb2lucyB1biBncm91cGUnOwokbGFuZ1snYmFjayddID0gJ1JldG91cic7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnJXMgZXN0IHVuIGNoYW1wIHJlcXVpcyc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnTWFycXVlIGxlcyBjaGFtcHMgcmVxdWlzIGF2ZWMnOwokbGFuZ1sncmVxdWlyZWRmaWVsZGNvbG9yJ10gPSAnTWlzZSBlbiAmZWFjdXRlO3ZpZGVuY2UgZGVzIGNoYW1wcyByZXF1aXMgZW4nOwokbGFuZ1snbmV4dCddID0gJ1Byb2NoYWluJzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnVW4gZ3JvdXBlIGR1IG0mZWNpcmM7bWUgbm9tIGV4aXN0ZSBkJmVhY3V0ZTtqJmFncmF2ZTsnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdDaGFtcCByZXF1aXMnOwokbGFuZ1snb3B0aW9uYWwnXSA9ICdPcHRpb25lbCc7CiRsYW5nWydvZmYnXSA9ICdPZmYnOwokbGFuZ1snbGVuZ3RoJ10gPSAnTG9uZ3VldXInOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4oY2FyYWN0JmVncmF2ZTtyZXMgZGFucyBsZSBjaGFtcCB0ZXh0ZSknOwokbGFuZ1snc2Vsb3B0aW9ucyddID0gJ09wdGlvbnMgbWVudSBkJmVhY3V0ZTtyb3VsYW50LCBzJmVhY3V0ZTtwYXImZWFjdXRlO2VzIHBhciBkZXMgcmV0b3VycyAmYWdyYXZlOyBsYSBsaWduZSc7CiRsYW5nWyd5ZXMnXSA9ICdPdWknOwokbGFuZ1sncHJvbXB0J10gPSAnSW52aXRlJzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0ZSc7CiRsYW5nWydjaGVja2JveCddID0gJ0Nhc2UgJmFncmF2ZTsgY29jaGVyJzsKJGxhbmdbJ2VtYWlsJ10gPSAnQWRyZXNzZSBlbWFpbCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHRhcmVhJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnTWVudSBkJmVhY3V0ZTtyb3VsYW50JzsKJGxhbmdbJ21zZ19jdXJyZW50bHlsb2dnZWRpbmFzJ10gPSAnQmllbnZlbnVlJzsKJGxhbmdbJ2xvZ291dCddID0gJ0QmZWFjdXRlO2Nvbm5leGlvbic7CiRsYW5nWydwcm9tcHRfY2hhbmdlc2V0dGluZ3MnXSA9ICdDaGFuZ2VtZW50IGRlIE1lcyBQYXJhbSZlZ3JhdmU7dHJlcyc7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0xhIGNvbm5leGlvbiBhICZlYWN1dGU7Y2hvdSZlYWN1dGU7IC0gaWRlbnRpZmlhbnQgb3UgbW90IGRlIHBhc3NlIGludmFsaWRlJm5ic3A7Pyc7CiRsYW5nWydsb2dpbiddID0gJ1MmIzAzOTtlbnJlZ2lzdHJlcic7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdJZGVudGlmaWFudCc7CiRsYW5nWydwcm9tcHRfcGFzc3dvcmQnXSA9ICdNb3QgZGUgcGFzc2UnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdFbnJlZ2lzdHJlei12b3VzJzsKJGxhbmdbJ2ZvcmdvdHB3J10gPSAnQXZlei12b3VzIG91YmxpJmVhY3V0ZTsgdm90cmUgbW90IGRlIHBhc3NlJm5ic3A7Pyc7CiRsYW5nWydkZWZhdWx0cyddID0gJ1BhciBkJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnR2FiYXJpdCc7CiRsYW5nWydlcnJvcl91c2Vybm90Zm91bmQnXSA9ICdJRCB1dGlsaXNhdGV1ciBub24gdHJvdXYmZWFjdXRlOyc7CiRsYW5nWydlcnJvcl91c2VybmFtZXRha2VuJ10gPSAnQ2V0IGlkZW50aWZpYW50ICglcykgZXhpc3RlIGQmZWFjdXRlO2omYWdyYXZlOyc7CiRsYW5nWydwcm9tcHRfc210cHZhbGlkYXRlJ10gPSAnVXRpbGlzZXIgU01UUCBwb3VyIGxhIHZhbGlkYXRpb24gZGVzIGFkcmVzc2VzIGVtYWlsJm5ic3A7Pyc7CiRsYW5nWydwcm9tcHRfbWlucHdsZW4nXSA9ICdMb25ndWV1ciBtaW5pbWFsZSBkdSBtb3QgZGUgcGFzc2UnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTG9uZ3VldXIgbWF4aW1hbGUgZHUgbW90IGRlIHBhc3NlJzsKJGxhbmdbJ3Byb21wdF9taW51bmxlbiddID0gJ0xvbmd1ZXVyIG1pbmltYWxlIGRlIGwmIzAzOTtpZGVudGlmaWFudCc7CiRsYW5nWydwcm9tcHRfbWF4dW5sZW4nXSA9ICdMb25ndWV1ciBtYXhpbWFsZSBkZSBsJiMwMzk7aWRlbnRpZmlhbnQnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnRXhwaXJhdGlvbiBkZSBzZXNzaW9uIChtaW51dGVzKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ0F1dG9yaXNlIGwmIzAzOTtlbnJlZ2lzdHJlbWVudCBwYXIgZW1haWwnOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ0dyb3VwZSBwYXIgZCZlYWN1dGU7ZmF1dCBwb3VyIGxlcyBub3V2ZWF1eCB1dGlsaXNhdGV1cnMnOwokbGFuZ1snY2hhbmdlc2V0dGluZ3NfdGVtcGxhdGUnXSA9ICdDaGFuZ2VyIGxlIGdhYmFyaXQgZGVzIHBhcmFtJmVncmF2ZTt0cmVzJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnXSA9ICdMZXMgbW90cyBkZSBwYXNzZSBuZSBjb25jb3JkZW50IHBhcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWUnXSA9ICdJZGVudGlmaWFudCBub24gdmFsaWRlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZCddID0gJ01vdCBkZSBwYXNzZSBub24gdmFsaWRlJzsKJGxhbmdbJ2VkaXR1c2VyJ10gPSAnJkVhY3V0ZTtkaXRlciBsJiMwMzk7dXRpbGlzYXRldXInOwokbGFuZ1sndmFsaWQnXSA9ICdWYWxpZGUnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdJZGVudGlmaWFudCc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXQnOwokbGFuZ1snZXJyb3JfbWVtYmVyZ3JvdXBzJ10gPSAnQ2V0IHV0aWxpc2F0ZXVyIG4mIzAzOTtlc3QgbWVtYnJlIGQmIzAzOTthdWN1biBncm91cGUnOwokbGFuZ1snZXJyb3JfcHJvcGVydGllcyddID0gJ0F1Y3VuZSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyc7CiRsYW5nWyd2YWx1ZSddID0gJ1ZhbGV1cic7CiRsYW5nWydncm91cHMnXSA9ICdHcm91cGVzJzsKJGxhbmdbJ3Byb3BlcnRpZXMnXSA9ICdQcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MnOwokbGFuZ1sncHJvcG5hbWUnXSA9ICdOb20gZGUgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTsnOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnVmFsZXVyIGRlIGxhIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7JzsKJGxhbmdbJ2FkZCddID0gJ0Fqb3V0ZXInOwokbGFuZ1snZWRpdCddID0gJyZFYWN1dGU7ZGl0ZXInOwokbGFuZ1snZXhwaXJlcyddID0gJ0V4cGlyZSc7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcCZlYWN1dGU7Y2lmaWV6IHVuZSBkYXRlJzsKJGxhbmdbJzEyaHJzJ10gPSAnMTIgaGV1cmVzJzsKJGxhbmdbJzI0aHJzJ10gPSAnMjQgaGV1cmVzJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggaGV1cmVzJzsKJGxhbmdbJzF3ZWVrJ10gPSAnMSBzZW1haW5lJzsKJGxhbmdbJzJ3ZWVrcyddID0gJzIgc2VtYWluZXMnOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBtb2lzJzsKJGxhbmdbJzNtb250aHMnXSA9ICczIG1vaXMnOwokbGFuZ1snNm1vbnRocyddID0gJzYgbW9pcyc7CiRsYW5nWycxeWVhciddID0gJzEgYW4nOwokbGFuZ1snbmV2ZXInXSA9ICdKYW1haXMnOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTGUgbW9kdWxlIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgaW5zdGFsbCZlYWN1dGU7IGF2ZWMgc3VjYyZlZ3JhdmU7cy48YnIvPkFzc3VyZXotdm91cyBkZSBkJmVhY3V0ZTtmaW5pciBsYSBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGcm9udEVuZFVzZXIgUHJvcGVydGllcyZxdW90Oyc7CiRsYW5nWydwYXNzd29yZCddID0gJ01vdCBkZSBwYXNzZSc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ0VuY29yZSc7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnVW4gZ3JvdXBlIGR1IG0mZWNpcmM7bWUgbm9tIGV4aXN0ZSBkJmVhY3V0ZTtqJmFncmF2ZTsnOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnJkVhY3V0ZTtkaXRlciBsZSBncm91cGUnOwokbGFuZ1snc3VibWl0J10gPSAnRW52b3llcic7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ1N1cHByaW1lcic7CiRsYW5nWydjb25maXJtX2VkaXRncm91cCddID0gJyZFY2lyYzt0ZXMtdm91cyBzJnVjaXJjO3IgcXVlIGNldHRlIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IGVzdCBjb3JyZWN0ZSBwb3VyIGNlIGdyb3VwZT9cbkQmZWFjdXRlO3NhY3RpdmVyIHVuZSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBuMGVmZmFjZXJhIHBhcyBsZXMgZW50ciZlYWN1dGU7ZXMgZGFucyBsYSB0YWJsZSBkZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzIHBvdXIgY2UgZ3JvdXBlL3V0aWxpc2F0ZXVyLiBUb3V0IGF1IHBsdXMsIGxlcyBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MgbmUgc2Vyb250IHBhcyBkaXNwb25pYmxlcy4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJyZFY2lyYzt0ZXMtdm91cyBzJnVjaXJjO3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2UgZ3JvdXBlJm5ic3A7Pyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnJkVjaXJjO3Rlcy12b3VzIHMmdWNpcmM7ciBkZSB2b3Vsb2lyIGNvbXBsJmVncmF2ZTt0ZW1lbnQgc3VwcHJpbWVyIGNldHRlIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7P1xuQ2VsYSBzdXBwcmltZXJhIHRvdXRlcyBsZXMgZW50ciZlYWN1dGU7ZXMgcG91ciBjZXR0ZSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBpbnN1ZmZpc2FudHMnOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWyduYW1lJ10gPSAnTm9tJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRnb3J1cCddID0gJ3Byb2JsJmVncmF2ZTttZSBsb3JzIGRlIGwmIzAzOTtham91dCBkdSBncm91cGUnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhcmFtcyddID0gJ1BhcmFtJmVncmF2ZTt0cmVzIG5vbiB2YWxpZGVzJzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnQXBwbGlxdWVyJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyZSc7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnVXNlciBSZWd1bGFyIEV4cHJlc3Npb24nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydncm91cG5hbWUnXSA9ICdOb20gZHUgZ3JvdXBlJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjYyZlZ3JhdmU7cyByZWZ1cyZlYWN1dGU7JzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyZXVyJzsKJGxhbmdbJ2FkZGdyb3VwJ10gPSAnQWpvdXRlciB1biBncm91cGUnOwokbGFuZ1snYWRkdXNlciddID0gJ0Fqb3V0ZXIgdW4gdXRpbGlzYXRldXInOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ1V0aWxpc2F0ZXVycyB0cm91diZlYWN1dGU7cyc7CiRsYW5nWydncm91cCddID0gJ0dyb3VwZSc7CiRsYW5nWydzZWxlY3Rncm91cCddID0gJ1MmZWFjdXRlO2xlY3Rpb25uZXIgbGUgZ3JvdXBlJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ0dhYmFyaXQgZCYjMDM5O2VucmVnaXN0cmVtZW50JzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ0dhYmFyaXQgZGUgZCZlYWN1dGU7Y29ubmV4aW9uJzsKJGxhbmdbJ2xvZ2luX3RlbXBsYXRlJ10gPSAnR2FiYXJpdCBkZSBjb25uZXhpb24nOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzJzsKJGxhbmdbJ3VzZXJzJ10gPSAnVXRpbGlzYXRldXJzJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dlc3Rpb24gZGVzIHV0aWxpc2F0ZXVycyBkdSBzaXRlJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRyZlZ3JhdmU7cmUgbGVzIHV0aWxpc2F0ZXVycyBkdSBzaXRlJzsKJGxhbmdbJ2RlZmF1bHRmcm9udHBhZ2UnXSA9ICdQYWdlIHBhciBkJmVhY3V0ZTtmYXV0JzsKJGxhbmdbJ2xhc3RhY2Nlc3NlZHBhZ2UnXSA9ICdEZXJuaSZlZ3JhdmU7cmUgcGFnZSBhY2MmZWFjdXRlO2QmZWFjdXRlO2UnOwokbGFuZ1snb3RoZXJwYWdlJ10gPSAnQXV0cmUgcGFnZSZuYnNwOzonOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPjAuMC4xIC0gT2N0b2JlciAyMDA1IC0gVmVyc2lvbiBpbml0aWFsZSwgbm9uIGZvbmN0aW9ubmVsbGU8L2xpPg0KPGxpPjAuMS4wIC0gT2N0b2JlciAyMDA1IC0gVmVyc2lvbiBpbml0aWFsZTwvbGk+DQo8bGk+MC4xLjEgLSBPY3RvYnJlIDIwMDUgLSBDb3JyZWN0aW9uIGRlcyBwcm9ibCZlZ3JhdmU7bWVzIGF2ZWMgbGVzIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7czwvbGk+DQo8bGk+MC4xLjIgLSBPY3RvYnJlIDIwMDUgLSBBam91dCBkZSBsYSBmb25jdGlvbiBwb3VyIGxlcyBtb3RzIGRlIHBhc3NlIG91YmxpJmVhY3V0ZTtzPC9saT4NCjxsaT48cD4wLjEuMyAtIE5vdmVtYnJlIDIwMDU8L3A+DQogICAgPHA+QWpvdXQgZGUgbGEgcG9zc2liaWxpdCZlYWN1dGU7IGRlIHNwJmVhY3V0ZTtjaWZpZXIgbGVzIHBhZ2VzIGRlIHJlZGlyZWN0aW9uIGFwciZlZ3JhdmU7cyBjb25uZXhpb24gZXQgZCZlYWN1dGU7Y29ubmV4aW9uLCBvdWJsaSBkZSBtb3QgZGUgcGFzc2UgZXQgY2hhbmdlbWVudCBkZSBwYXJhbSZlZ3JhdmU7dHJlcywgYWpvdXQgZGVzIHBhcmFtJmVncmF2ZTt0cmVzIHJldHVybnRvIGV0IGRlIGZvcm11bGFpcmVzIGRhbnMgbGUgcGFubmVhdSB1dGlsaXNhdGV1ciwgbmV0dG95YWdlIGRlIGNvZGUuICBDZXR0ZSB2ZXJzaW9uIHJlcXVpZXJ0IENNU01TIHYwLjExIGV0IHN1aXZhbnRlcy48L3A+PC9saT4NCjxsaT4wLjEuNCAtIE5vdmVtYnJlIDIwMDUgLSBQZXRpdCBjaGFuZ2VtZW50IGVuIHJhcHBvcnQgYXZlYyB1bmUgZm9uY3Rpb24gb3VibGkmZWFjdXRlO2UgcXVpIG4mIzAzOTtlc3QgcGx1cyB1dGlsaXMmZWFjdXRlO2U8L2xpPg0KPGxpPjxwPjAuMS41IC0gTm92ZW1icmUgMjAwNTwvcD4NCiAgICA8cD5VbiBhdXRyZSBwZXRpdCBjaGFuZ2VtZW50LCBham91dCBkZSB0ZXh0ZSBhdSBtZXNzYWdlIGFmZmljaCZlYWN1dGU7IGFwciZlZ3JhdmU7cyBsJiMwMzk7aW5zdGFsbGF0aW9uLjwvcD48L2xpPg0KPGxpPjxwPjAuMS42IC0gSmFudmllciAyMDA2PHA+DQogICAgPHA+Q2hhbmdlbWVudCBkYW5zIGxlcyBwcm9jZXNzdXMgZGUgcGVybWlzc2lvbnMsIGV0IHBldGl0ZXMgY29ycmVjdGlvbnMgZGFucyBsZXMgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcy4gICZFYWN1dGU7Z2FsZW1lbnQgcXVlbHF1ZXMgY29ycmVjdGlvbiBlbiByYXBwb3J0IGF2ZWMgcGhwNSwgaWwgZG9pdCBjZXBlbmRhbnQgcmVzdGVyIHF1ZWxxdWVzIGVycmV1cnMuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjcgLSBKYW52aWVyIDIwMDY8cD4NCiAgICA8cD5NaWxsZSBtZXJjaXMgJmFncmF2ZTsgPGI+a2F0b248L2I+IHBvdXIgbCYjMDM5O2Fqb3V0IGRlcyB0eXBlcyBkZSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MgdGV4dGFyZWEgZXQgbWVudSBkJmVhY3V0ZTtyb3VsYW50LjwvcD4NCiAgICA8cD5Db3JyZWN0aW9ucyBhcHBvcnQmZWFjdXRlO2VzIHBvdXIgciZlYWN1dGU7c291ZHJlIGxlcyBwcm9ibCZlZ3JhdmU7bWVzIGQmIzAzOTtlc3BhY2VzIGRhbnMgbGVzIG5vbXMgZGUgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzIChub3VzIG5lIGxhaXNzZXJvbnMgcGx1cyBqYW1haXMgY2VsYSBzZSBwcm9kdWlyZSkuPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMCAtIEYmZWFjdXRlO3ZyaWVyIDIwMDY8cD4NCiAgICA8cD5Bam91dCBkZSBmaWx0cmUgZXQgbGltaXRhdGlvbiBkZXMgbGlnbmVzIGF1IHBhbm5lYXUgZCYjMDM5O2FkbWluaXN0cmF0aW9uLiBHcm9zIGImZWFjdXRlO24mZWFjdXRlO2ZpY2VzIHBvdXIgbGVzIHNpdGVzIGF2ZWMgYmVhdWNvdXAgZGUgdHJhZmljIGV0IGQmIzAzOTt1dGlsaXNhdGV1cnMuPC9wPg0KICAgIDxwPkFqb3V0IGR1IHRyaSBkYW5zIGxlIHBhbm5lYXUgZCYjMDM5O2FkbWluaXN0cmF0aW9uPC9wPg0KICAgIDxwPkFqb3V0IGRlIGxhIHBvc3NpYmlsaXQmZWFjdXRlOyBkZSBkJmVhY3V0ZTtmaW5pciB1bmUgbG9uZ3VldXIgbWF4aW1hbGUgYXUgY2hhbXBzIHRleHRlIGV0IGVtYWlsPC9wPg0KICAgIDxwPkNvcnJlY3Rpb24gZCYjMDM5O3VuIHBldGl0IHByb2JsJmVncmF2ZTttZSBhdmVjIGxlIGdyb3VwZSBwYXIgZCZlYWN1dGU7ZmF1dCBxdWkgbiYjMDM5OyZlYWN1dGU7dGFpdCBwYXMgY2hvaXNpIGxvcnMgZGUgbCYjMDM5O2Fqb3V0IGQmIzAzOTt1biB1dGlsaXNhdGV1cjwvcD4NCiAgICA8cD5TYXV2ZWdhcmRlIGRlcyBwYXJhbSZlZ3JhdmU7dHJlcyBkZSBmaWx0cmFnZSBkYW5zIGxlcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzLCAmZWFjdXRlO2dhbGVtZW50IGwmIzAzOTtvbmdsZXQgYWN0aWYuPC9wPg0KICAgIDxwPkVmZmFjZSBsZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzIGRlcyB1dGlsaXNhdGV1cnMgcXVhbmQgdW5lIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7IGVzdCBzdXBwcmltJmVhY3V0ZTtlIDxlbT5Ob3RlPC9lbT4sIHBhcyBsb3JzcXUmIzAzOTtlbGxlIGVzdCBkJmVhY3V0ZTtzYWN0aXYmZWFjdXRlO2UgZGFucyBsZSBwYW5uZWF1IGQmIzAzOTsmZWFjdXRlO2RpdGlvbiBkJiMwMzk7dW4gZ3JvdXBlPC9wPg0KICAgIDxwPkFqb3V0IGQmIzAzOTt1biBtZXNzYWdlIGRlIGNvbmZpcm1hdGlvbiBsb3JzIGRlIGwmIzAzOTsmZWFjdXRlO2RpdGlvbiBkJiMwMzk7dW4gZ3JvdXBlLjwvcD4NCiAgICA8cD5Bam91dCBkZSBkZXV4IGF1dHJlcyBtZXNzYWdlcyBkZSBjb25maXJtYXRpb24uPC9wPg0KICAgIDxwPkFqb3V0IGRlIGwmIzAzOTtvcHRpb24gZCYjMDM5O2V4cG9ydCBzb3VzIGZvcm1hdCBDU1Y8L3A+DQogICAgPHA+QSBmYWlyZSAtIEFqb3V0IGRlcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIHBvdXIgbGVzIGxvbmd1ZXVycyBtYXhpbWFsZXMgZGVzIGNoYW1wcyAmcXVvdDtub20gZCYjMDM5O3V0aWxpc2F0ZXVyJnF1b3Q7IGV0ICZxdW90O21vdCBkZSBwYXNzZSZxdW90OzwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjEgLSBNYXJzIDIwMDY8cD4NCiAgICA8cD5Bam91dCZlYWN1dGU7IGxhIHBvc3NpYmlsaXQmZWFjdXRlOyBkZSB2JmVhY3V0ZTtyaWZpZXIgbGVzIGFkcmVzc2VzIGVtYWlsICZhZ3JhdmU7IGRvdWJsZTwvcD4NCiAgICA8cD5Db3JyZWN0aW9uIGR1IHByb2JsJmVncmF2ZTttZSBvJnVncmF2ZTsgbGEgZGF0ZSBkJiMwMzk7ZXhwaXJhdGlvbiAmZWFjdXRlO3RhaXQgbW9kaWZpJmVhY3V0ZTtlIHF1YW5kIHVuIGFkbWluaXN0cmF0ZXVyIGNoYW5nZWFpdCBsZXMgcGFyYW0mZWdyYXZlO3RyZXMgZCYjMDM5O3VuIHV0aWxpc2F0ZXVyPC9wPg0KICAgIDxwPkFqb3V0IGQmIzAzOTt1biBtZXNzYWdlIGRlIGNvbmZpcm1hdGlvbiBhdSBib3V0b24gc2F1dmVyIGxlcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzPC9wPg0KICAgIDxwPkNvcnJlY3Rpb24gZCYjMDM5O3VuIGJ1ZyBtaW5ldXIgZGFucyBsZSBjb21wdGUgZGVzIHV0aWxpc2F0ZXVycyBkYW5zIHVuIGdyb3VwZTwvcD4NCiAgICA8cD5Db3JyZWN0aW9uIGRlIGxhIHRhaWxsZSBkZXMgY2hhbXBzIG5vbSBkJiMwMzk7dXRpbGlzYXRldXIgZXQgbW90IGRlIHBhc3NlLCBhaW5zaSBxdWUgbGEgbG9uZ3VldXIgbWF4aW1hbGUgZHUgY2hhbXA8L3A+DQogICAgPHA+QWpvdXQgZCYjMDM5O3VuIGZpbHRyZSBhdmFuYyZlYWN1dGU7IHN1ciBsZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzPC9wPg0KICAgIDxwPkNoYW5nZW1lbnRzIHN1ciBsZXMgbGFiZWxzIHBvdXIgbCYjMDM5O2Fqb3V0IG91IGwmIzAzOTsmZWFjdXRlO2RpdGlvbiBkJiMwMzk7dXRpbGlzYXRldXI8L3A+DQogICAgPHA+Q29ycmVjdGlvbnMgZGVzIHByb2JsJmVncmF2ZTttZXMgYXZlYyBsZXMgZm9ybXVsYWlyZXMgaW5saW5lIG91IG5vbi1pbmxpbmUsIGxlIG1vdCBkZSBwYXNzZSBuJiMwMzk7ZXN0IGphbWFpcyBlbnZveSZlYWN1dGU7IHN1ciBsYSBsaWduZTwvcD4NCiAgICA8cD5Nb2RpZmkmZWFjdXRlOyBwb3VyIHF1ZSBDTVMgMC4xMi1iZXRhMiBzb2l0IHVuIG1pbmltdW0gcmVxdWlzIChwb3VyIGRlcyBxdWVzdGlvbnMgZGUgcyZlYWN1dGU7Y3VyaXQmZWFjdXRlOyk8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4yIC0gTWFycyAyMDA2PHA+DQogICAgPHA+RW5jb3JlIGRlcyBjb3JyZWN0aW9ucyBkZSBsb25ndWV1cnMgZGUgY2hhbXBzPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMyAtIE1hcnMgIDIwMDY8cD4NCiAgICA8cD5FeHBvcnRhdGlvbiAmYWdyYXZlOyBzbWFydHkgZGUgdG91dGVzIGxlcyBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MgdXRpbGlzYXRldXJzIHF1YW5kIGlscyBzb250IGxvZ2cmZWFjdXRlO3M8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC40IC0gTWFpIDIwMDY8cD4NCiAgICA8cD5Db3JyZWN0aW9uIGR1IGNvZGUgZCYjMDM5O2V4cG9ydGF0aW9uPC9wPg0KICAgIDxwPk5ldHRveWFnZSBkdSBjb2RlIChmb25jdGlvbnMgYWxwaGFiJmVhY3V0ZTt0aXF1ZXMpPC9wPg0KICAgIDxwPlBldGl0ZXMgY29ycmVjdGlvbnMgZXQgYW0mZWFjdXRlO2xpb3JhdGlvbnMgKHJlY29tbWFuZCZlYWN1dGU7ZXMgcGFyIG5pbHM3MykgcG91ciBsZXMgY2hhbmdlbWVudHMgZGUgbW90cyBkZSBwYXNzZS48L3A+DQogICAgPHA+U3VwcHJlc3Npb24gZGUgdmVyc2lvbiBDTVMgMC4xMiByZXF1aXNlLCByZXRvdXIgJmFncmF2ZTsgbGEgdmVyc2lvbiAwLjExLjI8L3A+DQogICAgPHA+QWpvdXIgZHUgZm9ybXVsYWlyZSAmIzAzOTtzaWxlbnQmIzAzOTsgKGNhY2gmZWFjdXRlOyk8L3A+DQogICAgPHA+TmV0dG95YWdlIGRlIGwmIzAzOTthY2MmZWdyYXZlO3MgJmFncmF2ZTsgbGEgYmFzZSBkZSBkb25uJmVhY3V0ZTtlcyBwb3VyIGRlcyByYWlzb25zIGRlIHBlcmZvcm1hbmNlIChlc3AmZWFjdXRlO3JvbnMpPC9wPg0KICAgIDxwPkFqb3V0IGRlIGwmIzAzOTtpbmZvIGNvcHlyaWdodDwvcD4NCiAgICA8cD5Bam91dCBkZSBtYWNybyBwb3VyIGxhIHJlZGlyZWN0aW9uIGRlIGwmIzAzOTt1dGlsaXNhdGV1ciBzdXIgdW5lIHBhZ2Ugc3AmZWFjdXRlO2NpZmlxdWUgbG9ycyBkZSBsYSBjb25uZXhpb24gZXQgZCZlYWN1dGU7Y29ubmV4aW9uPC9wPg0KICAgIDxwPkNoYW5nZW1lbnRzIGRhbnMgbGVzIG9uZ2xldHMgZGUgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlczwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjUgLSBNYWkgMjAwNjwvcD4NCiAgICA8cD5Qcm9ibCZlZ3JhdmU7bWUgYXZlYyBsZXMgZGF0ZXMgZCYjMDM5O2V4cGlyYXRpb24gZml4JmVhY3V0ZTs8L3A+DQogICAgPHA+Q29kZSBzcGxpdHQmZWFjdXRlOyBzdXIgcGx1c2lldXJzIGZpY2hpZXJzPC9wPg0KPGxpPjxwPjEuMC42IC0gTWFpIDIwMDY8L3A+DQogICAgPHA+UHJvYmwmZWdyYXZlO21lIGRlcyBtZW51cyBkJmVhY3V0ZTtyb3VsYW50cyBmaXgmZWFjdXRlOzwvcD4NCjwvbGk+DQo8bGk+PHA+MS4xLjAgLSBNYWkgMjAwNjwvcD4NCiAgICA8cD4mRWFjdXRlO3YmZWFjdXRlO25lbWVudHM8L3A+DQogICAgPHA+UGVybWV0IGRlIG5lIHBhcyBhdXRvcmlzZXIgZGVzIGNvbm5leGlvbnMgciZlYWN1dGU7cCZlYWN1dGU7dCZlYWN1dGU7ZXM8L3A+DQogICAgPHA+RXhwb3J0ZSBsJiMwMzk7aWQgdXRpbGlzYXRldXIgJmFncmF2ZTsgU21hcnR5PC9wPg0KPC9saT4NCjxsaT48cD4xLjEuMSAtIFNlcHQgMjAwNjwvcD4NCiAgICA8cD5Db3JyZWN0aW9uIGQmIzAzOTt1biBidWcgcXVpIGFwcGFyYSZpY2lyYztzc2FpdCBxdWFuZCB1biB1dGlsaXNhdGV1ciAmZWFjdXRlO2RpdGFpdCBzZXMgcGFyYW0mZWdyYXZlO3RyZXMgYXZlYyBcJiMwMzk7QXV0b3Jpc2VyIGxlcyBkb3VibG9ucyBkJiMwMzk7ZW1haWxcJiMwMzk7IG5vbiBhY3RpdiZlYWN1dGU7PC9wPg0KICAgIDxwPk1vZGlmaSZlYWN1dGU7IGxhIHRhYmxlIGQmZWFjdXRlO3JvdWxhbnRlICZhZ3JhdmU7IDI1NSBjYXJhY3QmZWdyYXZlO3JlczwvcD4NCiAgICA8cD5OZXR0b3lhZ2UgbWluZXVyPC9wPg0KPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+UXVlIGZhaXQgY2UgbW9kdWxlID88L2gzPg0KPHA+Q2UgbW9kdWxlIHBlcm1ldCBsYSBnZXN0aW9uIGV0IGwmIzAzOTthZG1pbmlzdHJhdGlvbiBkZXMgdXRpbGlzYXRldXJzIGR1IHNpdGUgc3VyIGxhIHBhcnRpZSBwdWJsaXF1ZSA8aT4odXRpbGlzYXRldXJzIHF1aSBuJiMwMzk7b250IHBhcyBhY2MmZWdyYXZlO3MgYXUgcGFubmVhdSBkJiMwMzk7YWRtaW5pc3RyYXRpb24pPC9pPi4gSWwgcGVybWV0IGxhIGNyJmVhY3V0ZTthdGlvbiBkZSBncm91cGVzIGQmIzAzOTt1dGlsaXNhdGV1cnMsIGRlIGNvbXB0ZXMgdXRpbGlzYXRldXIsIGV0IHBlcm1ldCBhdXggdXRpbGlzYXRldXJzIGRlIHNlIGNvbm5lY3RlciBldCBzZSBkJmVhY3V0ZTtjb25uZWN0ZXIuIElsIHBldXQgJmVjaXJjO3RyZSB1dGlsaXMmZWFjdXRlOyBhdmVjIGxlIG1vZHVsZSBDdXN0b21Db250ZW50IHBvdXIgYWZmaWNoZXIgZHUgY29udGVudSBkaWZmJmVhY3V0ZTtyZW50IHNlbG9uIGxlcyB1dGlsaXNhdGV1cnMsIHVuZSBmb2lzIHF1JiMwMzk7aWxzIHNvbnQgY29ubmVjdCZlYWN1dGU7cy48L3A+DQo8aDM+Rm9uY3Rpb25uYWxpdCZlYWN1dGU7czwvaDM+DQo8dWw+DQo8bGk+PHA+RXhwaXJhdGlvbiBkdSBjb21wdGUgdXRpbGlzYXRldXIuICBWb3VzIHBvdXZleiBjciZlYWN1dGU7ZXIgZGVzIHV0aWxpc2F0ZXVycyB0ZW1wb3JhaXJlczwvcD48L2xpPg0KPGxpPjxwPlByb3ByaSZlYWN1dGU7dCZlYWN1dGU7cyBkZSBncm91cGUuICBWb3VzIHBvdXZleiBkZW1hbmRlciBkZXMgaW5mb3JtYXRpb25zIGRpZmYmZWFjdXRlO3JlbnRlcyBhdXggbWVtYnJlcyBkZSBkaWZmJmVhY3V0ZTtyZW50cyBncm91cGVzPC9wPjwvbGk+DQo8bGk+PHA+UGV1dCBnJmVhY3V0ZTtyZXIgZGVzIGNlbnRhaW5lcyBkJiMwMzk7dXRpbGlzYXRldXJzPC9wPjwvbGk+DQo8bGk+PHA+Q29udGllbnQgdW5lIEFQSSAmZWFjdXRlO3RlbmR1ZSwgcG91ciBsJiMwMzk7YWpvdXQgZGUgZm9uY3Rpb25uYWxpdCZlYWN1dGU7czwvcD48L2xpPg0KPC91bD4NCjxoMz5Db21tZW50IGwmIzAzOTt1dGlsaXNlcjwvaDM+DQo8dWw+DQo8bGk+PHA+QXByJmVncmF2ZTtzIGluc3RhbGxhdGlvbiwgdm91cyBwb3V2ZXogYWNjJmVhY3V0ZTtkZXIgYXUgbW9kdWxlIEZyb250RW5kVXNlcnMgcGFyIGxlIHBhbm5lYXUgZCYjMDM5O2FkbWluaXN0cmF0aW9uIHNvdXMgbGUgbWVudSAmcXVvdDtHcm91cGVzICZhbXA7IFV0aWxpc2F0ZXVycyZxdW90Oy48L3A+PC9saT4NCjxsaT4NCjxwPkRldXhpJmVncmF2ZTttZW1lbnQsIHZvdXMgZGV2cmlleiBkJmVhY3V0ZTtmaW5pciBkZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzLiBMZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzIHNvbnQgZXNzZW50aWVsbGVtZW50IGRlcyBkJmVhY3V0ZTtmaW5pdGlvbnMgZGUgY2hhbXAsIHZvdXMgcG91dmV6IGljaSBkJmVhY3V0ZTtmaW5pciBsZSB0eXBlIGQmIzAzOTtpbmZvcm1hdGlvbiBxdWUgdm91cyBkJmVhY3V0ZTtzaXJleiBjb2xsZWN0ZXIsIGV0IGxlcyBsaW1pdGVzLiBwLmV4LiBOb20sIEFnZSwgVmlsbGUsIEQmZWFjdXRlO3BhcnRlbWVudCwgUGF5cywgQWRyZXNzZSBlbWFpbCwgZXRjLiA8L3A+DQo8cD48Yj5Ob3RlOjwvYj4gVm91cyBuJiMwMzk7YXZleiBwYXMgYmVzb2luIGRlIGQmZWFjdXRlO2ZpbmlyIGxlcyBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MgZGUgbCYjMDM5O2lkZW50aWZpYW50IGV0IGR1IG1vdCBkZSBwYXNzZSwgaWxzIHNvbnQgY3ImZWFjdXRlOyZlYWN1dGU7cyBwb3VyIHZvdXMuPC9iPg0KPC9saT4NCjxsaT48cD5FbnN1aXRlLCB2b3VzIGRldnJpZXogY3ImZWFjdXRlO2VyIHVuIG91IHBsdXNpZXVycyBub20ocykgZGUgZ3JvdXBlLiBRdWFuZCB2b3VzIGNyJmVhY3V0ZTsmZWFjdXRlO3ogdW4gZ3JvdXBlLCB2b3VzIGRldmV6IGVudHJlciB1biBub20gZGUgZ3JvdXBlLCB1bmUgZGVzY3JpcHRpb24gZXQgZGV2ZXogYXNzb2NpZXIgZGVzIHByb3ByaSZlYWN1dGU7dCZlYWN1dGU7cyBhdSBncm91cGUsIHNwJmVhY3V0ZTtjaWZpZXIgbCYjMDM5O29yZHJlIGRlcyBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlO3MsIHNpIGNlbGxlcy1jaSBzb250IG9wdGlvbm5lbGxlcywgcmVxdWlzZXMgb3UgZGUgY2hhbXAgY2FjaCZlYWN1dGU7PGk+KG9mZiBlc3QgYXVzc2kgdmFsaWRlKTwvaT48L3A+PC9saT4NCjxsaT48cD48Yj5Ob3RlOjwvYj4gQXZhbnQgZGUgY29udGludWVyLCB2ZXVpbGxleiB2b3VzIGFzc3VyZXIgcXVlIGxlcyBwciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIHNvbnQgZCZlYWN1dGU7ZmluaWVzIGNvcnJlY3RlbWVudC48L3A+PC9saT4NCjxsaT48cD5Ucm9pc2kmZWdyYXZlO21lbWVudCwgY3ImZWFjdXRlO2V6IGxlcyB1dGlsaXNhdGV1cnMuIEwmIzAzOTtham91dCBkJiMwMzk7dXRpbGlzYXRldXIgZXN0IHVuIHByb2Nlc3N1cyBlbiBkZXV4IHRlbXBzLiBRdWFuZCB2b3VzIGNyJmVhY3V0ZTsmZWFjdXRlO3ogdW4gdXRpbGlzYXRldXIsIHZvdXMgZGV2ZXogZW50cmVyIHVuIGlkZW50aWZpYW50IGV0IHVuIG1vdCBkZSBwYXNzZSwgYWluc2kgcXUmIzAzOTt1bmUgZGF0ZSBkJiMwMzk7ZXhwaXJhdGlvbi4gVm91cyBkZXZleiBlbnN1aXRlIHMmZWFjdXRlO2xlY3Rpb25uZXIgbGUgb3UgbGVzIGdyb3VwZShzKSBhdSh4KXF1ZWwocykgY2V0IHV0aWxpc2F0ZXVyIGFwcGFydGllbmRyYSwgcHVpcyBjbGlxdWVyIHN1ciBcJiMwMzk7U3VpdmFudFwmIzAzOTs8L3A+DQo8cD48ZW0+Tm90ZTogPC9lbT5DZWNpIGVzdCB1biB0cmF2YWlsIGxvbmcgZXQgbGFib3JpZXV4LCBpbCBlc3QgcGx1cyBmYWNpbGUgZGUgbGFpc3NlciBsZXMgdXRpbGlzYXRldXJzIHMmIzAzOTtlbnJlZ2lzdHJlciBldXgtbSZlY2lyYzttZXMuIFB1aXMgdm91cyBwb3V2ZXogJmVhY3V0ZTtkaXRlciBsZXVyIGdyb3VwZSBkJiMwMzk7YXBwYXJ0ZW5hbmNlLiBDZXBlbmRhbnQsIGNyJmVhY3V0ZTsmZWFjdXRlO3ogYXUgbW9pbnMgdW4gdXRpbGlzYXRldXItdGVzdC48L3A+PC9saT4NCjxsaT48cD5FbmZpbiwgYXByJmVncmF2ZTtzIHF1ZSBsZSBzeXN0JmVncmF2ZTttZSBhaWUgZCZlYWN1dGU7dGVybWluJmVhY3V0ZTsgdG91cyBsZXMgY2hhbXBzIGEgcHImZWFjdXRlO3NlbnRlciAmYWdyYXZlOyBsJiMwMzk7dXRpbGlzYXRldXIsIHZvdXMgdmVycmV6IHVuIGZvcm11bGFpcmUgcXVpIHZvdXMgZGVtYW5kZXJhIGRlIGQmZWFjdXRlO2ZpbmlyIHRvdXMgbGVzIGNoYW1wcyBvYmxpZ2F0b2lyZXMuIFJlbXBsaXNzZXogY2UgZm9ybXVsYWlyZSBwb3VyIHRlcm1pbmVyIGwmIzAzOTtham91dCBkZSBsJiMwMzk7dXRpbGlzYXRldXIuPC9wPjwvbGk+DQo8bGk+PHA+Vm91cyAmZWNpcmM7dGVzIG1haW50ZW5hbnQgcHImZWNpcmM7dCAmYWdyYXZlOyBham91dGVyIGxhIGZvbmN0aW9uIGF1eCBwYWdlcyBkZSB2b3RyZSBzaXRlLiBDJiMwMzk7ZXN0IHRyJmVncmF2ZTtzIHNpbXBsZSwgYWpvdXRleiBsYSBiYWxpc2UgU21hcnR5IHtjbXNfbW9kdWxlIG1vZHVsZT1Gcm9udEVuZFVzZXJzfSAmYWdyYXZlOyB2b3RyZSBwYWdlIG91IGdhYmFyaXQ8L3A+PC9saT4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5DZSBtb2R1bGUgbmUgY29udGllbnQgYXVjdW4gc3VwcG9ydCBjb21tZXJjaWFsLiBDZXBlbmRhbnQsIGNlcyByZXNzb3VyY2VzIHNvbnQgZGlzcG9uaWJsZXMgcG91ciB2b3VzIGFpZGVyJm5ic3A7OjwvcD4NCjx1bD4NCjxsaT5Qb3VyIGxhIGRlcm5pJmVncmF2ZTtyZSB2ZXJzaW9uIGRlIGNlIG1vZHVsZSwgbGVzIEZBUXMsIG91IHBvdXIgYW5ub25jZXIgdW4gYnVnLCBvdSBwb3VyIGFjaGV0ZXIgZHUgc3VwcG9ydCBjb21tZXJjaWFsLCB2ZXVpbGxleiB2aXNpdGVyIGxlIHNpdGUgZGUgY2FsZ3V5JiMwMzk7cyA8YSBocmVmPSZxdW90O2h0dHA6Ly90ZWNoY29tLmR5bmRucy5vcmcmcXVvdDs+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPg0KPGxpPkRlcyBkaXNjdXNzaW9ucyBjb21wbCZlYWN1dGU7bWVudGFpcmVzIHJlbGF0aXZlcyAmYWdyYXZlOyBjZSBtb2R1bGUgcGV1dmVudCBhdXNzaSAmZWNpcmM7dHJlIHRyb3V2JmVhY3V0ZTtlcyBzdXIgbGVzIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7IHRhcmdldD0mcXVvdDtfYmxhbmsmcXVvdDs+Rm9ydW1zIENNUyBNYWRlIFNpbXBsZTwvYT4uPC9saT4NCjxsaT5MJiMwMzk7YXV0ZXVyLCBjYWxndXkxMDAwLCBlc3Qgc291dmVudCBzdXIgSVJDIHN1ciBjYW5hbCAjY21zOiBpcmMuZnJlZW5vZGUubmV0LyNjbXM8L2xpPg0KPGxpPkV0IGVuZmluLCB2b3VzIHBvdXZleiByZW5jb250cmVyIHVuIGNlcnRhaW4gc3VjYyZlZ3JhdmU7cyBlbiBlbnZveWFudCB1biBlbWFpbCBkaXJlY3RlbWVudCAmYWdyYXZlOyBsJiMwMzk7YXV0ZXVyLjwvbGk+ICANCjwvdWw+DQo8aDM+UGFyYW0mZWdyYXZlO3RyZXM8L2gzPg0KPHVsPg0KPGxpPjxlbT4ob3B0aW9uZWwpPC9lbT4gZm9ybT0mcXVvdDtuYW1lJnF1b3Q7PC9saT4NCjxwPkZvcm11bGFpcmVzOg0KPHVsPg0KIDxsaT48ZW0+bG9naW48L2VtPiAtIEFmZmljaGUgbGUgZm9ybXVsYWlyZSBkZSBjb25uZXhpb248L2xpPg0KIDxsaT48ZW0+bG9nb3V0PC9lbT4gLSBBZmZpY2hlIGxlIGZvcm11bGFpcmUgZGUgZCZlYWN1dGU7Y29ubmV4aW9uPC9saT4NCiA8bGk+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT4gLSBBZmZpY2hlIGxlIGZvcm11bGFpcmUgZGUgY2hhbmdlbWVudCBkZSBwYXJhbSZlZ3JhdmU7dHJlczwvbGk+DQogPGxpPjxlbT5mb3Jnb3RwdzwvZW0+IC0gQWZmaWNoZSBsZSBmb3JtdWxhaXJlIGQmIzAzOTtvdWJsaSBkZSBtb3QgZGUgcGFzc2U8L2xpPg0KPGxpPjxlbT5zaWxlbnQ8L2VtPiA9IE4mIzAzOTthZmZpY2hlIHJpZW4sIG1haXMgZXhwb3J0ZSBsZXMgcHJvcHJpJmVhY3V0ZTt0JmVhY3V0ZTtzIGV0IGF1dHJlcyB2YXJpYWJsZXMgc21hcnR5IHBvdXIgbCYjMDM5O3V0aWxpc2F0ZXVyIGNvbm5lY3QmZWFjdXRlOy4gU2kgYXVjdW4gdXRpbGlzYXRldXIgbiYjMDM5O2VzdCBjb25uZWN0JmVhY3V0ZTssIGF1Y3VuZSB2YXJpYWJsZSBuJiMwMzk7ZXN0IGV4cG9ydCZlYWN1dGU7ZS48L2xpPg0KPC91bD4NCjwvcD4NCjxsaT48ZW0+KG9wdGlvbmVsKTwvZW0+IHJldHVybnRvPSZxdW90O3BhZ2UmcXVvdDs8L2xpPg0KPHA+VXRpbGlzJmVhY3V0ZTsgYXZlYyBsZXMgZm9ybXVsYWlyZXMgZGUgY29ubmV4aW9uLCBkZSBkJmVhY3V0ZTtjb25uZXhpb24sIGV0IGRlIGNoYW5nZW1lbnQgZGUgcGFyYW0mZWdyYXZlO3RyZXMsIGNlIHBhcmFtJmVncmF2ZTt0cmUgY29udGllbnQgbCYjMDM5O2lkIG91IGwmIzAzOTthbGlhcyBkZSBsYSBwYWdlICZhZ3JhdmU7IGxhcXVlbGxlIHJlZGlyaWdlciBsJiMwMzk7dXRpbGlzYXRldXIgYXByJmVncmF2ZTtzIGwmIzAzOTtlbnZvaSBkdSBmb3JtdWxhaXJlLCBzaSBjZWx1aS1jaSBhICZlYWN1dGU7dCZlYWN1dGU7IHRyYWl0JmVhY3V0ZTsgYXZlYyBzdWNjJmVncmF2ZTtzPC9wPg0KPC91bD4NCjxwPkNvbmZvcm0mZWFjdXRlO21lbnQgJmFncmF2ZTsgbGEgbGljZW5jZSBHUEwsIGNlIG1vZHVsZSBlc3QgZGlzdHJpYnUmZWFjdXRlOyB0ZWwgcXVlbC4gVmV1aWxsZXogdm91cyByJmVhY3V0ZTtmJmVhY3V0ZTtyZXIgZGlyZWN0ZW1lbnQgJmFncmF2ZTsgbGEgbGljZW5jZSBwb3VyIHRvdXQgYXZpcyBkZSBub24gcmVzcG9uc2FiaWxpdCZlYWN1dGU7LjwvcD4NCjxoMz5SZXF1aXM8L2gzPg0KPHA+UG91ciBsJiMwMzk7aW1wbCZlYWN1dGU7bWVudGF0aW9uIGRlIGxhIHImZWFjdXRlO2luaXRpYWxpc2F0aW9uIGRlIG1vdCBkZSBwYXNzZSBvdWJsaSZlYWN1dGU7LCBjZSBtb2R1bGUgcmVxdWllcnQgcXVlIGxlIG1vZHVsZSBDTVNNYWlsZXIgc29pdCBwciZlYWN1dGU7YWxhYmxlbWVudCBpbnN0YWxsJmVhY3V0ZTsuPC9wPg0KPGgzPkNvcHlyaWdodCBldCBMaWNlbmNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNSwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0mcXVvdDttYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZxdW90Oz48Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbT48L2E+LiBUb3VzIGRyb2l0cyByJmVhY3V0ZTtzZXJ2JmVhY3V0ZTtzLjwvcD4NCjxwPkNlIG1vZHVsZSBlc3QgZGlzdHJpYnUmZWFjdXRlOyBzb3VzIGxhIGxpY2VuY2UgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmcXVvdDsgdGFyZ2V0PSZxdW90O19ibGFuayZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBWb3VzIGRldmV6IGFnciZlYWN1dGU7ZXIgYXV4IHRlcm1lcyBkZSBjZXR0ZSBsaWNlbmNlIHBvdXIgcG91dm9pciB1dGlsaXNlciBjZSBtb2R1bGUuPC9wPic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExNTgyNDU3MDcuNjcuMjgudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWRldi5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L3x1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My40NDE3NzU2NzMuMTE0OTkxNDMxNS4xMTU4OTQ4MjcyLjExNTkwOTU5NTIuNzInOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdRdWVzdG8gdXRlbnRlIGhhIGdpJmFncmF2ZTsgZWZmZXR0dWF0byBsJiMwMzk7YWNjZXNzbyc7CiRsYW5nWydlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnXSA9ICdJbCB0ZXN0byBkYWxsJiMwMzk7aW1tYWdpbmUgbm9uICZlZ3JhdmU7IHN0YXRvIGluc2VyaXRvIGNvcnJldHRhbWVudGUnOwokbGFuZ1sncHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2lucyddID0gJ1Blcm1ldHRlIGFnbGkgdXRlbnRpIGRpIGNvbm5ldHRlcnNpIHBpJnVncmF2ZTsgdm9sdGUgY29udGVtcG9yYW5lYW1lbnRlJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnPGgzPk9uRGVsZXRlVXNlcjxoMz4NCjxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIHZpZW5lIGNhbmNlbGxhdG88L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIElsIG5vbWUgdXRlbnRlPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIEwmIzAzOTtJRCB1dGVudGU8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZVVzZXInXSA9ICc8aDM+T25DcmVhdGVVc2VyPGgzPg0KPHA+VW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB2aWVuZSBjcmVhdG8gdW4gdXRlbnRlPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIElsIG5vbWUgdXRlbnRlPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIEwmIzAzOTtJRCB1dGVudGU8L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZUdyb3VwJ10gPSAnPGgzPk9uQ3JlYXRlR3JvdXA8aDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHZpZW5lIGNyZWF0byB1biBncnVwcG88L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gSWwgbm9tZSBkZWwgZ3J1cHBvPC9saT4NCjxsaT48ZW0+ZGVzY3JpcHRpb248L2VtPiAtIExhIGRlc2NyaXppb25lIGRlbCBncnVwcG88L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gTCYjMDM5O0lEIGRlbCBncnVwcG88L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZUdyb3VwJ10gPSAnPGgzPk9uRGVsZXRlR3JvdXA8aDM+DQo8cD5VbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHZpZW5lIGNhbmNlbGxhdG8gdW4gZ3J1cHBvPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIElsIG5vbWUgZGVsIGdydXBwbzwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBMJiMwMzk7SUQgZGVsIGdydXBwbzwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICc8aDM+T25Mb2dpbjxoMz4NCjxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIGVmZmV0dHVhIGwmIzAzOTthY2Nlc3NvPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBJbCBub21lIGRlbGwmIzAzOTt1dGVudGUgY2hlIGhhIGVmZmV0dHVhdG8gbCYjMDM5O2FjY2Vzc288L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gTCYjMDM5O2luZGlyaXp6byBJUCBkZWwgY2xpZW50PC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ291dCddID0gJzxwPlVuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdW4gdXRlbnRlIHNpIGRpc2Nvbm5ldHRlPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBJbCBub21lIGRlbGwmIzAzOTt1dGVudGUgZGlzY29ubmVzc288L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gTCYjMDM5O0lEIHV0ZW50ZTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25FeHBpcmVVc2VyJ10gPSAnPHA+VW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyBzY2FkZSB1bmEgc2Vzc2lvbmUgdXRlbnRlPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBJbCBub21lIGRlbGwmIzAzOTt1dGVudGUgc2NhZHV0bzwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBMJiMwMzk7SUQgZGVsbCYjMDM5O3V0ZW50ZSBzY2FkdXRvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB1biB1dGVudGUgc2kgY29ubmV0dGUgYWwgc2lzdGVtYSc7CiRsYW5nWydldmVudF9pbmZvX09uTG9nb3V0J10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB1biB1dGVudGUgc2kgZGlzY29ubmV0dGUgZGFsIHNpc3RlbWEnOwokbGFuZ1snZXZlbnRfaW5mb19PbkV4cGlyZVVzZXInXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIGxhIHNlc3Npb25lIHV0ZW50ZSBzY2FkZSc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlVXNlciddID0gJ1VuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdmllbmUgY3JlYXRvIHVuIG51b3ZvIHV0ZW50ZSc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlVXNlciddID0gJ1VuIGV2ZW50byBnZW5lcmF0byBxdWFuZG8gdmllbmUgY2FuY2VsbGF0byB1biBhY2NvdW50IHV0ZW50ZSc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlR3JvdXAnXSA9ICdVbiBldmVudG8gZ2VuZXJhdG8gcXVhbmRvIHZpZW5lIGNyZWF0byB1biBudW92byBncnVwcG8nOwokbGFuZ1snZXZlbnRfaW5mb19PbkRlbGV0ZUdyb3VwJ10gPSAnVW4gZXZlbnRvIGdlbmVyYXRvIHF1YW5kbyB2aWVuZSBjYW5jZWxsYXRvIHVuIGdydXBwbyc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnR3J1cHBvIGRpIEJhY2tlbmQnOwokbGFuZ1snaW5mb19zdGFyJ10gPSAnKiBMZSBzZWd1ZW50aSBtYWNybyBwb3Nzb25vIGVzc2VyZSB1c2F0ZSBpbiBxdWVzdG8gY2FtcGk6IHskdXNlcm5hbWV9LHskZ3JvdXB9LiBRdWFuZG8gdXNhdGUgbGEgbWFjcm8geyRncm91cH0sIGlsIHNpc3RlbWEgc29zdGl0dWlyJmFncmF2ZTsgaWwgbm9tZSBkZWwgcHJpbW8gZ3J1cHBvIHV0ZW50aSBhIGN1aSBhcHBhcnRpZW5lIGwmIzAzOTt1dGVudGUgZSByZWRpcmV6aW9uZXImYWdyYXZlOyBhIHF1ZWxsYSBwYWdpbmEuJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdNb2RpZmljYSBxdWVzdG8gY2FtcG8gcGVyIHJlc2V0dGFyZSBsZSBwYXNzd29yZCB1dGVudGknOwokbGFuZ1snaW5mb19hZG1pbl9yZXBlYXRwYXNzd29yZCddID0gJ01vZGlmaWNhIHF1ZXN0byBjYW1wbyBwZXIgcmVzZXR0YXJlIGxlIHBhc3N3b3JkIHV0ZW50aSc7CiRsYW5nWydlcnJvcl91c2VybmFtZV9leGlzdHMnXSA9ICdFc2lzdGUgZ2kmYWdyYXZlOyB1biB1dGVudGUgY29uIHF1ZXN0byB1c2VybmFtZSc7CiRsYW5nWydub2NzdnJlc3VsdHMnXSA9ICdOZXNzdW4gcmlzdWx0YXRvIHJpY2V2dXRvIGRhbGwmIzAzOTtlc3BvcnRhemlvbmUgY3N2JzsKJGxhbmdbJ3Byb21wdF91bmZsZGxlbiddID0gJ0x1bmdoZXp6YSBkZWwgY2FtcG8gdXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnTHVuZ2hlenphIGRlbCBjYW1wbyBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnTHVuZ2hlenplIE1pbi9NYXggbm9uIHZhbGlkZSBkZWxsYSBwYXNzd29yZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWVsZW5ndGhzJ10gPSAnTHVuZ2hlenplIE1pbi9NYXggbm9uIHZhbGlkZSBkZWxsbyB1c2VybmFtZSc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ05vbiB0cm92byB1biBpbmRpcml6em8gZW1haWwgcGVyIHF1ZXN0byBhY2NvdW50JzsKJGxhbmdbJ3VzZXJfYWRkZWQnXSA9ICdVdGVudGUgYWdnaXVudG8gJXMgPSAlcyc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdVdGVudGUgY2FuY2VsbGF0byB1aWQ9JXMnOwokbGFuZ1sncHJvcGVydHlmaWx0ZXInXSA9ICdQcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ3ZhbHVlcmVnZXgnXSA9ICdWYWxvcmUgKGVzcHJlc3Npb25lIHJlZ29sYXJlKSc7CiRsYW5nWyd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCddID0gJ0F0dGVuemlvbmU6IFF1ZXN0aSBjYW1waSBpbmZsdWlzY29ubyBzdWxsYSBkaW1lbnNpb25lIGRlaSBjYW1waSBkaSBpbnB1dCBkZWkgZm9ybS4gUG90cmViYmUgbm9uIGVzc2VyZSBjb25zaWdsaWFiaWxlIGRpbWludWlyZSBxdWVzdG8gbnVtZXJvIHN1IHVuIHNpdG8gZXNpc3RlbnRlJzsKJGxhbmdbJ2NvbmZpcm1fc3VibWl0cHJlZnMnXSA9ICdDYW1iaWFyZSBsZSBwcmVmZXJlbnplIGRpIGFtbWluaXN0cmF6aW9uZT8nOwokbGFuZ1snZXJyb3JfZW1haWxhbHJlYWR5dXNlZCddID0gJ0luZGlyaXp6byBlbWFpbCBnaSZhZ3JhdmU7IHVzYXRvJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzJ10gPSAnUGVybWV0dGkgZW1haWwgZHVwbGljYXRlJzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJyhwZXJtZXR0aSBwaSZ1Z3JhdmU7IHV0ZW50aSBjb24gbG8gc3Rlc3NvIGluZGlyaXp6byBlbWFpbCknOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSA9ICdQZXJtZXR0aSByaWNoaWVzdGUgbXVsdGlwbGUgcGVyIHBhc3N3b3JkIGRpbWVudGljYXRlPyc7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSA9ICcocGVybWV0dGUgYWQgdW4gdXRlbnRlIGRpIHJpY2hpZWRlcmUgbCYjMDM5O2F6emVyYW1lbnRvIGRlbGxhIHBhc3N3b3JkIGFuY2hlIHNlIG5vbiBoYSBwb3J0YXRvIGEgdGVybWluZSB1bmEgcmljaGllc3RhIHByZWNlZGVudGUpJzsKJGxhbmdbJ3Byb21wdF9mZXVzZXJzX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gPSAnVXNhIGkgcGVybWVzc2kgc3BlY2lmaWNpIGRlbCBtb2R1bG8gRnJvbnRFbmRVc2VyPyc7CiRsYW5nWydpbmZvX2ZldXNlcnNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSA9ICcoTm9ybWFsbWVudGUgaSBwZXJtZXNzaSBwZXIgRkVVc2VycyBzb25vIGdsaSBzdGVzc2kgZGVnbGkgZXF1aXZhbGVudGkgcGVybWVzc2kgbmVsbCYjMDM5O2FyZWEgQW1taW5pc3RyYXppb25lIGNvbWUgQWdnaXVuZ2kgVXRlbnRlLCBBZ2dpdW5naSBHcnVwcG8sIGV0Yy4gU2Ugc2VsZXppb25hdGUgcXVlc3RhIG9wemlvbmUgY2kgc2FyYW5ubyBwZXJtZXNzaSBzZXBhcmF0aSBwZXIgRkVVc2Vycy4pJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VybmFtZSddID0gJ05vbiBhdmV0ZSBpbnNlcml0byB1biBub21lIHV0ZW50ZSc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdOb24gYXZldGUgaW5zZXJpdG8gdW5hIHBhc3N3b3JkJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dvdXQnXSA9ICdMb2dvdXQgVXRlbnRlIEZyb250RW5kJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dnZWRpbiddID0gJ0xvZ2luIFV0ZW50ZSc7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPHNwYW4gc3R5bGU9JnF1b3Q7Y29sb3I6cmVkJnF1b3Q7PjxiPlVTQVJFIENPTiBDQVVURUxBPC9iPiBxdWFuZG8gbW9kaWZpY2F0ZSBwcm9wcmlldCZhZ3JhdmU7IGVzaXN0ZW50aSBjaGUgc29ubyBhc3NlZ25hdGUgYSBncnVwcGksIHBvdGV0ZSBwb3RlbnppYWxtZW50ZSBjYXVzYXJlIGRhbm5pIGUgYmxvY2NhcmUgdW4gc2l0byBlc2lzdGVudGU8aT4gKHNwZWNpYWxtZW50ZSBzZSByaWR1Y2V0ZSBsYSBsdW5naGV6emEgZGVpIGNhbXBpLCBldGMpPC9pPjwvc3Bhbj4nOwokbGFuZ1snaW5mb19zbXRwdmFsaWRhdGUnXSA9ICdRdWVzdGEgZnVuemlvbmUgbm9uIGZ1bnppb25hIHN1IHdpbmRvd3MnOwokbGFuZ1snbXNnX2RvbnRjcmVhdGV1c2VybmFtZSddID0gJ05vbiBjcmVhdGUgdW5hIHByb3ByaWV0JmFncmF2ZTsgcGVyIHVzZXJuYW1lIG8gcGFzc3dvcmQsIHBvaWNoJmVncmF2ZTsgcXVlc3RlIHByb3ByaWV0JmFncmF2ZTsgc29ubyBnaSZhZ3JhdmU7IGluc2VyaXRlIG5lbCBtb2R1bG8gRnJvbnRFbmRVc2Vycyc7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnRXNwb3J0YSBnbGkgdXRlbnRpIGluIENTVic7CiRsYW5nWydleHBvcnRjc3YnXSA9ICdFc3BvcnRhJzsKJGxhbmdbJ2FkbWluJ10gPSAnQW1taW5pc3RhemlvbmUnOwokbGFuZ1snZWRpdHByb3AnXSA9ICdNb2RpZmljYSBwcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01hc3NpbWEgbHVuZ2hlenphJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDcmVhdG8nOwokbGFuZ1snc29ydGJ5J10gPSAnT3JkaW5hdG8gcGVyJzsKJGxhbmdbJ3NvcnQnXSA9ICdPcmRpbmFtZW50byc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdVdGVudGkgbmVsIGdydXBwby9pIHNlbGV6aW9uYXRvL2knOwokbGFuZ1sndXNlcmxpbWl0J10gPSAnTGltaXRhIHJpc3VsdGF0aSBhJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ05vbiByaWVzY28gYSB0cm92YXJlIHVuIGNhbXBvIGVtYWlsIHBlciBxdWVzdG8gdXRlbnRlLiBDb250YXR0YXJlIGwmIzAzOTthbW1pbmlzdHJhdG9yZSBkZWwgc2lzdGVtYSc7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ0lEL0FsaWFzIGRlbGxhIHBhZ2luYSBwZXIgaWwgbW9kdWxvIGRpIFBhc3N3b3JkIGRpbWVudGljYXRhJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJ10gPSAnSUQvQWxpYXMgZGVsbGEgcGFnaW5hIHBlciBpbCBtb2R1bG8gZGkgTW9kaWZpY2EgY29uZmlndXJhemlvbmknOwokbGFuZ1sncHJvbXB0X2xvZ2luX3BhZ2UnXSA9ICdJRC9BbGlhcyBkZWxsYSBwYWdpbmEgYSBjdWkgYW5kYXJlIGRvcG8gaWwgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdJRC9BbGlhcyBkZWxsYSBwYWdpbmEgYSBjdWkgYW5kYXJlIGRvcG8gaWwgbG9nb3V0IConOwokbGFuZ1snc29ydG9yZGVyJ10gPSAnT3JkaW5hJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ1VuIG51bWVybyBkaSB1dGVudGkgc29ubyBuZWwgbWV6em8gZGVsbCYjMDM5O2F6emVyYW1lbnRvIGRlbGxhIGxvcm8gcGFzc3dvcmQgZGltZW50aWNhdGUuIEluIHF1ZXN0byBtb21lbnRvIHNvbm86JzsKJGxhbmdbJ3JlbW92ZTF3ZWVrJ10gPSAnUmltdW92aSB0dXR0ZSBsZSBlbnRpdCZhZ3JhdmU7IHBpJnVncmF2ZTsgdmVjY2hpZSBkaSB1bmEgc2V0dGltYW5hJzsKJGxhbmdbJ3JlbW92ZTFtb250aCddID0gJ1JpbXVvdmkgdHV0dGUgbGUgZW50aXQmYWdyYXZlOyBwaSZ1Z3JhdmU7IHZlY2NoaWUgZGkgdW4gbWVzZSc7CiRsYW5nWydyZW1vdmVhbGwnXSA9ICdSaW11b3ZpIHR1dHRlIGxlIGVudGl0JmFncmF2ZTsnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpZXRlIHNpY3VyaT8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGNvZGUnXSA9ICdFJiMwMzk7IHN0YXRvIGluIHNlcml0byB1biBjb2RpY2Ugbm9uIHZhbGlkbywgcHJvdmF0ZSBkaSBudW92byc7CiRsYW5nWydlcnJvcl90ZW1wY29kZW5vdGZvdW5kJ10gPSAnTm9uICZlZ3JhdmU7IHBvc3NpYmlsZSB0cm92YXJlIHVuIGNvZGljZSB0ZW1wb3JhbmVvIHBlciBpbCB2b3N0cm8gSUQgdXRlbnRlIG5lbCBkYXRhYmFzZSc7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF92ZXJpZnl0ZW1wbGF0ZSddID0gJ01vZGVsbG8gdXNhdG8gcGVyIHZpc3VhbGl6emFyZSBpbCBtb2R1bG8gZGkgdmVyaWZpY2EnOwokbGFuZ1snZm9yZ290cGFzc3dvcmRfZW1haWx0ZW1wbGF0ZSddID0gJ01vZGVsbG8gdXNhdG8gcGVyIGxhIGVtYWlsIHBlciBwYXNzd29yZCBkaW1lbnRpY2F0YSc7CiRsYW5nWydlcnJvcl9yZXNldGFscmVhZHlzZW50J10gPSAnVm9pIG8gcXVhbGN1bmFsdHJvIGhhIGdpJmFncmF2ZTsgcmljaGllc3RvIGRpIGF6emVyYXJlIGxhIHBhc3N3b3JkIHBlciBxdWVzdG8gYWNjb3VudC4gQ29udHJvbGxhdGUgbGEgdm9zdHJhIGVtYWlsLCBkb3ZyZXN0ZSBhdmVyZSByaWNldnV0byBsJmlncmF2ZTsgdWx0ZXJpb3JpIGlzdHJ1emlvbmkgc3UgY29tZSBhenplcmFyZSBsYSB2b3N0cmEgcGFzc3dvcmQnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0Vycm9yZSBkZWwgZGF0YWJhc2UnOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnQXZldGUgcmljZXZ1dG8gcXVlc3RvIG1lc3NhZ2dpbyBwZXJjaCZlZ3JhdmU7IHF1YWxjdW5vIGhhIHNlZ25hbGF0byBzdWwgbm9zdHJvIHNpdG8gY2hlIGF2ZXRlIHBlcnNvIGxhIHR1YSBwYXNzd29yZC4gU2UgJmVncmF2ZTsgY29ycmV0dG8sIGxlZ2dldGUgbGUgaXN0cnV6aW9uaSBzb3R0b3N0YW50aS4gU2Ugbm9uIHNhcGV0ZSBkaSBjb3NhIHNpIHRyYXR0aSwgcG90ZXRlIHRyYW5xdWlsbGFtZW50ZSBjYW5jZWxsYXJlIHF1ZXN0byBtZXNzYWdnaW8sIGdyYXppZSBwZXIgaWwgdm9zdHJvIHRlbXBvIGRlZGljYXRvY2kuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnQ29kaWNlJzsKJGxhbmdbJ21lc3NhZ2VfY29kZSddID0gJ0lsIHNlZ3VlbnRlIGNvZGljZSAmZWdyYXZlOyBzdGF0byBnZW5lcmF0byBpbiBtYW5pZXJhIGNhc3VhbGUgcGVyIHZlcmlmaWNhcmUgbCYjMDM5O2FjY291bnQgdXRlbnRlLiBRdWFuZG8gZmF0ZSBjbGljayBzdWwgbGluayBzb3R0b3N0YW50ZSB2ZXJyJmFncmF2ZTsgdmlzdWFsaXp6YXRvIHVuIGNhbXBvIGluIGN1aSBpbnNlcmlyZSBxdWVzdG8gY29kaWNlLiBOb3JtYWxtZW50ZSBpbCBjYW1wbyAmZWdyYXZlOyBwcmUtY29tcGlsYXRvIHBlciB2b2ksIG1hIHNlIGNvcyZpZ3JhdmU7IG5vbiBmb3NzZSBpbCBjb2RpY2UgJmVncmF2ZTs6JzsKJGxhbmdbJ3Byb21wdF9saW5rJ10gPSAnU2VndWVuZG8gaWwgbGluayBzZWd1ZW50ZSB2ZXJyZXRlIHBvcnRhdGkgYWwgc2l0byB3ZWIgZG92ZSBpbnNlcmlyZSBpbCBjb2RpY2Ugcmlwb3J0YXRvIHNvcHJhIHBlciBhenplcmFyZSBsYSB2b3N0cmEgcGFzc3dvcmQ6JzsKJGxhbmdbJ2xvc3RwYXNzd29yZF9lbWFpbHN1YmplY3QnXSA9ICdQYXNzd29yZCBwZXJzYSc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ05vbiB0cm92byBpbCBtb2R1bG8gQ01TTWFpbGVyJzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ1VuYSBlbWFpbCAmZWdyYXZlOyBzdGF0YSBzcGVkaXRhIGFsbCYjMDM5O2luZGlyaXp6byAlcyBjb24gbGUgaXN0cnV6aW9uaSBzdSBjb21lIGF6emVyYXJlIGxhIHZvc3RyYSBwYXNzd29yZC4gR3JhemllJzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnQXZldGUgZGltZW50aWNhdG8gbyBwZXJzbyBsYSB2b3N0cmEgUGFzc3dvcmQuIERpZ2l0YXRlIHF1aSBpbCB2b3N0cm8gdXNlcm5hbWUgZSBzZSB2ZXJyJmFncmF2ZTsgdHJvdmF0byB2aSBzcGVkaXJlbW8gdW5hIGVtYWlsIGNvbiBsZSBpc3RydXppb25pIHN1IGNvbWUgYXp6ZXJhcmxhJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBwZXIgUGFzc3dvcmQgZGltZW50aWNhdGEnOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnUHJvcHJpZXQmYWdyYXZlOyAlcyBub24gdHJvdmF0YSc7CiRsYW5nWydwcm9wc2ZvdW5kJ10gPSAnUHJvcHJpZXQmYWdyYXZlOyB0cm92YXRhJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdBZ2dpdW5naSBQcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ2Vycm9yX3JlcXVpcmVkZmllbGQnXSA9ICdVbiBjYW1wbyByaWNoaWVzdG8gKCVzKSBlcmEgdnVvdG8nOwokbGFuZ1snaW5mb19lbXB0eXBhc3N3b3JkZmllbGQnXSA9ICdJbnNlcmlyZSB1bmEgbnVvdmEgcGFzc3dvcmQgcGVyIG1vZGlmaWNhcmUgcXVlbGxhIHByZWNlZGVudGUnOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdTZW1icmEgY2hlIG5vbiBhYmJpYXRlIGVmZmV0dHVhdG8gbCYjMDM5O2FjY2Vzc28nOwokbGFuZ1sndXNlcl9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSc7CiRsYW5nWyd1c2VyX3JlZ2lzdHJhdGlvbiddID0gJ1JlZ2lzdHJhemlvbmUnOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdRdWVzdG8gYWNjb3VudCAmZWdyYXZlOyBzY2FkdXRvJzsKJGxhbmdbJ2Vycm9yX2ltcHJvcGVyZW1haWxmb3JtYXQnXSA9ICdGb3JtYXR0YXppb25lIGRlbGwmIzAzOTtpbmRpcml6em8gZGkgZW1haWwgbm9uIHZhbGlkYSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ0RhdGEgZGkgc2NhZGVuemEgbm9uIHZhbGlkYSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2V0dGluZ3Byb3BlcnR5J10gPSAnRXJyb3JlIG5lbGwmIzAzOTtpbXBvc3RhemlvbmUgZGVsbGEgcHJvcHJpZXQmYWdyYXZlOyAlcyBwZXIgbCYjMDM5O3V0ZW50ZSAkcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZ3JvdXBpZCddID0gJ0lEIGRpIGdydXBwbyAlcyBub24gdmFsaWRvJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnTWFyY2F0b3JlIGRlbCBjYW1wbyBuYXNjb3N0byc7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnQ29sb3JlIGRlbCBjYW1wbyBuYXNjb3N0byc7CiRsYW5nWydoaWRkZW4nXSA9ICdOYXNjb3N0byc7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnVW5hIHByb3ByaWV0JmFncmF2ZTsgY29uIHF1ZWwgbm9tZSAmZWdyYXZlOyBnaSZhZ3JhdmU7IGRlZmluaXRhJzsKJGxhbmdbJ2Vycm9yX25vcHJvcGVydGllcyddID0gJ05lc3N1bmEgcHJvcHJpZXQmYWdyYXZlOyBkZWZpbml0YSc7CiRsYW5nWydlcnJvcl9ub3JlbGF0aW9ucyddID0gJ05lc3N1bmEgcHJvcHJpZXQmYWdyYXZlOyBzZWxlemlvbmF0YSBwZXIgcXVlc3RvIGdydXBwbyc7CiRsYW5nWydncm91cHNmb3VuZCddID0gJ0dydXBwaSB0cm92YXRpJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdFJiMwMzk7IG5lY2Vzc2FyaW8gZXNzZXJlIG1lbWJybyBkaSBhbG1lbm8gdW4gZ3J1cHBvJzsKJGxhbmdbJ3Byb21wdF9yZXF1aXJlb25lZ3JvdXAnXSA9ICdSaWNoaWVkZSBlc3NlcmUgbWVtYnJvIGRpIGFsbWVubyB1biBncnVwcG8nOwokbGFuZ1snYmFjayddID0gJ0luZGlldHJvJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nXSA9ICclcyAmZWdyYXZlOyB1biBjYW1wbyBvYmJsaWdhdG9yaW8nOwokbGFuZ1sncmVxdWlyZWRmaWVsZG1hcmtlciddID0gJ01hcmNhIGkgY2FtcGkgcmljaGllc3RpIGNvbic7CiRsYW5nWydyZXF1aXJlZGZpZWxkY29sb3InXSA9ICdFdmlkZW56aWFyZSBpIGNhbXBpIHJpY2hpZXN0aSBpbic7CiRsYW5nWyduZXh0J10gPSAnUHJvc3NpbW8nOwokbGFuZ1snZXJyb3JfZ3JvdXBleGlzdHMnXSA9ICdVbiBncnVwcG8gY29uIHF1ZWwgbm9tZSAmZWdyYXZlOyBnaSZhZ3JhdmU7IHByZXNlbnRlJzsKJGxhbmdbJ3JlcXVpcmVkJ10gPSAnQ2FtcG8gb2JibGlnYXRvcmlvJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnRmFjb2x0YXRpdm8nOwokbGFuZ1snb2ZmJ10gPSAnT2ZmJzsKJGxhbmdbJ2xlbmd0aCddID0gJ0x1bmdoZXp6YSc7CiRsYW5nWydsZW5ndGhjb21tZW50J10gPSAnPGJyIC8+KGNhcmF0dGVyaSBuZWwgY2FtcG8gZGkgdGVzdG8pJzsKJGxhbmdbJ3NlbG9wdGlvbnMnXSA9ICdPcHppb25pIGRlbGxhIHRlbmRpbmEsIHNlcGFyYXRpIGRhIGZpbmUgbGluZWEnOwokbGFuZ1sneWVzJ10gPSAnUyZpZ3JhdmU7JzsKJGxhbmdbJ3Byb21wdCddID0gJ1Byb21wdCc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwbyc7CiRsYW5nWyd0ZXh0J10gPSAnVGVzdG8nOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydlbWFpbCddID0gJ0luZGlyaXp6byBlbWFpbCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ0FyZWEgZGkgdGVzdG8nOwokbGFuZ1snZHJvcGRvd24nXSA9ICdUZW5kaW5hJzsKJGxhbmdbJ21zZ19jdXJyZW50bHlsb2dnZWRpbmFzJ10gPSAnQmVudmVudXRvJzsKJGxhbmdbJ2xvZ291dCddID0gJ0Rpc2Nvbm5ldHRlcnNpJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ01vZGlmaWNhIGxlIG1pZSBpbXBvc3RhemlvbmknOwokbGFuZ1snZXJyb3JfbG9naW5mYWlsZWQnXSA9ICdMb2dpbiBmYWxsaXRvIC0gbm9tZSB1dGVudGUgbyBwYXNzd29yZCBzYmFnbGlhdGk/JzsKJGxhbmdbJ2xvZ2luJ10gPSAnQWNjZWRpJzsKJGxhbmdbJ3Byb21wdF9zaWduaW5fYnV0dG9uJ10gPSAnRXRpY2hldHRhIGRlbCBwdWxzYW50ZSBkaSBBY2Nlc3NvJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ05vbWUgdXRlbnRlJzsKJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ1Bhc3N3b3JkJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0cmF0aSc7CiRsYW5nWydmb3Jnb3RwdyddID0gJ1Bhc3N3b3JkIGRpbWVudGljYXRhPyc7CiRsYW5nWydkZWZhdWx0cyddID0gJ1ZhbG9yaSBwcmVkZWZpbml0aSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ01vZGVsbG8nOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnSUQgdXRlbnRlIG5vbiB0cm92YXRvJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdRdWVzdG8gdXNlcm5hbWUgKCVzKSAmZWdyYXZlOyBnaSZhZ3JhdmU7IGluIHVzbyc7CiRsYW5nWydwcm9tcHRfc210cHZhbGlkYXRlJ10gPSAnVXNhcmUgU01UUCBwZXIgdmFsaWRhcmUgaW5kaXJpenppIGVtYWlsPyc7CiRsYW5nWydwcm9tcHRfbWlucHdsZW4nXSA9ICdMdW5naGV6emEgbWluaW1hIGRlbGxhIHBhc3N3b3JkJzsKJGxhbmdbJ3Byb21wdF9tYXhwd2xlbiddID0gJ0x1bmdoZXp6YSBtYXNzaW1hIGRlbGxhIHBhc3N3b3JkJzsKJGxhbmdbJ3Byb21wdF9taW51bmxlbiddID0gJ0x1bmdoZXp6YSBtaW5pbWEgZGVsIG5vbWUgdXRlbnRlJzsKJGxhbmdbJ3Byb21wdF9tYXh1bmxlbiddID0gJ0x1bmdoZXp6YSBtYXNzaW1hIGRlbCBub21lIHV0ZW50ZSc7CiRsYW5nWydwcm9tcHRfc2Vzc2lvbnRpbWVvdXQnXSA9ICdUaW1lb3V0IGRlbGxhIHNlc3Npb25lIChzZWNvbmRpKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ1Blcm1ldHRpIHJlZ2lzdHJhemlvbmUgRW1haWwnOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ0dydXBwbyBwcmVkZWZpbml0byBwZXIgbnVvdmkgdXRlbnRpJzsKJGxhbmdbJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJ10gPSAnQ2FtYmlhIGlsIE1vZGVsbG8gZGVsbGUgY29uZmlndXJhemlvbmknOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCddID0gJ0xlIHBhc3N3b3JkIG5vbiBjb2luY2lkb25vJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZSddID0gJ05vbWUgdXRlbnRlIG5vbiB2YWxpZG8nOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkJ10gPSAnUGFzc3dvcmQgbm9uIHZhbGlkYSc7CiRsYW5nWydlZGl0dXNlciddID0gJ01vZGlmaWNhIFV0ZW50ZSc7CiRsYW5nWyd2YWxpZCddID0gJ1ZhbGlkbyc7CiRsYW5nWyd1c2VybmFtZSddID0gJ05vbWUgdXRlbnRlJzsKJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXRvJzsKJGxhbmdbJ2Vycm9yX21lbWJlcmdyb3VwcyddID0gJ1F1ZXN0byB1dGVudGUgbm9uICZlZ3JhdmU7IG1lbWJybyBkaSBuZXNzdW4gZ3J1cHBvJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdOZXNzdW5hIFByb3ByaWV0JmFncmF2ZTsnOwokbGFuZ1sndmFsdWUnXSA9ICdWYWxvcmUnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3J1cHBpJzsKJGxhbmdbJ3Byb3BlcnRpZXMnXSA9ICdQcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ3Byb3BuYW1lJ10gPSAnTm9tZSBkZWxsYSBwcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ1ZhbG9yZSBkZWxsYSBwcm9wcmlldCZhZ3JhdmU7JzsKJGxhbmdbJ2FkZCddID0gJ0FnZ2l1bmdlcmUnOwokbGFuZ1snZWRpdCddID0gJ01vZGlmaWNhJzsKJGxhbmdbJ2V4cGlyZXMnXSA9ICdTY2FkZW56ZSc7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcGVjaWZpY2FyZSB1bmEgZGF0YSc7CiRsYW5nWycxMmhycyddID0gJzEyIE9yZSc7CiRsYW5nWycyNGhycyddID0gJzI0IE9yZSc7CiRsYW5nWyc0OGhycyddID0gJzQ4IE9yZSc7CiRsYW5nWycxd2VlayddID0gJzEgU2V0dGltYW5hJzsKJGxhbmdbJzJ3ZWVrcyddID0gJzIgU2V0dGltYW5lJzsKJGxhbmdbJzFtb250aCddID0gJzEgTWVzZSc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBNZXNpJzsKJGxhbmdbJzZtb250aHMnXSA9ICc2IE1lc2knOwokbGFuZ1snMXllYXInXSA9ICcxIEFubm8nOwokbGFuZ1snbmV2ZXInXSA9ICdNYWknOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnTW9kdWxvIGluc3RhbGxhdG8uPGJyIC8+QWNjZXJ0YXJzaSBkaSBjb25maWd1cmFyZSBpIHBlcm1lc3NpIHBlciAmcXVvdDtNb2RpZnkgRnJvbnRFbmRVc2VyIFByb3BlcnRpZXMgcGVybWlzc2lvbi4mcXVvdDsnOwokbGFuZ1sncGFzc3dvcmQnXSA9ICdQYXNzd29yZCc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ0RpIG51b3ZvJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdVbiBncnVwcG8gY29uIHF1ZWwgbm9tZSAmZWdyYXZlOyBnaSZhZ3JhdmU7IHByZXNlbnRlJzsKJGxhbmdbJ2VkaXRncm91cCddID0gJ01vZGlmaWNhIEdydXBwbyc7CiRsYW5nWydzdWJtaXQnXSA9ICdJbnZpYSc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGxhJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0NhbmNlbGxhJzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnU2lldGUgc2ljdXJpIGNoZSBxdWVzdGUgc2lhbm8gbGUgaW1wb3N0YXppb25pIGNvcnJldHRlIHBlciBxdWVzdG8gZ3J1cHBvP1xuRGlzYXR0aXZhbmRvIHVuYSBwcm9wcmlldCZhZ3JhdmU7IG5vbiBzaSBjYW5jZWxsYW5vIGkgZGF0aSBuZWxsYSB0YWJlbGxhIHByb3ByaWV0JmFncmF2ZTsgcGVyIHF1ZWwgZ3J1cHBvL3V0ZW50ZS4gU2FyYW5ubyBzb2xvIG5vbiBkaXNwb25pYmlsaS4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJ1NpZXRlIHNpY3VyaSBkaSB2b2xlcmUgY2FuY2VsbGFyZSBxdWVzdG8gZ3J1cHBvPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnU2lldGUgc2ljdXJvIGRpIHZvbGVyZSBjYW5jZWxsYXJlIGNvbXBsZXRhbWVudGUgcXVlc3RhIHByb3ByaWV0JmFncmF2ZTs/XG5GYWNlbmRvbG8gc2FyYW5ubyBjYW5jZWxsYXRpIHR1dHRpIGkgZGF0aSBkZWdsaSB1dGVudGkgcGVyIHF1ZXN0YSBwcm9wcmlldCZhZ3JhdmU7Lic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbWV0cmkgaW5zdWZmaWNpZW50aSc7CiRsYW5nWydpZCddID0gJ0lEJzsKJGxhbmdbJ25hbWUnXSA9ICdOb21lJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRnb3J1cCddID0gJ1Byb2JsZW1hIG5lbGwmIzAzOTthZ2dpdW5nZXJlIGlsIGdydXBwbyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnUGFyYW1ldHJpIG5vbiB2YWxpZGknOwokbGFuZ1snYXBwbHlmaWx0ZXInXSA9ICdBcHBsaWNhJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRybyc7CiRsYW5nWyd1c2VyZmlsdGVyJ10gPSAnRXNwcmVzc2lvbmUgcmVnb2xhcmUgZGkgVXNlcm5hbWUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcml6aW9uZSc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdOb21lIGdydXBwbyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3NvIG5lZ2F0byc7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yZSc7CiRsYW5nWydhZGRncm91cCddID0gJ0FnZ2l1bmdlcmUgZ3J1cHBvJzsKJGxhbmdbJ2FkZHVzZXInXSA9ICdBZ2dpdW5nZXJlIHV0ZW50ZSc7CiRsYW5nWyd1c2Vyc2ZvdW5kJ10gPSAnVHJvdmF0aSB1dGVudGkgY2hlIHNvZGRpc2Zhbm8gaWwgY3JpdGVyaW8nOwokbGFuZ1snZ3JvdXAnXSA9ICdHcnVwcG8nOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdTZWxlemlvbmEgR3J1cHBvJzsKJGxhbmdbJ3JlZ2lzdHJhdGlvbl90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGkgcmVnaXN0cmF6aW9uZSc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIGxvZ291dCc7CiRsYW5nWydsb2dpbl90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGkgbG9naW4nOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJlbnplJzsKJGxhbmdbJ3VzZXJzJ10gPSAnVXRlbnRpJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0dlc3Rpb25lIHV0ZW50aSBkaSBGcm9udGVuZCc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1Blcm1ldHRpIGFnbGkgdXRlbnRpIGRpIGVmZmV0dHVhcmUgbCYjMDM5O2FjY2Vzc28gZGFsbCYjMDM5O2ludGVyZmFjY2lhIGRlbCBzaXRvJzsKJGxhbmdbJ2RlZmF1bHRmcm9udHBhZ2UnXSA9ICdQYWdpbmEgZGkgYWNjZXNzbyBwcmVkZWZpbml0YSc7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnVWx0aW1hIHBhZ2luYSBhY2NlZHV0YSc7CiRsYW5nWydvdGhlcnBhZ2UnXSA9ICdBbHRyYSBwYWdpbmE6ICc7CiRsYW5nWydjYXB0Y2hhX3RpdGxlJ10gPSAnSW5zZXJpdGUgaWwgdGVzdG8gdmlzdWFsaXp6YXRvIG5lbGwmIzAzOTtpbW1hZ2luZSc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+MC4wLjEgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCBOUlBUIChOb3QgUmVhZHkgZm9yIFByaW1lIFRpbWUpIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4wIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjEgLSBPY3RvYmVyLCAyMDA1IC0gRml4ZWQgaXNzdWVzIHdpdGggcHJvcGVydGllczwvbGk+DQo8bGk+MC4xLjIgLSBPY3RvYmVyLCAyMDA1IC0gQWRkZWQgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHk8L2xpPg0KPGxpPjxwPjAuMS4zIC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHJlZGlyZWN0IHBhZ2Ugb24gbG9naW4sIGxvZ291dCwgZm9yZ290IHBhc3N3b3JkLCBhbmQgY2hhbmdlIHNldHRpbmdzLCBhbmQgYWRkZWQgdGhlIHJldHVybnRvIGFuZCBmb3JtIHBhcmFtZXRlcnMgdG8gdGhlIHVzZXIgc2lkZSBvZiB0aGluZ3MsIGFsc28gZGlkIGEgY291cGxlIGxmIGxpdHRsZSBjbGVhbnVwcy4gIFRoaXMgdmVyc2lvbiByZXF1aXJlcyB2MC4xMSBhbmQgYWJvdmUgZm9yIGNlcnRhaW4uPC9wPjwvbGk+DQo8bGk+MC4xLjQgLSBOb3ZlbWJlciwgMjAwNSAtIFZlcnkgbWlub3IgY2hhbmdlIHdpdGggcmVzcGVjdCB0byBhIGZvcmdvdHRlbiBhbmQgbm8gbG9uZ2VyIG5lZWRlZCBmdW5jdGlvbiBjYWxsPC9saT4NCjxsaT48cD4wLjEuNSAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFub3RoZXIgdmVyeSBtaW5vciBjaGFuZ2UsIGFkZGVkIHNvbWUgdGV4dCB0byB0aGUgUG9zdEluc3RhbGwgbWVzc2FnZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNiAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5DaGFuZ2VzIHRvIHRoZSBwZXJtaXNzaW9uIG1vZGVsLCBhbmQgbWlub3IgYnVnIGZpeGVzIHRvIHRoZSBwcmVmZXJlbmNlcy4gIEFsc28gc29tZSBwaHA1IGZpeGVzIGJ1dCBJIGFtIHN1cmUgdGhhdCB0aGVyZSBhcmUgbW9yZSBvdXQgdGhlcmUuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjcgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+TWFueSB0aGFua3MgdG8gPGI+a2F0b248L2I+IGZvciBhZGRpbmcgdGhlIHRleHRhcmVhIGFuZCBkcm9wZG93biBwcm9wZXJ0eSB0eXBlcy48L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHByb3BlcnR5IGFkZGluZyB0byBmaXggcHJvYmxlbXMgd2l0aCBzcGFjZXMgaW4gcHJvcGVydHkgbmFtZXMgKHdlIG5vIGxvbmdlciBsZXQgdGhhdCBoYXBwZW4pLjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjAgLSBGZWJydWFyeSwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIGZpbHRlcmluZyBhbmQgcm93IGxpbWl0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbC4gVGhpcyB3aWxsIGhhdmUgYmlnIGJlbmVmaXRzIHRvIHRob3NlIHRoYXQgYXJlIHVzaW5nIHRoaXMgbW9kdWxlIGZvciBoaWdoIHRyYWZpYywgYW5kIGhpZ2ggdXNlciBzaXRlcy48L3A+DQogICAgPHA+QWRkZWQgc29ydGluZyB0byB0aGUgYWRtaW4gcGFuZWw8L3A+DQogICAgPHA+QWRkZWQgbWF4IGxlbmd0aCBhYmlsaXR5IHRvIHRleHQgYW5kIGVtYWlsIGZpZWxkczwvcD4NCiAgICA8cD5GaXhlZCBhIHNtYWxsIHByb2JsZW0gd2l0aCB0aGUgZGVmYXVsdCBncm91cCBub3QgYmVpbmcgY2hlY2tlZCB3aGVuIGFkZGluZyBhIHVzZXI8L3A+DQogICAgPHA+U2F2ZSBmaWx0ZXIgc2V0dGluZ3MgaW4gcHJlZmVyZW5jZXMsIGFuZCB0aGUgYWN0aXZlIHRhYiB0b28uPC9wPg0KICAgIDxwPkRlbGV0ZSB1c2VyIHByb3BlcnRpZXMgd2hlbiBhIHByb3BlcnR5IGlzIGRlbGV0ZWQgPGVtPk5vdGU8L2VtPiwgbm90IHdoZW4gaXQgaXMgZGlzYWJsZWQgaW4gdGhlIGVkaXQgZ3JvdXAgZGlhbG9nPC9wPg0KICAgIDxwPkFkZCBjb25maXJtYXRpb24gbWVzc2FnZSBpbiBlZGl0IGdyb3Vwcy48L3A+DQogICAgPHA+QWRkZWQgYSBjb3VwbGUgbW9yZSBjb25maXJtYXRpb24gbWVzc2FnZXMuPC9wPg0KICAgIDxwPkFkZGVkIENTViBFeHBvcnQgb3B0aW9uPC9wPg0KICAgIDxwPlRvZG8gLSBBZGQgcHJlZmVyZW5jZXMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZGxlbmd0aDwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjEgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIGNoZWNrIGZvciBkdXBsaWNhdGUgZW1haWwgYWRkcmVzc2VzPC9wPg0KICAgIDxwPkZpeCBwcm9ibGVtIHdoZXJlIGV4cGlyeSBkYXRlIHdhcyBiZWluZyBtb2RpZmllZCB3aGVuIGFkbWluIG1vZGlmaWVkIHVzZXIgc2V0dGluZ3M8L3A+DQogICAgPHA+QWRkIGEgY29uZmlybWF0aW9uIG1lc3NhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIHN1Ym1pdCBidXR0b248L3A+DQogICAgPHA+Rml4ZWQgYSBtaW5vciBidWcgd2hlbiBjb3V0aW5nIHRoZSBudW1iZXIgb2YgdXNlcnMgaW4gYSBncm91cDwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgc2l6ZSBvZiB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRzLCBhbmQgbWF4bGVuZ3RoPC9wPg0KICAgIDxwPkFkZGVkIGFkdmFuY2VkIGZpbHRlcmluZyBvbiBwcm9wZXJ0aWVzPC9wPg0KICAgIDxwPkNoYW5nZXMgdG8gbGFiZWxpbmcgaW4gYWRkIG9yIGVkaXQgdXNlcjwvcD4NCiAgICA8cD5GaXhlcyB0byBwcm9ibGVtcyB3aXRoIGlubGluZSBhbmQgbm9uIGlubGluZSBmb3JtcywgdGhlIHBhc3N3b3JkIGlzIG5ldmVyIHNlbnQgb24gdGhlIGdldCBsaW5lPC9wPg0KICAgIDxwPkNoYW5nZWQgdG8gcmVxdWlyZSBDTVMgMC4xMi1iZXRhMiBhdCBhIG1pbmltdW0gKGZvciBzYWZldHkgcHVycG9zZXMpPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMiAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+TW9yZSBmaWVsZCBsZW5ndGggZml4ZXM8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4zIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5FeHBvcnQgdG8gc21hcnR5IGFsbCBvZiB0aGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gdGhleSBhcmUgbG9nZ2VkIGluPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuNCAtIE1heSwgMjAwNjxwPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBleHBvcnQgY29kZTwvcD4NCiAgICA8cD5Db2RlIGNsZWFudXAgKGFscGhhYmV0aXplIGZ1bmN0aW9ucyk8L3A+DQogICAgPHA+TWlub3IgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyAocmVjb21tZW5kZWQgYnkgbmlsczczKSBmb3IgZGVhbGluZyB3aXRoIHRoZSBjaGFuZ2UgcGFzc3dvcmQgc3R1ZmYuPC9wPg0KICAgIDxwPlJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IGZvciBDTVMgMC4xMiwgYW5kIHB1dCBpdCBiYWNrIHRvIDAuMTEuMjwvcD4NCiAgICA8cD5BZGRlZCB0aGUgXCYjMDM5O3NpbGVudFwmIzAzOTsgZm9ybTwvcD4NCiAgICA8cD5DbGVhbmVkIHVwIGRhdGFiYXNlIGFjY2VzcyBzdHVmZiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAoaG9wZWZ1bGx5KTwvcD4NCiAgICA8cD5BZGRlZCBjb3B5cmlnaHQgaW5mbzwvcD4NCiAgICA8cD5BZGRlZCBtYWNyb3MgZm9yIHJlZGlyZWN0byB0byBhIHVzZXIgc3BlY2lmaWMgcGFnZSBvbiBsb2dpbiBvciBsb2dvdXQ8L3A+DQogICAgPHA+VHdlYWtzIHRvIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyB0YWI8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC41IC0gTWF5LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGV4cGlyeSBkYXRlczwvcD4NCiAgICA8cD5TdGFydCBzcGxpdHRpbmcgdGhlIGNvZGUgdXAgaW50byBzZXZlcmFsIGZpbGVzPC9wPg0KPGxpPjxwPjEuMC42IC0gTWF5LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVkIGEgcHJvYmxlbSB3aXRoIGVkaXRpbmcgZHJvcGRvd25zPC9wPg0KPC9saT4NCjxsaT48cD4xLjEuMCAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5FdmVudHM8L3A+DQogICAgPHA+T3B0aW9uYWxseSBkaXNhbGxvdyByZXBlYXRlZCBsb2dpbnM8L3A+DQogICAgPHA+RXhwb3J0IHRoZSB1c2VyIGlkIHRvIHNtYXJ0eTwvcD4NCiAgICA8cD5BZGRlZCBvcHRpb25hbGx5IHskZ3JvdXBcfSBmb3IgdGhlIHBhZ2VzIHRvIGp1bXAgdG8gb24gbG9naW48L3A+DQo8L2xpPg0KPGxpPjxwPjEuMS4xIC0gU2VwdCwgMjAwNjwvcD4NCiAgICA8cD5GaXhlZCBhIGJ1ZyB3aGVuIGEgdXNlciB3YXMgZWRpdGluZyBoaXMgc2V0dGluZ3Mgd2l0aCBcJiMwMzk7YWxsb3cgZHVwbGljYXRlIGVtYWlsc1wmIzAzOTsgd2FzIG9mZjwvcD4NCiAgICA8cD5DaGFuZ2VkIHRoZSBkcm9wZG93biB0YWJsZSB0byAyNTUgY2hhcmFjdGVyczwvcD4NCiAgICA8cD5NaW5vciBjbGVhbnVwczwvcD4NCjwvbGk+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc3MpPC9pPi4gIEl0IGFsbG93cyBjcmVhdGlvbiBvZiB1c2VyIGdyb3VwcywgYW5kIHVzZXIgYWNjb3VudHMgYW5kIGFsbG93cyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0LiAgaXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgQ3VzdG9tQ29udGVudCBtb2R1bGUgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCB0byBkaWZmZXJlbnQgdXNlcnMgb25jZSB0aGV5IGhhdmUgbG9nZ2VkIGluPC9wPg0KPGgzPkZlYXR1cmVzPC9oMz4NCjx1bD4NCjxsaT48cD5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvcD48L2xpPg0KPGxpPjxwPkdyb3VwIFByb3BlcnRpZXMuICBZb3UgY2FuIGFzayBmb3IgZGlmZmVyZW50IGluZm9ybWF0aW9uIGZyb20gbWVtYmVycyBvZiBkaWZmZXJlbnQgZ3JvdXBzPC9wPjwvbGk+DQo8bGk+PHA+Q2FwYWJsZSBvZiBoYW5kbGluZyBodW5kcmVkcyBvZiB1c2VyczwvcD48L2xpPg0KPGxpPjxwPkhhcyBhbiBleHRlbnNpdmUgQVBJIGZvciBhZGRpbmcgZnVuY3Rpb25hbGl0eTwvcD48L2xpPg0KPC91bD4NCjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPg0KPHVsPg0KPGxpPjxwPkFmdGVyIGluc3RhbGxhdGlvbiB5b3UgY2FuIGFjY2VzcyBhZG1pbiBwYW5lbCB0byB0aGUgRnJvbnRFbmRVc2VycyBtb2R1bGUgdW5kZXIgdGhlICZhbXA7cXVvdDtVc2VycyAmYW1wOyBnR3JvdXBzJmFtcDtxdW90OyBtZW51LjwvcD48L2xpPg0KPGxpPg0KPHA+U2Vjb25kbHksIHlvdSBzaG91bGQgZGVmaW5lIHByb3BlcnRpZXMuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIEVtYWlsIGFkZHJlc3MsIGV0Yy48L3A+DQo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgZm9yIHlvdTwvYj4NCjwvbGk+DQo8bGk+PHA+TmV4dCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2V0aGVyIGl0IGlzIGFuIG9wdGlvbmFsLCByZXF1aXJlZCwgb3IgaGlkZGVuIGZpZWxkIDxpPihvZmYgaXMgYWxzbyB2YWxpZCk8L2k+PC9wPjwvbGk+DQo8bGk+PHA+PGI+Tm90ZTo8L2I+IEJlZm9yZSBwcm9jZWVkaW5nLCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBwcmVmZXJlbmNlcyBhcmUgc2V0IGNvcnJlY3RseS48L3A+PC9saT4NCjxsaT48cD5UaGlyZGx5IHlvdSBzaG91bGQgY3JlYXRlIHNvbWUgdXNlcnMuICBBZGRpbmcgdXNlcnMgaXMgYSB0d28gc3RlcCBwcm9jZXNzLiAgV2hlbiBjcmVhdGluZyBhIHVzZXIgeW91IGFyZSBhc2tlZCBmb3IgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgYW5kIGFuIGV4cGlyeSBkYXRlIGZvciB0aGF0IHVzZXIuICBZb3UgdGhlbiBtdXN0IHNlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgdGhhdCB1c2VyIGlzIGEgbWVtYmVyIG9mLCBhbmQgY2xpY2sgXCYjMDM5O05leHRcJiMwMzk7PC9wPg0KPHA+PGVtPk5vdGU6IDwvZW0+VGhpcyBpcyBhIGxhYm91ciBpbnRlbnNpdmUgYW5kIGJvcmluZyBwcm9jZXNzLCBpdCBpcyBlYXNpZXIgdG8gbGV0IHVzZXJzIHJlZ2lzdGVyIHRoZW1zZWx2ZXMsIGFuZCB0aGVuIHlvdSBjYW4gZWRpdCB0aGVpciBncm91cCBpbmZvcm1hdGlvbi4gIGJ1dCBmb3IgdGVzdGluZyBwdXJwb3NlcywgcGxlYXNlIGNyZWF0ZSBhdCBsZXN0IG9uZSB1c2VyPC9wPjwvbGk+DQo8bGk+PHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD48L2xpPg0KPGxpPjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSB7Y21zX21vZHVsZSBtb2R1bGU9RnJvbnRFbmRVc2Vyc30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZTwvcD48L2xpPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgY2FsZ3V5XCYjMDM5O3MNCm1vZHVsZSBob21lcGFnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly90ZWNoY29tLmR5bmRucy5vcmcmcXVvdDs+dGVjaGNvbS5keW5kbnMub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0mcXVvdDtuYW1lJnF1b3Q7PC9saT4NCjxwPkZvcm1zOg0KPHVsPg0KIDxsaT48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm08L2xpPg0KIDxsaT48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybTwvbGk+DQogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPg0KIDxsaT48ZW0+Zm9yZ290cHc8L2VtPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtPC9saT4NCjxsaT48ZW0+c2lsZW50PC9lbT4gPSBEaXNwbGF5IG5vdGhpbmcsIGJ1dCBleHBvcnQgcHJvcGVydGllcyBhbmQgb3RoZXIgc21hcnR5IHZhcmlhYmxlcyBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci4gIElmIG5vIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGVuIG5vIHZhcmlhYmxlcyBhcmUgZXhwb3J0ZWQuPC9saT4NCjwvdWw+DQo8L3A+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiByZXR1cm50bz0mcXVvdDtwYWdlJnF1b3Q7PC9saT4NCjxwPlVzZWQgd2l0aCB0aGUgbG9naW4sIGxvZ291dCwgYW5kIGNoYW5nZXNldHRpbmdzIGZvcm1zLCB0aGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgcGFnZSBpZCBvciBhbGlhcyBvZiBhIHBhZ2UgdG8gcmVkaXJlY3QgdG8sIHdoZW4gdGhlIGZvcm0gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZDwvcD4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5SZXF1aXJlbWVudHM8L2gzPg0KPHA+SW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eSwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhlIENNU01haWxlciBtb2R1bGUgdG8gYmUgcHJldmlvdXNseSBpbnN0YWxsZWQ8L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMDUsIFJvYmVydCBDYW1wYmVsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+JmFtcDtsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmFtcDtndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmcXVvdDs+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4nOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTYwNDA2NTQ5LjUuNC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vc29mdHdhcmVtYXAvdHJvdmVfbGlzdC5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjEyMzI5OTIyMi4xMTYwMTI3NjU3LjExNjQzNjYwMjEuMTE2NDczMTI2Ny4xNyc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnXSA9ICdEZW5uZSBicnVrZXJlbiBlciBhbGxlcmVkZSBpbm5sb2dnZXQnOwokbGFuZ1snZXJyb3JfY2FwdGNoYW1pc21hdGNoJ10gPSAnVGVrc3RlbiBmcmEgYmlsZGV0IGJsZSBpa2tlIHNrcmV2ZXQgcmlrdGlnJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXSA9ICdUaWxsYXRlciBicnVrZXJlICZhcmluZzsgbG9nZ2UgaW5uIG1lciBlbiBlbiBnYW5nJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVVc2VyJ10gPSAnPGgzPk9uRGVsZXRlVXNlcjxoMz4NCjxwPkVuIGhlbmRlbHNlL2V2ZW50IGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXIgc2xldHRlczwvcD4NCjxoND5QYXJhbWV0ZXJlPC9oND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIEJydWtlcm5hdm5ldDwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBCcnVrZXIgSURlbjwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uQ3JlYXRlVXNlciddID0gJzxoMz5PbkNyZWF0ZVVzZXI8aDM+DQo8cD5FbiBoZW5kZWxzZS9ldmVudCBnZW5lcmVydCBuJmFyaW5nO3IgZW4gYnJ1a2VyIG9wcHJldHRlczwvcD4NCjxoND5QYXJhbWV0ZXJlPC9oND4NCjx1bD4NCjxsaT48ZW0+bmFtZTwvZW0+IC0gQnJ1a2VybmF2bmV0PC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIEJydWtlciBJRGVuPC9saT4NCjwvdWw+IA0KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25DcmVhdGVHcm91cCddID0gJzxoMz5PbkNyZWF0ZUdyb3VwPGgzPg0KPHA+RW4gaGVuZGVsc2UvZXZlbnQgZ2VuZXJlcnQgbiZhcmluZztyIGVuIGdydXBwZSBlciBvcHByZXR0ZXQ8L3A+DQo8aDQ+UGFyYW1ldGVyZTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIEdydXBwZW5hdm5ldDwvbGk+DQo8bGk+PGVtPmRlc2NyaXB0aW9uPC9lbT4gLSBHcnVwcGViZXNrcml2ZWxzZW48L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gR3J1cHBlIElEZW48L2xpPg0KPC91bD4gDQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZUdyb3VwJ10gPSAnPGgzPk9uRGVsZXRlR3JvdXA8aDM+DQo8cD5FbiBoZW5kZWxzZS9ldmVudCBnZW5lcmVydCBuJmFyaW5nO3IgZW4gZ3J1cHBlIGVyIHNsZXR0ZXQ8L3A+DQo8aDQ+UGFyYW1ldGVyZTwvaDQ+DQo8dWw+DQo8bGk+PGVtPm5hbWU8L2VtPiAtIEdydXBwZW5hdm5ldDwvbGk+DQo8bGk+PGVtPmlkPC9lbT4gLSBHcnVwcGUgSURlbjwvbGk+DQo8L3VsPiANCic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW4nXSA9ICc8aDM+T25Mb2dpbjxoMz4NCjxwPkVuIGhlbmRlbHNlL2V2ZW50IGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXIgbG9nZ2VyIHNlZyBpbm48L3A+DQo8aDQ+UGFyYW1ldGVyZTwvaDQ+DQo8dWw+DQo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBOYXZuZXQgcCZhcmluZzsgYnJ1a2VyZW4gc29tIGVyIGxvZ2dldCBpbm48L2xpPg0KPGxpPjxlbT5pcDwvZW0+IC0gV2Via2xpZW50ZW5zIElQIGFkcmVzc2UgPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaGVscF9PbkxvZ291dCddID0gJzxwPkVuIGhlbmRlbHNlL2V2ZW50IGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXIgbG9nZ2VyIHV0PC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gTmF2bmV0IHAmYXJpbmc7IGJydWtlcmVuIHNvbSBlciBsb2dnZXQgdXQ8L2xpPg0KPGxpPjxlbT5pZDwvZW0+IC0gQnJ1a2VyIElEZW48L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudF9oZWxwX09uRXhwaXJlVXNlciddID0gJzxwPkVuIGhlbmRlbHNlL2V2ZW50IGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXJzZXNzaW9uIHV0bCZvc2xhc2g7cGVyPC9wPg0KPGg0PlBhcmFtZXRlcmVoND4NCjx1bD4NCjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIE5hdm5ldCBwJmFyaW5nOyBicnVrZXJlbiBzb20gdXRsJm9zbGFzaDtwPC9saT4NCjxsaT48ZW0+aWQ8L2VtPiAtIEJydWtlciBJRGVuIHRpbCBicnVrZXJlbiBzb20gdXRsJm9zbGFzaDtwPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luJ10gPSAnRW4gaGVuZGVsc2Ugc29tIGdlbmVyZXJlcyBuJmFyaW5nO3IgZW4gYnJ1a2VyIGxvZ2dlciBzZWcgaW5uIGkgc3lzdGVtZXQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ291dCddID0gJ0VuIGhlbmRlbHNlIHNvbSBnZW5lcmVyZXMgbiZhcmluZztyIGVuIGJydWtlciBsb2dnZXIgc2VnIHV0IGF2IHN5c3RlbWV0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25FeHBpcmVVc2VyJ10gPSAnRW4gaGVuZGVsc2Ugc29tIGdlbmVyZXJlcyBuJmFyaW5nO3IgZW4gYnJ1a2VyLXNlc3Npb24gaGFyIHV0bCZvc2xhc2g7cHQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZVVzZXInXSA9ICdFbiBoZW5kZWxzZSBnZW5lcmVydCBuJmFyaW5nO3IgZW4gYnJ1a2VyIGVyIG9wcHJldHRldCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlVXNlciddID0gJ0VuIGhlbmRlbHNlIGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXJrb250byBlciBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25DcmVhdGVHcm91cCddID0gJ0VuIGhlbmRlbHNlIGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXJncnVwcGUgZXIgb3BwcmV0dGV0JzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVHcm91cCddID0gJ0VuIGhlbmRlbHNlIGdlbmVyZXJ0IG4mYXJpbmc7ciBlbiBicnVrZXJncnVwcGUgZXIgc2xldHRldCc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnQmFja2VuZCBncnVwcGUnOwokbGFuZ1snaW5mb19zdGFyJ10gPSAnKiBEZSBmJm9zbGFzaDtsZ2VuZGUgbWFjcm9lciBrYW4gYnJ1a2VzIGkgZGlzc2UgZmVsdGVuZTogeyR1c2VybmFtZX0seyRncm91cH0uIE4mYXJpbmc7ciB7JGdyb3VwfSBtYWNyb2VuIGJydWtlcywgdmlsIHN5c3RlbWV0IGJ5dHRlIHV0IG5hdm5ldCBwJmFyaW5nOyBkZW4gZiZvc2xhc2g7cnN0ZSBtZWRsZW1zZ3J1cHBlbiBzb20gYnJ1a2VyZW4gaCZvc2xhc2g7cmVyIHRpbCwgb2cgdmlsIG9tZGlycmlnZXJlIHRpbCBkZW4gc2lkZW4uJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdSZWRpZ2VyIGRldHRlIGZlbHRldCBmb3IgJmFyaW5nOyBlbmRyZSBicnVrZXJlbnMgcGFzc29yZCc7CiRsYW5nWydpbmZvX2FkbWluX3JlcGVhdHBhc3N3b3JkJ10gPSAnUmVkaWdlciBkZXR0ZSBmZWx0ZXQgZm9yICZhcmluZzsgZW5kcmUgYnJ1a2VyZW5zIHBhc3NvcmQnOwokbGFuZ1snZXJyb3JfdXNlcm5hbWVfZXhpc3RzJ10gPSAnRW4gYnJ1a2VyIG1lZCBzYW1tZSBicnVrZXJuYXZuIGZpbm5lcyBhbGxlcmVkZSc7CiRsYW5nWydub2NzdnJlc3VsdHMnXSA9ICdGaWtrIGluZ2VuIHJlc3VsdGF0ZXIgdGlsYmFrZSBmcmEgY3N2IGVrc3BvcnRlbic7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdMZW5nZGVuIHAmYXJpbmc7IGJydWtlcm5hdm5mZWx0ZXQnOwokbGFuZ1sncHJvbXB0X3B3ZmxkbGVuJ10gPSAnTGVuZ2RlbiBwJmFyaW5nOyBwYXNzb3JkZmVsdGV0JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZGxlbmd0aHMnXSA9ICdNaW4vTWFrcyBsZW5nZGUgcCZhcmluZzsgcGFzc29yZGV0IGVyIHVneWxkaWcnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lbGVuZ3RocyddID0gJ01pbi9NYWtzIGxlbmdkZSBwJmFyaW5nOyBicnVrZXJuYXZuIGVyIHVneWxkaWcnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGFkZHJlc3MnXSA9ICdWaSBrdW5uZSBpa2tlIGZpbm5lIGVuIGUtcG9zdGFkcmVzc2UgZm9yIGRlbm5lIGtvbnRvZW4nOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ0JydWtlciBsYWd0IHRpbCAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ0JydWtlciBzbGV0dGV0IHVpZD0lcyc7CiRsYW5nWydwcm9wZXJ0eWZpbHRlciddID0gJ0VnZW5za2FwZXInOwokbGFuZ1sndmFsdWVyZWdleCddID0gJ1ZlcmRpIChyZWd1bGFyIGV4cHJlc3Npb24pJzsKJGxhbmdbJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJ10gPSAnQWR2YXJzZWw6IERpc3NlIGZlbHRlbmUgcCZhcmluZzt2aXJrZXIgc3Qmb3NsYXNoO3JyZWxzZW4gcCZhcmluZzsgaW5udGFzdGluZ3NmZWx0ZW5lIGkgc2tqZW1hZXIuICZBcmluZzsgbWluc2tlIGRpc3NlIHZlcmRpZW5lIHAmYXJpbmc7IGV0IGVrc2lzdGVyZW5kZSBuZXR0c3RlZCBlciBpa2tlICZhcmluZzsgYW5iZWZhbGUnOwokbGFuZ1snY29uZmlybV9zdWJtaXRwcmVmcyddID0gJ0VuZHJlIGFkbWluIGlubnN0aWxsaW5nZXI/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdFLXBvc3RhZHJlc3NlbiBlciBhbGxlcmVkZSBpIGJydWsnOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICdUaWxsYXQgaWRlbnRpc2tlIGUtcG9zdGFkcmVzc2VyJzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJyh0aWxsYXRlIGZsZXJlIGJydWtlcmUgbWVkIHNhbW1lIGUtcG9zdGFkcmVzc2UpJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJ10gPSAnVGlsbGF0IGZsZXJlICZxdW90O2dsZW10IHBhc3NvcmQmcXVvdDsgcCZhcmluZzttaW5uZWxzZXI/JzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJyh0aWxsYXQgYXQgZW4gYnJ1a2VyIGJlciBvbSBudWxsc3RpbGxpbmcgYXYgcGFzc29yZGV0LCBzZWx2IG9tIGRlIGlra2UgaGFyIGJlbnl0dGV0IGRldCBmb3JyaWdlKSc7CiRsYW5nWydwcm9tcHRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJ0Jlbnl0dCBGcm9udC1lbmQgVXNlciBzcGVzaWZpa2UgdGlsbGF0ZWxzZXI/JzsKJGxhbmdbJ2luZm9fZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJyhOb3JtYWx0IGVyLCBGRVVzZXIgdGlsbGF0ZWxzZXIgZGUgc2FtbWUgc29tIHRpbHN2YXJlbmRlIEFkbWluIEFyZWEgdGlsbGF0ZWxzZXIgLSBMZWdnIHRpbCBicnVrZXIsIExlZ2cgdGlsIGdydXBwZSwgb3N2LiBPbSBkdSB2ZWxnZXIgZGV0dGUsIHZpbCBkZXQgdiZhZWxpZztyZSBhZHNraWx0ZSB0aWxsYXRlbHNlciBmb3IgRkVVc2Vycy4pJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VybmFtZSddID0gJ0R1IGxhIGlra2UgaW5uIGJydWtlcm5hdm4nOwokbGFuZ1snZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJ10gPSAnRHUgbGEgaWtrZSBpbm4gcGFzc29yZCc7CiRsYW5nWydmcm9udGVuZHVzZXJfbG9nb3V0J10gPSAnRnJvbnRlbmQgYnJ1a2VyIHV0bG9nZ2luZyc7CiRsYW5nWydmcm9udGVuZHVzZXJfbG9nZ2VkaW4nXSA9ICdGcm9udGVuZCBicnVrZXIgaW5ubG9nZ2luZyc7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPGZvbnQgY29sb3I9JnF1b3Q7cmVkJnF1b3Q7PjxiPlYmQUVsaWc7UiBWQVJTT008L2I+IG4mYXJpbmc7ciBla3Npc3RlcmVuZGUgZWdlbnNrYXBlciBzb20gZXIgdGlsZWduZXQgZ3J1cHBlciBmb3JhbmRyZXMsIGR1IGthbiBrb21tZSBpIHNrYWRlIGZvciAmYXJpbmc7ICZvc2xhc2g7ZGVsZWdnZSBub2Ugb2cgZGVybWVkIHdlYnN0ZWRldCA8aT4oc3Blc2llbGx0IGh2aXMgZHUgbWluc2tlciBmZWx0bGVuZ2RlciwgZXRjKTwvaT48L2ZvbnQ+JzsKJGxhbmdbJ2luZm9fc210cHZhbGlkYXRlJ10gPSAnRGVubmUgZnVua3Nqb25lbiB2aXJrZXIgaWtrZSBpIFdpbmRvd3MnOwokbGFuZ1snbXNnX2RvbnRjcmVhdGV1c2VybmFtZSddID0gJ0lra2Ugb3BwcmV0dCBlZ2Vuc2thcGVyIGZvciBicnVrZXJuYXZuIGVsbGVyIHBhc3NvcmQgZGEgZGlzc2UgZWdlbnNrYXBlbmUgZXIgaW5uZWJ5Z2dldCBpIHNlbHZlIEZyb250RW5kVXNlciBtb2R1bGVuLic7CiRsYW5nWydwcm9tcHRfZXhwb3J0Y3N2J10gPSAnRWtzcG9ydGVyIGJydWtlcmUgdGlsIENTVic7CiRsYW5nWydleHBvcnRjc3YnXSA9ICdFa3Nwb3J0ZXInOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbiAnOwokbGFuZ1snZWRpdHByb3AnXSA9ICdSZWRpZ2VyIGVnZW5za2FwJzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01ha3MgbGVuZ2RlJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdPcHByZXR0ZXQnOwokbGFuZ1snc29ydGJ5J10gPSAnU29ydGVyIGV0dGVyJzsKJGxhbmdbJ3NvcnQnXSA9ICdTb3J0ZXJlcic7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdCcnVrZXJlIGkgdmFsZ3QoZSkgZ3J1cHBlKHIpJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0JlZ3JlbnMgcmVzdWx0YXRlbmUgdGlsJzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ0t1bm5lIGlra2UgZmlubmUgZXQgZS1wb3N0ZmVsdCBmb3IgZGVubmUgYnJ1a2VyZW4uIER1IG0mYXJpbmc7IGthbnNramUga29udGFrdGUgc3lzdGVtYWRtaW5pc3RyYXRvcmVuJzsKJGxhbmdbJ3Byb21wdF9mb3Jnb3Rwd19wYWdlJ10gPSAnU2lkZUlEL0FsaWFzIGZvciBza2plbWFldCBnbGVtdCBwYXNzb3JkJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5nc19wYWdlJ10gPSAnU2lkZUlEL0FsaWFzIGZvciBza2plbWFldCBlbmRyZSBpbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9wYWdlJ10gPSAnU2lkZUlEL0FsaWFzIGRldCBza2FsIGhvcHBlcyB0aWwgZXR0ZXIgbG9nZ2lubiAqJzsKJGxhbmdbJ3Byb21wdF9sb2dvdXRfcGFnZSddID0gJ1NpZGVJRC9BbGlhcyBkZXQgc2thbCBob3BwZXMgdGlsIGV0dGVyIGxvZ291dCAqJzsKJGxhbmdbJ3NvcnRvcmRlciddID0gJ1NvcnRlcmluZ3NyZWtrZWYmb3NsYXNoO2xnZSc7CiRsYW5nWydwcm9tcHRfbnVtcmVzZXRyZWNvcmQnXSA9ICdCcnVrZXJlIGhvbGRlciBwJmFyaW5nOyAmYXJpbmc7IGZvcmFuZHJlIHBhc3NvcmRlbmUgc2luZS4gTiZhcmluZzsgZXIgZGV0dGUgYW50YWxsZXQ6ICc7CiRsYW5nWydyZW1vdmUxd2VlayddID0gJ0ZqZXJuIGFsbGUgaW5ubGVnZyBzb20gZXIgbWVyIGVubiBlbiB1a2UgZ2FtbGUnOwokbGFuZ1sncmVtb3ZlMW1vbnRoJ10gPSAnRmplcm4gYWxsZSBpbm5sZWdnIHNvbSBlciBtZXIgZW5uIGVuIG0mYXJpbmc7bmVkIGdhbWxlJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ0ZqZXJuIGFsbGUgaW5ubGVnZyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyPyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ0VuIHVneWxkaWcga29kZSBlciBsYWd0IGlubiwgcHImb3NsYXNoO3YgaWdqZW4uJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdFbiBtaWRsZXJ0aWRpZyBrb2RlIGZvciBkaW4gYnJ1a2VySUQgYmxlIGlra2UgZnVubmV0IGkgZGF0YWJhc2VuJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJ10gPSAnTWFsIGZvciAmYXJpbmc7IHZpc2Ugc2tqZW1hZXQgZm9yIHZlcmlmaWthc2pvbic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF9lbWFpbHRlbXBsYXRlJ10gPSAnTWFsIGZvciBnbGVtdCBwYXNzb3JkIGUtcG9zdCc7CiRsYW5nWydlcnJvcl9yZXNldGFscmVhZHlzZW50J10gPSAnRW5kcmluZyBhdiBwYXNzb3JkIGZvciBkZW5uZSBrb250b2VuIGVyIGFsbGVyZWRlIHNhdHQgaSBnYW5nIGF2IGRlZyBlbGxlciBub2VuIGFubmVuLiBTamVrayBlLXBvc3RlbiBkaW4sIGR1IGthbiBoYSBtb3R0YXR0IHZpZGVyZSBpbnN0cnVrc2pvbmVyIG9tIGh2b3JkYW4gZGV0dGUgc2thbCBnamVubm9tZiZvc2xhc2g7cmVzLiAnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFiYXNlIGZlaWwnOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnRHUgZiZhcmluZztyIGRlbm5lIG1lbGRpbmdlbiBmb3JkaSBub2VuIGhhciBmb3J0YWx0IHYmYXJpbmc7ciBuZXR0c2lkZSBhdCBkdSBoYXIgbWlzdGV0IGRpdHQgcGFzc29yZC4gIE9tIGRldHRlIGVyIGtvcnJla3QsIGxlcyBpbnN0cnVrc2pvbmVuZSBuZWRlbmZvci4gIE9tIGR1IGlra2Ugc2tqJm9zbGFzaDtubmVyIGh2YSBkZXR0ZSBrYW4gdiZhZWxpZztyZSwgcyZhcmluZzsga2FuIGR1IHRyeWd0IHNsZXR0ZSBkZW5uZSBtZWxkaW5nZW4sIG9nIHZpIHRha2tlciBmb3IgZGluIG9wcG1lcmtzb21oZXQuJzsKJGxhbmdbJ3Byb21wdF9jb2RlJ10gPSAnS29kZSc7CiRsYW5nWydtZXNzYWdlX2NvZGUnXSA9ICdEZW4gZiZvc2xhc2g7bGdlbmRlIGtvZGUgaGFyIGJsaXR0IGdlbmVyZXJ0IHRpbGZlbGRpZyBmb3IgJmFyaW5nOyBnamVua2plbm5lIGJydWtlcmtvbnRvZW4uICBuJmFyaW5nO3IgZHUga2xpa2tlciBsaW5rZW4gbmVkZW5mb3IgdmlsIGR1IGYmYXJpbmc7IG9wcCBldCBmZWx0IGZvciAmYXJpbmc7IHNrcml2ZSBpbm4gZGVubmUga29kZW4uICBOb3JtYWwgZXIgZmVsdGV0IGZvcmgmYXJpbmc7bmRzdXRmeWx0IGZvciBkZWcsIG1lbiBpIHRpbGZlbGxlIGRldCBpa2tlIGVyIC0gcyZhcmluZzsgZXIga29kZW46JzsKJGxhbmdbJ3Byb21wdF9saW5rJ10gPSAnSHZpcyBkdSBrbGlra2VyIHAmYXJpbmc7IGxpbmtlbiBzb20gZiZvc2xhc2g7bGdlciB2aWwgZHUgYmxpIGYmb3NsYXNoO3J0IHRpbCBlbiBuZXR0c2lkZSBodm9yIGR1IGthbiBsZWdnZSBpbm4gdmVkbGFndGUga29kZSBvZyBsZWdnZSBpbm4gbnl0dCBwYXNzb3JkLic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnR2xlbXQgcGFzc29yZCc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0t1bm5lIGlra2UgZmlubmUgQ01TTWFpbGVyIG1vZHVsZW4nOwokbGFuZ1snaW5mb19mb3Jnb3Rwd21lc3NhZ2VzZW50J10gPSAnRW4gZS1wb3N0IGVyIGJsaXR0IHNlbmR0IHRpbCAlcyBtZWQgaW5zdHJ1a3Nqb25lciBvbSBodm9yZGFuIHBhc3NvcmRldCBrYW4gbGVnZ2VzIGlubiBwJmFyaW5nOyBueS4gVGFray4nOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdTJmFyaW5nOyBkdSBoYXIgZ2xlbXQgZWxsZXIgbWlzdGV0IHBhc3NvcmRldCBkaXR0LiBWZWwsIGxlZ2cgaW5uIGJydWtlcm5hdm5ldCBkaXR0IGhlciBzJmFyaW5nOyBza2FsIHZpIHNlbmRlIGRlZyBlbiBlLXBvc3Qgb20gaHZvcmRhbiBkdSBrYW4gbGVnZ2UgaW5uIGV0IG55dHQuJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnTWFsIGZvciBnbGVtdCBwYXNzb3JkJzsKJGxhbmdbJ2Vycm9yX3Byb3Bub3Rmb3VuZCddID0gJ0VnZW5za2FwICVzIGlra2UgZnVubmV0JzsKJGxhbmdbJ3Byb3BzZm91bmQnXSA9ICdFZ2Vuc2thcCBmdW5uZXQnOwokbGFuZ1snYWRkcHJvcCddID0gJ0xlZ2cgdGlsIGVnZW5za2FwJzsKJGxhbmdbJ2Vycm9yX3JlcXVpcmVkZmllbGQnXSA9ICdFdCBvYmxpZ2F0b3Jpc2sgZmVsdCAoJXMpIHZhciB0b210JzsKJGxhbmdbJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJ10gPSAnRXZ0LiBueXR0IHBhc3NvcmQgaGVyIGZvciAmYXJpbmc7IGVuZHJlIGRldCBla3Npc3RlcmVuZGUnOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdEZXQgc2VyIGlra2UgdXQgdGlsIGF0IGR1IGVyIGlubmxvZ2dldCc7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnQnJ1a2VyZGF0YSc7CiRsYW5nWyd1c2VyX3JlZ2lzdHJhdGlvbiddID0gJ1JlZ2lzdHJlcmluZyc7CiRsYW5nWydlcnJvcl9hY2NvdW50ZXhwaXJlZCddID0gJ0tvbnRvZW4gaGFyIGwmb3NsYXNoO3B0IHV0JzsKJGxhbmdbJ2Vycm9yX2ltcHJvcGVyZW1haWxmb3JtYXQnXSA9ICdGZWlsIHAmYXJpbmc7IGZvcm1hdGV0IHRpbCBlLXBvc3RhZHJlc3Nlbic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZXhwaXJ5ZGF0ZSddID0gJ1VneWxkaWcgdXRsJm9zbGFzaDtwc2RhdG8nOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdwcm9wZXJ0eSddID0gJ0ZlaWwgdmVkIHNldHRpbmcgYXYgZWdlbnNrYXAgJXMgZm9yIGJydWtlciAkcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZ3JvdXBpZCddID0gJ1VneWxkaWcgZ3J1cHBlSUQgJXMnOwokbGFuZ1snaGlkZGVuZmllbGRtYXJrZXInXSA9ICdNZXJrZSBmb3Igc2tqdWx0IGZlbHQnOwokbGFuZ1snaGlkZGVuZmllbGRjb2xvciddID0gJ0ZhcmdlIGZvciBza2p1bHQgZmVsdCc7CiRsYW5nWydoaWRkZW4nXSA9ICdTa2p1bHQnOwokbGFuZ1snZXJyb3JfZHVwbGljYXRlbmFtZSddID0gJ0VuIGVnZW5za2FwIG1lZCBkZXQgbmF2bmV0IGVyIGFsbGVyZWRlIGRlZmluZXJ0JzsKJGxhbmdbJ2Vycm9yX25vcHJvcGVydGllcyddID0gJ0luZ2VuIGVnZW5za2FwIGRlZmluZXJ0JzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnSW5nZW4gZWdlbnNrYXBlciBibGUgdmFsZ3QgZm9yIGRlbm5lIGdydXBwZW4nOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcnVwcGVyIGZ1bm5ldCc7CiRsYW5nWydlcnJvcl9vbmVncm91cHJlcXVpcmVkJ10gPSAnRGV0IG0mYXJpbmc7IHRpbGRlbGVzIG1lZGxlbXNrYXAgZm9yIG1pbnN0IGVuIGdydXBwZSAnOwokbGFuZ1sncHJvbXB0X3JlcXVpcmVvbmVncm91cCddID0gJ0tyZXYgbWVkbGVtc2thcCBmb3IgbWluc3QgZW4gZ3J1cHBlJzsKJGxhbmdbJ2JhY2snXSA9ICdUaWxiYWtlJzsKJGxhbmdbJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nXSA9ICclcyBmZWx0ZXQgbSZhcmluZzsgZnlsbGVzIHV0JzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRtYXJrZXInXSA9ICdNZXJrIG9ibGlnYXRvcmlza2UgZmVsdCBtZWQgJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRjb2xvciddID0gJ1V0aGV2IG9ibGlnYXRvcmlza2UgZmVsdCBtZWQnOwokbGFuZ1snbmV4dCddID0gJ05lc3RlJzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnRW4gZ3J1cHBlIG1lZCBkZXQgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdPYmxpZ2F0b3Jpc2sgZmVsdCc7CiRsYW5nWydvcHRpb25hbCddID0gJ1ZhbGdmcml0dCc7CiRsYW5nWydvZmYnXSA9ICdBdic7CiRsYW5nWydsZW5ndGgnXSA9ICdMZW5nZGUnOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4oa2FyYWt0ZXJlciBpIHRla3N0IHNvbSBsZWdnZXMgaW5uKSc7CiRsYW5nWydzZWxvcHRpb25zJ10gPSAnTmVkdHJla2tzdmFsZywgc2VwYXJlcnQgbWVkIGxpbmplc2tpZnQnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1sncHJvbXB0J10gPSAnU3Amb3NsYXNoO3InOwokbGFuZ1sndHlwZSddID0gJ1Nrcml2JzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydjaGVja2JveCddID0gJ0F2a3J5c3NuaW5nc2Jva3MnOwokbGFuZ1snZW1haWwnXSA9ICdFLXBvc3QgYWRyZXNzZSc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0b21yJmFyaW5nO2RlJzsKJGxhbmdbJ2Ryb3Bkb3duJ10gPSAnTmVkdHJla2tzbWVueSc7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ1ZlbGtvbW1lbic7CiRsYW5nWydsb2dvdXQnXSA9ICdMb2dnIHV0JzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ0ZvcmFuZHJlIG1pbmUgaW5uc3RpbGxpbmdlcic7CiRsYW5nWydlcnJvcl9sb2dpbmZhaWxlZCddID0gJ0lubmxvZ2dpbmcgbWlzc2x5a2tldCAtIHVneWxkaWcgYnJ1a2VybmF2biBlbGxlciBwYXNzb3JkPyc7CiRsYW5nWydsb2dpbiddID0gJ0xvZ2cgaW5uJzsKJGxhbmdbJ3Byb21wdF9zaWduaW5fYnV0dG9uJ10gPSAnTG9nZyBpbm4ga25hcHAgZXRpa2V0dCc7CiRsYW5nWydwcm9tcHRfdXNlcm5hbWUnXSA9ICdCcnVrZXJuYXZuJzsKJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ1Bhc3NvcmQnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdSZWdpc3RyZXInOwokbGFuZ1snZm9yZ290cHcnXSA9ICdHbGVtdCBwYXNzb3JkZXQ/JzsKJGxhbmdbJ2RlZmF1bHRzJ10gPSAnU3RhbmRhcmQnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWwnOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnQnJ1a2VyLUlEIGlra2UgZnVubmV0JzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdEZXQgYnJ1a2VybmF2bmV0ICglcykgZXIgYWxsZXJlZGUgaSBicnVrJzsKJGxhbmdbJ3Byb21wdF9zbXRwdmFsaWRhdGUnXSA9ICdCcnVrIFNNVFAgZm9yICZhcmluZzsga29udHJvbGxlcmUgZS1wb3N0YWRyZXNzZXI/JzsKJGxhbmdbJ3Byb21wdF9taW5wd2xlbiddID0gJ01pbmltdW0gbGVuZ2RlIHAmYXJpbmc7IHBhc3NvcmQnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWFrc2ltdW0gbGVuZ2RlIHAmYXJpbmc7IHBhc3NvcmQnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTWluaW11bSBMZW5nZGUgcCZhcmluZzsgYnJ1a2VybmF2bic7CiRsYW5nWydwcm9tcHRfbWF4dW5sZW4nXSA9ICdNYWtzaW11bSBsZW5nZGUgcCZhcmluZzsgYnJ1a2VybmF2bic7CiRsYW5nWydwcm9tcHRfc2Vzc2lvbnRpbWVvdXQnXSA9ICdTZXNzaW9uIFRpbWVvdXQgKHNla3VuZGVyKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ1RpbGxhdCBlLXBvc3RyZWdpc3RyZXJpbmcnOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ1N0YW5kYXJkZ3J1cHBlIGZvciBueWUgYnJ1a2VyZSc7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJ01hbCBmb3IgZm9yYW5kcmUgYnJ1a2VyZGF0YSc7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnUGFzc29yZGVuZSBlciBpa2tlIGxpa2UnOwokbGFuZ1snZXJyb3JfaW52YWxpZHVzZXJuYW1lJ10gPSAnVWd5bGRpZyBicnVrZXJuYXZuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZCddID0gJ1VneWxkaWcgcGFzc29yZCc7CiRsYW5nWydlZGl0dXNlciddID0gJ1JlZGlnZXIgYnJ1a2VyJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnR3lsZGlnJzsKJGxhbmdbJ3VzZXJuYW1lJ10gPSAnQnJ1a2VybmF2bic7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMgJzsKJGxhbmdbJ2Vycm9yX21lbWJlcmdyb3VwcyddID0gJ0Rlbm5lIGJydWtlcmVuIGVyIGlra2UgbWVkbGVtIGF2IG5vZW4gZ3J1cHBlJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdJbmdlbiBlZ2Vuc2thcGVyJzsKJGxhbmdbJ3ZhbHVlJ10gPSAnVmVyZGknOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3J1cHBlcic7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnRWdlbnNrYXBlcic7CiRsYW5nWydwcm9wbmFtZSddID0gJ0VnZW5za2FwZW5zIE5hdm4gJzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ0VnZW5za2FwZW5zIHZlcmRpJzsKJGxhbmdbJ2FkZCddID0gJ0xlZ2cgdGlsJzsKJGxhbmdbJ2VkaXQnXSA9ICdSZWRpZ2VyJzsKJGxhbmdbJ2V4cGlyZXMnXSA9ICdVdGwmb3NsYXNoO3Blcic7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcGVzaWZpc2VyIGRhdG8nOwokbGFuZ1snMTJocnMnXSA9ICcxMiB0aW1lcic7CiRsYW5nWycyNGhycyddID0gJzI0IHRpbWVyJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggdGltZXInOwokbGFuZ1snMXdlZWsnXSA9ICcxIHVrZSc7CiRsYW5nWycyd2Vla3MnXSA9ICcyIFVrZXInOwokbGFuZ1snMW1vbnRoJ10gPSAnMSBNJmFyaW5nO25lZCc7CiRsYW5nWyczbW9udGhzJ10gPSAnMyBNJmFyaW5nO25lZGVyJzsKJGxhbmdbJzZtb250aHMnXSA9ICc2IE0mYXJpbmc7bmVkZXInOwokbGFuZ1snMXllYXInXSA9ICcxICZBcmluZztyJzsKJGxhbmdbJ25ldmVyJ10gPSAnQWxkcmknOwokbGFuZ1sncG9zdGluc3RhbGxtZXNzYWdlJ10gPSAnVmVsbHlra2V0IGluc3RhbGxhc2pvbiBhdiBtb2R1bGVuLjxici8+SHVzayAmYXJpbmc7IGFrdGl2aXNlcmUgICZxdW90O01vZGlmeSBGcm9udEVuZFVzZXIgUHJvcGVydGllcyBwZXJtaXNzaW9uLiZxdW90Oyc7CiRsYW5nWydwYXNzd29yZCddID0gJ1Bhc3NvcmQnOwokbGFuZ1sncmVwZWF0cGFzc3dvcmQnXSA9ICdJZ2plbic7CiRsYW5nWydlcnJvcl9ncm91cG5hbWVfZXhpc3RzJ10gPSAnRW4gZ3J1cHBlIG1lZCBkZXQgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUnOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnUmVkaWdlciBncnVwcGUnOwokbGFuZ1snc3VibWl0J10gPSAnU2VuZCc7CiRsYW5nWydjYW5jZWwnXSA9ICdBdmJyeXQnOwokbGFuZ1snZGVsZXRlJ10gPSAnU2xldHQnOwokbGFuZ1snY29uZmlybV9lZGl0Z3JvdXAnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZGV0dGUgZXIga29ycmVrdGUgdmFsZyBmb3IgZGVubmUgZ3J1cHBlbj9cbiZBcmluZzsgc2wmYXJpbmc7IGVuIGVnZW5za2FwIGF2L29mZiB2aWwgaWtrZSBzbGV0dGUgbm9lbiBpbm5sZWdnIGkgZWdlbnNrYXAtdGFiZWxsZW4gZm9yIGRlbm5lIGdydXBwZW4vYnJ1a2VyZW4uICBFZ2Vuc2thcGVuIHZpbCBoZWxsZXIgYmxpIHV0aWxnamVuZ2VsaWcuJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlZ3JvdXAnXSA9ICdFciBkdSBzaWtrZXIgcCZhcmluZzsgYXQgZHUgdmlsIHNsZXR0ZSBkZW5uZSBncnVwcGVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGF0IGR1IHZpbCBzbGV0dGUgZGVubmUgZWdlbnNrYXBlbiBoZWx0P1xuJkFyaW5nOyBnaiZvc2xhc2g7cmUgZGV0dGUgdmlsIG9ncyZhcmluZzsgc2xldHRlIGVuaHZlciBicnVrZXJzIGlubmxlZ2cgaSBkZW5uZSBlZ2Vuc2thcGVuLic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdVZnVsbHN0ZW5kaWdlIHBhcmFtZXRyZSc7CiRsYW5nWydpZCddID0gJ0lkICc7CiRsYW5nWyduYW1lJ10gPSAnTmF2bic7CiRsYW5nWydlcnJvcl9jYW50YWRkZ29ydXAnXSA9ICdQcm9ibGVtIG1lZCAmYXJpbmc7IGxlZ2dlIHRpbCBncnVwcGUnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhcmFtcyddID0gJ1VneWxkaWdlIHBhcmFtZXRlcmUnOwokbGFuZ1snYXBwbHlmaWx0ZXInXSA9ICdCcnVrJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyZXInOwokbGFuZ1sndXNlcmZpbHRlciddID0gJ0JydWtlcm5hdm4gdmFubGlnIHV0dHJ5a2snOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdCZXNrcml2ZWxzZSc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdHcnVwcGVuYXZuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FkZ2FuZyBuZWt0ZXQnOwokbGFuZ1snZXJyb3InXSA9ICdGZWlsJzsKJGxhbmdbJ2FkZGdyb3VwJ10gPSAnTGVnZyB0aWwgZ3J1cHBlJzsKJGxhbmdbJ2FkZHVzZXInXSA9ICdMZWdnIHRpbCBicnVrZXInOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ0JydWtlcmUgc29tIHN0ZW1tZXIgbWVkIGtyaXRlcmllbmUnOwokbGFuZ1snZ3JvdXAnXSA9ICdHcnVwcGUnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdWZWxnIGdydXBwZSc7CiRsYW5nWydyZWdpc3RyYXRpb25fdGVtcGxhdGUnXSA9ICdNYWwgZm9yIHJlZ2lzdHJlcmluZyc7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdNYWwgZm9yIHV0bG9nZ2luZyc7CiRsYW5nWydsb2dpbl90ZW1wbGF0ZSddID0gJ01hbCBmb3IgaW5ubG9nZ2luZyc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmFuc2VyJzsKJGxhbmdbJ3VzZXJzJ10gPSAnQnJ1a2VyZSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdGcm9udGVuZCBVc2VyIEFkbWluaXN0cmFzam9uJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQWRtaW5pc3RyZXIgRnJvbnRlbmQgVXNlcnMnOwokbGFuZ1snZGVmYXVsdGZyb250cGFnZSddID0gJ1N0YW5kYXJkIGZvcnNpZGUnOwokbGFuZ1snbGFzdGFjY2Vzc2VkcGFnZSddID0gJ1Npc3RlIGxlc3RlIHNpZGUnOwokbGFuZ1snb3RoZXJwYWdlJ10gPSAnQW5uZW4gc2lkZTogJzsKJGxhbmdbJ2NhcHRjaGFfdGl0bGUnXSA9ICdPcHBnaSB0ZWtzdGVuIGZyYSBiaWxkZXQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPjAuMC4xIC0gT2N0b2JlciwgMjAwNSAtIEluaXRpYWwgTlJQVCAoTm90IFJlYWR5IGZvciBQcmltZSBUaW1lKSByZWxlYXNlPC9saT4NCjxsaT4wLjEuMCAtIE9jdG9iZXIsIDIwMDUgLSBJbml0aWFsIHJlbGVhc2U8L2xpPg0KPGxpPjAuMS4xIC0gT2N0b2JlciwgMjAwNSAtIEZpeGVkIGlzc3VlcyB3aXRoIHByb3BlcnRpZXM8L2xpPg0KPGxpPjAuMS4yIC0gT2N0b2JlciwgMjAwNSAtIEFkZGVkIGZvcmdvdHRlbiBwYXNzd29yZCBmdW5jdGlvbmFsaXR5PC9saT4NCjxsaT48cD4wLjEuMyAtIE5vdmVtYmVyLCAyMDA1PC9wPg0KICAgIDxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSByZWRpcmVjdCBwYWdlIG9uIGxvZ2luLCBsb2dvdXQsIGZvcmdvdCBwYXNzd29yZCwgYW5kIGNoYW5nZSBzZXR0aW5ncywgYW5kIGFkZGVkIHRoZSByZXR1cm50byBhbmQgZm9ybSBwYXJhbWV0ZXJzIHRvIHRoZSB1c2VyIHNpZGUgb2YgdGhpbmdzLCBhbHNvIGRpZCBhIGNvdXBsZSBsZiBsaXR0bGUgY2xlYW51cHMuICBUaGlzIHZlcnNpb24gcmVxdWlyZXMgdjAuMTEgYW5kIGFib3ZlIGZvciBjZXJ0YWluLjwvcD48L2xpPg0KPGxpPjAuMS40IC0gTm92ZW1iZXIsIDIwMDUgLSBWZXJ5IG1pbm9yIGNoYW5nZSB3aXRoIHJlc3BlY3QgdG8gYSBmb3Jnb3R0ZW4gYW5kIG5vIGxvbmdlciBuZWVkZWQgZnVuY3Rpb24gY2FsbDwvbGk+DQo8bGk+PHA+MC4xLjUgLSBOb3ZlbWJlciwgMjAwNTwvcD4NCiAgICA8cD5Bbm90aGVyIHZlcnkgbWlub3IgY2hhbmdlLCBhZGRlZCBzb21lIHRleHQgdG8gdGhlIFBvc3RJbnN0YWxsIG1lc3NhZ2UuPC9wPjwvbGk+DQo8bGk+PHA+MC4xLjYgLSBKYW51YXJ5LCAyMDA2PHA+DQogICAgPHA+Q2hhbmdlcyB0byB0aGUgcGVybWlzc2lvbiBtb2RlbCwgYW5kIG1pbm9yIGJ1ZyBmaXhlcyB0byB0aGUgcHJlZmVyZW5jZXMuICBBbHNvIHNvbWUgcGhwNSBmaXhlcyBidXQgSSBhbSBzdXJlIHRoYXQgdGhlcmUgYXJlIG1vcmUgb3V0IHRoZXJlLjwvcD48L2xpPg0KPGxpPjxwPjAuMS43IC0gSmFudWFyeSwgMjAwNjxwPg0KICAgIDxwPk1hbnkgdGhhbmtzIHRvIDxiPmthdG9uPC9iPiBmb3IgYWRkaW5nIHRoZSB0ZXh0YXJlYSBhbmQgZHJvcGRvd24gcHJvcGVydHkgdHlwZXMuPC9wPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBwcm9wZXJ0eSBhZGRpbmcgdG8gZml4IHByb2JsZW1zIHdpdGggc3BhY2VzIGluIHByb3BlcnR5IG5hbWVzICh3ZSBubyBsb25nZXIgbGV0IHRoYXQgaGFwcGVuKS48L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4wIC0gRmVicnVhcnksIDIwMDY8cD4NCiAgICA8cD5BZGRlZCBmaWx0ZXJpbmcgYW5kIHJvdyBsaW1pdGluZyB0byB0aGUgYWRtaW4gcGFuZWwuIFRoaXMgd2lsbCBoYXZlIGJpZyBiZW5lZml0cyB0byB0aG9zZSB0aGF0IGFyZSB1c2luZyB0aGlzIG1vZHVsZSBmb3IgaGlnaCB0cmFmaWMsIGFuZCBoaWdoIHVzZXIgc2l0ZXMuPC9wPg0KICAgIDxwPkFkZGVkIHNvcnRpbmcgdG8gdGhlIGFkbWluIHBhbmVsPC9wPg0KICAgIDxwPkFkZGVkIG1heCBsZW5ndGggYWJpbGl0eSB0byB0ZXh0IGFuZCBlbWFpbCBmaWVsZHM8L3A+DQogICAgPHA+Rml4ZWQgYSBzbWFsbCBwcm9ibGVtIHdpdGggdGhlIGRlZmF1bHQgZ3JvdXAgbm90IGJlaW5nIGNoZWNrZWQgd2hlbiBhZGRpbmcgYSB1c2VyPC9wPg0KICAgIDxwPlNhdmUgZmlsdGVyIHNldHRpbmdzIGluIHByZWZlcmVuY2VzLCBhbmQgdGhlIGFjdGl2ZSB0YWIgdG9vLjwvcD4NCiAgICA8cD5EZWxldGUgdXNlciBwcm9wZXJ0aWVzIHdoZW4gYSBwcm9wZXJ0eSBpcyBkZWxldGVkIDxlbT5Ob3RlPC9lbT4sIG5vdCB3aGVuIGl0IGlzIGRpc2FibGVkIGluIHRoZSBlZGl0IGdyb3VwIGRpYWxvZzwvcD4NCiAgICA8cD5BZGQgY29uZmlybWF0aW9uIG1lc3NhZ2UgaW4gZWRpdCBncm91cHMuPC9wPg0KICAgIDxwPkFkZGVkIGEgY291cGxlIG1vcmUgY29uZmlybWF0aW9uIG1lc3NhZ2VzLjwvcD4NCiAgICA8cD5BZGRlZCBDU1YgRXhwb3J0IG9wdGlvbjwvcD4NCiAgICA8cD5Ub2RvIC0gQWRkIHByZWZlcmVuY2VzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZmllbGRsZW5ndGg8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4xIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBjaGVjayBmb3IgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3NlczwvcD4NCiAgICA8cD5GaXggcHJvYmxlbSB3aGVyZSBleHBpcnkgZGF0ZSB3YXMgYmVpbmcgbW9kaWZpZWQgd2hlbiBhZG1pbiBtb2RpZmllZCB1c2VyIHNldHRpbmdzPC9wPg0KICAgIDxwPkFkZCBhIGNvbmZpcm1hdGlvbiBtZXNzYWdlIHRvIHRoZSBwcmVmZXJlbmNlcyBzdWJtaXQgYnV0dG9uPC9wPg0KICAgIDxwPkZpeGVkIGEgbWlub3IgYnVnIHdoZW4gY291dGluZyB0aGUgbnVtYmVyIG9mIHVzZXJzIGluIGEgZ3JvdXA8L3A+DQogICAgPHA+Rml4ZXMgdG8gdGhlIHNpemUgb2YgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkcywgYW5kIG1heGxlbmd0aDwvcD4NCiAgICA8cD5BZGRlZCBhZHZhbmNlZCBmaWx0ZXJpbmcgb24gcHJvcGVydGllczwvcD4NCiAgICA8cD5DaGFuZ2VzIHRvIGxhYmVsaW5nIGluIGFkZCBvciBlZGl0IHVzZXI8L3A+DQogICAgPHA+Rml4ZXMgdG8gcHJvYmxlbXMgd2l0aCBpbmxpbmUgYW5kIG5vbiBpbmxpbmUgZm9ybXMsIHRoZSBwYXNzd29yZCBpcyBuZXZlciBzZW50IG9uIHRoZSBnZXQgbGluZTwvcD4NCiAgICA8cD5DaGFuZ2VkIHRvIHJlcXVpcmUgQ01TIDAuMTItYmV0YTIgYXQgYSBtaW5pbXVtIChmb3Igc2FmZXR5IHB1cnBvc2VzKTwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjIgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPk1vcmUgZmllbGQgbGVuZ3RoIGZpeGVzPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMyAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+RXhwb3J0IHRvIHNtYXJ0eSBhbGwgb2YgdGhlIHVzZXIgcHJvcGVydGllcyB3aGVuIHRoZXkgYXJlIGxvZ2dlZCBpbjwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjQgLSBNYXksIDIwMDY8cD4NCiAgICA8cD5GaXhlcyB0byB0aGUgZXhwb3J0IGNvZGU8L3A+DQogICAgPHA+Q29kZSBjbGVhbnVwIChhbHBoYWJldGl6ZSBmdW5jdGlvbnMpPC9wPg0KICAgIDxwPk1pbm9yIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgKHJlY29tbWVuZGVkIGJ5IG5pbHM3MykgZm9yIGRlYWxpbmcgd2l0aCB0aGUgY2hhbmdlIHBhc3N3b3JkIHN0dWZmLjwvcD4NCiAgICA8cD5SZW1vdmVkIHRoZSByZXF1aXJlbWVudCBmb3IgQ01TIDAuMTIsIGFuZCBwdXQgaXQgYmFjayB0byAwLjExLjI8L3A+DQogICAgPHA+QWRkZWQgdGhlIFwmIzAzOTtzaWxlbnRcJiMwMzk7IGZvcm08L3A+DQogICAgPHA+Q2xlYW5lZCB1cCBkYXRhYmFzZSBhY2Nlc3Mgc3R1ZmYgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKGhvcGVmdWxseSk8L3A+DQogICAgPHA+QWRkZWQgY29weXJpZ2h0IGluZm88L3A+DQogICAgPHA+QWRkZWQgbWFjcm9zIGZvciByZWRpcmVjdG8gdG8gYSB1c2VyIHNwZWNpZmljIHBhZ2Ugb24gbG9naW4gb3IgbG9nb3V0PC9wPg0KICAgIDxwPlR3ZWFrcyB0byB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgdGFiPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuNSAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBleHBpcnkgZGF0ZXM8L3A+DQogICAgPHA+U3RhcnQgc3BsaXR0aW5nIHRoZSBjb2RlIHVwIGludG8gc2V2ZXJhbCBmaWxlczwvcD4NCjxsaT48cD4xLjAuNiAtIE1heSwgMjAwNjwvcD4NCiAgICA8cD5GaXhlZCBhIHByb2JsZW0gd2l0aCBlZGl0aW5nIGRyb3Bkb3duczwvcD4NCjwvbGk+DQo8bGk+PHA+MS4xLjAgLSBNYXksIDIwMDY8L3A+DQogICAgPHA+RXZlbnRzPC9wPg0KICAgIDxwPk9wdGlvbmFsbHkgZGlzYWxsb3cgcmVwZWF0ZWQgbG9naW5zPC9wPg0KICAgIDxwPkV4cG9ydCB0aGUgdXNlciBpZCB0byBzbWFydHk8L3A+DQogICAgPHA+QWRkZWQgb3B0aW9uYWxseSB7JGdyb3VwXH0gZm9yIHRoZSBwYWdlcyB0byBqdW1wIHRvIG9uIGxvZ2luPC9wPg0KPC9saT4NCjxsaT48cD4xLjEuMSAtIFNlcHQsIDIwMDY8L3A+DQogICAgPHA+Rml4ZWQgYSBidWcgd2hlbiBhIHVzZXIgd2FzIGVkaXRpbmcgaGlzIHNldHRpbmdzIHdpdGggXCYjMDM5O2FsbG93IGR1cGxpY2F0ZSBlbWFpbHNcJiMwMzk7IHdhcyBvZmY8L3A+DQogICAgPHA+Q2hhbmdlZCB0aGUgZHJvcGRvd24gdGFibGUgdG8gMjU1IGNoYXJhY3RlcnM8L3A+DQogICAgPHA+TWlub3IgY2xlYW51cHM8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMS4yIC0gT2N0LCAyMDA2PC9wPg0KICAgIDxwPkZpeGVzIChob3BlZnVsbCkgdG8gdGhlIGFkb2RiL2Fkb2RiLWxpdGUgREFURVRJTUUgaXNzdWU8L3A+DQo8L2xpPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhbGxvd3MgbWFuYWdlbWVudCBhbmQgYWRtaW5pc3RyYXRpb24gb2YgZnJvbnQgZW5kIHVzZXJzIDxpPih1c2VycyB3aG8gaGF2ZSBubyBhZG1pbiBhY2Nlc3NzKTwvaT4uICBJdCBhbGxvd3MgY3JlYXRpb24gb2YgdXNlciBncm91cHMsIGFuZCB1c2VyIGFjY291bnRzIGFuZCBhbGxvd3MgdXNlcnMgdG8gbG9naW4gYW5kIGxvZ291dC4gIGl0IGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIEN1c3RvbUNvbnRlbnQgbW9kdWxlIHRvIGRpc3BsYXkgZGlmZmVyZW50IGNvbnRlbnQgdG8gZGlmZmVyZW50IHVzZXJzIG9uY2UgdGhleSBoYXZlIGxvZ2dlZCBpbjwvcD4NCjxoMz5GZWF0dXJlczwvaDM+DQo8dWw+DQo8bGk+PHA+VXNlciBhY2NvdW50IGV4cGlyYXRpb24uICBZb3UgY2FuIGNyZWF0ZSB0ZW1wb3JhcnkgdXNlcnM8L3A+PC9saT4NCjxsaT48cD5Hcm91cCBQcm9wZXJ0aWVzLiAgWW91IGNhbiBhc2sgZm9yIGRpZmZlcmVudCBpbmZvcm1hdGlvbiBmcm9tIG1lbWJlcnMgb2YgZGlmZmVyZW50IGdyb3VwczwvcD48L2xpPg0KPGxpPjxwPkNhcGFibGUgb2YgaGFuZGxpbmcgaHVuZHJlZHMgb2YgdXNlcnM8L3A+PC9saT4NCjxsaT48cD5IYXMgYW4gZXh0ZW5zaXZlIEFQSSBmb3IgYWRkaW5nIGZ1bmN0aW9uYWxpdHk8L3A+PC9saT4NCjwvdWw+DQo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4NCjx1bD4NCjxsaT48cD5BZnRlciBpbnN0YWxsYXRpb24geW91IGNhbiBhY2Nlc3MgYWRtaW4gcGFuZWwgdG8gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlIHVuZGVyIHRoZSAmYW1wO3F1b3Q7VXNlcnMgJmFtcDsgZ0dyb3VwcyZhbXA7cXVvdDsgbWVudS48L3A+PC9saT4NCjxsaT4NCjxwPlNlY29uZGx5LCB5b3Ugc2hvdWxkIGRlZmluZSBwcm9wZXJ0aWVzLiAgUHJvcGVydGllcyBhcmUgZXNzZW50aWFsbHkgZmllbGQgZGVmaW5pdGlvbnMsIGhlcmUgeW91IHNwZWNpZnkgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gZ2F0aGVyLCBhbmQgbGltaXRzLiBpLmU6ICBOYW1lLCBBZ2UsIENpdHksIFN0YXRlLCBDb3VudHJ5LCBFbWFpbCBhZGRyZXNzLCBldGMuPC9wPg0KPHA+PGI+Tm90ZTo8L2I+IFlvdSBkbyBub3QgbmVlZCB0byBkZWZpbmUgcHJvcGVydGllcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3U8L2I+DQo8L2xpPg0KPGxpPjxwPk5leHQgeW91IHNob3VsZCBjcmVhdGUgb25lIG9yIG1vcmUgdXNlciBncm91cHMuICBXaGVuIHlvdSBjcmVhdGUgYSBncm91cCwgeW91IGFyZSBhc2tlZCBmb3IgYSBncm91cCBuYW1lLCBhIGRlc2NyaXB0aW9uIGFuZCB0byBhc3NvY2lhdGUgcHJvcGVydGllcyB3aXRoIHRoYXQgZ3JvdXAsIHNwZWNpZnkgdGhlIHByb3BlcnRpZXMgc29ydCBvcmRlciwgYW5kIHdldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZCA8aT4ob2ZmIGlzIGFsc28gdmFsaWQpPC9pPjwvcD48L2xpPg0KPGxpPjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuPC9wPjwvbGk+DQo8bGk+PHA+VGhpcmRseSB5b3Ugc2hvdWxkIGNyZWF0ZSBzb21lIHVzZXJzLiAgQWRkaW5nIHVzZXJzIGlzIGEgdHdvIHN0ZXAgcHJvY2Vzcy4gIFdoZW4gY3JlYXRpbmcgYSB1c2VyIHlvdSBhcmUgYXNrZWQgZm9yIHRoZSB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIGFuZCBhbiBleHBpcnkgZGF0ZSBmb3IgdGhhdCB1c2VyLiAgWW91IHRoZW4gbXVzdCBzZWxlY3QgdGhlIGdyb3VwcyB0aGF0IHRoYXQgdXNlciBpcyBhIG1lbWJlciBvZiwgYW5kIGNsaWNrIFwmIzAzOTtOZXh0XCYjMDM5OzwvcD4NCjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzLCBhbmQgdGhlbiB5b3UgY2FuIGVkaXQgdGhlaXIgZ3JvdXAgaW5mb3JtYXRpb24uICBidXQgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHBsZWFzZSBjcmVhdGUgYXQgbGVzdCBvbmUgdXNlcjwvcD48L2xpPg0KPGxpPjxwPkxhc3RseSwgYWZ0ZXIgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGZpZWxkcyB0byBiZSBwcmVzZW50ZWQgZm9yIHRoYXQgdXNlciwgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGZvcm0gYXNraW5nIGZvciBhbGwgb2YgdGhlIHJlcXVpcmVkIHVzZXIgaW5mb3JtYXRpb24uICBDb21wbGV0ZSB0aGlzIGZvcm0gdG8gY29tcGxldGUgdGhlIHVzZXIgYWRkaXRpb248L3A+PC9saT4NCjxsaT48cD5Zb3UgYXJlIG5vdyByZWFkeSB0byBhZGQgdGhlIGZyb250IGVuZCBmdW5jdGlvbmFsaXR5IHRvIHlvdXIgc2l0ZS4gIFRoaXMgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUge2Ntc19tb2R1bGUgbW9kdWxlPUZyb250RW5kVXNlcnN9IHRhZyB0byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGU8L3A+PC9saT4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eVwmIzAzOTtzDQptb2R1bGUgaG9tZXBhZ2UgYXQgPGEgaHJlZj0mcXVvdDtodHRwOi8vdGVjaGNvbS5keW5kbnMub3JnJnF1b3Q7PnRlY2hjb20uZHluZG5zLm9yZzwvYT4uPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxoMz5QYXJhbWV0ZXJzPC9oMz4NCjx1bD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGZvcm09JnF1b3Q7bmFtZSZxdW90OzwvbGk+DQo8cD5Gb3JtczoNCjx1bD4NCiA8bGk+PGVtPmxvZ2luPC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dpbiBmb3JtPC9saT4NCiA8bGk+PGVtPmxvZ291dDwvZW0+IC0gRGlzcGxheSB0aGUgbG9nb3V0IGZvcm08L2xpPg0KIDxsaT48ZW0+Y2hhbmdlc2V0dGluZ3M8L2VtPiAtIERpc3BsYXkgdGhlIGNoYW5nZSBzZXR0aW5ncyBmb3JtPC9saT4NCiA8bGk+PGVtPmZvcmdvdHB3PC9lbT4gLSBEaXNwbGF5IHRoZSBmb3Jnb3QgcGFzc3dvcmQgZm9ybTwvbGk+DQo8bGk+PGVtPnNpbGVudDwvZW0+ID0gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+DQo8L3VsPg0KPC9wPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG89JnF1b3Q7cGFnZSZxdW90OzwvbGk+DQo8cD5Vc2VkIHdpdGggdGhlIGxvZ2luLCBsb2dvdXQsIGFuZCBjaGFuZ2VzZXR0aW5ncyBmb3JtcywgdGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIHBhZ2UgaWQgb3IgYWxpYXMgb2YgYSBwYWdlIHRvIHJlZGlyZWN0IHRvLCB3aGVuIHRoZSBmb3JtIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQ8L3A+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3Vwcz0mcXVvdDtncm91cDEsIGdyb3VwMiwgZ3JvdXAzJnF1b3Q7PC9saT4NCjxwPlVzZWQgd2l0aCB0aGUgbG9naW4gZm9ybXMuICBCYXNpY2FsbHkgb25seSBhbGxvd3MgdXNlcnMgdG8gbG9naW4gaWYgdGhleSBiZWxvbmcgdG8gdGhhdCBwYXJ0aWN1bGFyIGdyb3VwKHMpLjwvcD4NCjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGNhcHRjaGE9JnF1b3Q7MSZxdW90OzwvbGk+DQo8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGZvcm1zLiBUaGlzIHdpbGwgZW5hYmxlIGNhcHRjaGEgb24gdGhlIGZvcm0uIFRoZSBDYXB0Y2hhIG1vZHVsZSBtdXN0IGJlIGluc3RhbGxlZCBmb3IgdGhpcyBwYXJhbWV0ZXIgdG8gd29yay48L3A+DQo8L3VsPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0DQpvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+DQo8aDM+UmVxdWlyZW1lbnRzPC9oMz4NCjxwPkluIG9yZGVyIHRvIGltcGxlbWVudCB0aGUgZm9yZ290dGVuIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHksIHRoaXMgbW9kdWxlIHJlcXVpcmVzIHRoZSBDTVNNYWlsZXIgbW9kdWxlIHRvIGJlIHByZXZpb3VzbHkgaW5zdGFsbGVkPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA1LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PiZhbXA7bHQ7Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZhbXA7Z3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fc3RhciddID0gJyogRGUgdm9sZ2VuZGUgbWFjcm9zIGt1bm5lbiBpbiBkZXplIHZlbGRlbiB3b3JkZW4gZ2VicnVpa3Q6IHskdXNlcm5hbWV9JzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdXaWp6aWcgZGl0IHZlbGQgb20gaGV0IHdhY2h0d29vcmQgdGUgcmVzZXR0ZW4nOwokbGFuZ1snaW5mb19hZG1pbl9yZXBlYXRwYXNzd29yZCddID0gJ1dpanppZyBkaXQgdmVsZCBvbSBoZXQgd2FjaHR3b29yZCB0ZSByZXNldHRlbic7CiRsYW5nWydlcnJvcl91c2VybmFtZV9leGlzdHMnXSA9ICdEZXplIGdlYnJ1aWtlcnNuYWFtIGJlc3RhYXQgYWwnOwokbGFuZ1snbm9jc3ZyZXN1bHRzJ10gPSAnRGV6ZSBleHBvcnQgbGV2ZXJkZSBnZWVuIHdhYXJkZShzKSBvcCc7CiRsYW5nWydwcm9tcHRfdW5mbGRsZW4nXSA9ICdMZW5ndGUgdmFuIGhldCBnZWJydWlrZXJzbmFhbSB2ZWxkJzsKJGxhbmdbJ3Byb21wdF9wd2ZsZGxlbiddID0gJ0xlbmd0ZSB2YW4gaGV0IHdhY2h0d29vcmQgdmVsZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnTWluL01heCBnZWxkaWdlIHdhY2h0d29vcmQgbGVuZ3Rlcyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWVsZW5ndGhzJ10gPSAnTWluL01heCBnZWxkaWdlIGdlYnJ1aWtlcnNuYWFtIGxlbmd0ZXMnOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGFkZHJlc3MnXSA9ICdHZWVuIEUtbWFpbCBhZHJlcyBnZXZvbmRlbiB2b29yIGRpdCBhY2NvdW50JzsKJGxhbmdbJ3VzZXJfYWRkZWQnXSA9ICdHZWJydWlrZXIgVG9lZ2V2b2VnZCAlcyA9ICVzJzsKJGxhbmdbJ3VzZXJfZGVsZXRlZCddID0gJ0dlYnJ1aWtlciB2ZXJ3aWpkZXJkIGlkPSVzJzsKJGxhbmdbJ3Byb3BlcnR5ZmlsdGVyJ10gPSAnRWlnZW5zY2hhcCc7CiRsYW5nWyd2YWx1ZXJlZ2V4J10gPSAnV2FhcmRlIChyZWd1bGFyIGV4cHJlc3Npb24pJzsKJGxhbmdbJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJ10gPSAnV2FhcnNjaHV3aW5nOiBEZXplIHZlbGRlbiBiZSZhbXA7aXVtbDtudmxvZWRlbiBkZSBncm9vdHRlIHZhbiBpbnZvZXJ2ZWxkZW4gdm9vciBmb3JtdWxpZXJlbi4gSGV0IGFhbnRhbCB2ZXJrbGVpbmdlbiBvcCBlZW4gYmVzdGFhbmRlIHdlYnNpdGUgaXMgbWlzc2NoaWVuIG5pZXQgYWFuIHRlIHJhZGVuLic7CiRsYW5nWydjb25maXJtX3N1Ym1pdHByZWZzJ10gPSAnQmVoZWVyIHZvb3JrZXVyZW4gd2lqemlnZW4/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdFLW1haWwgYWRyZXMgd29yZHQgYWwgZ2VicnVpa3QnOwokbGFuZ1sncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICdEZXplbGZkZSBFLW1haWxzIHRvZXN0YWFuJzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJyhtZWVyZGVyZSBnZWJydWlrZXJzIG1ldCBoZXR6ZWxmZGUgRS1tYWlsIGFkcmVzIHRvZXN0YWFuKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcm5hbWUnXSA9ICdHZWVuIGdlYnJ1aWtlcnNuYWFtIGluZ2V2b2VyZCc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdHZWVuIHdhY2h0d29vcmQgaW5nZXZvZXJkJzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dvdXQnXSA9ICdGcm9udGVuZCBHZWJydWlrZXIgTG9nb3V0JzsKJGxhbmdbJ2Zyb250ZW5kdXNlcl9sb2dnZWRpbiddID0gJ0Zyb250ZW5kIEdlYnJ1aWtlciBMb2dpbic7CiRsYW5nWydlZGl0cHJvcF9pbmZvbXNnJ10gPSAnPGZvbnQgY29sb3I9JmFtcDtxdW90O3JlZCZhbXA7cXVvdDs+PGI+VVNFIENBVVRJT048L2I+IHdoZW4gY2hhbmdpbmcgZXhpc3RpbmcgcHJvcGVydGllcyB0aGF0IGFyZSBhc3NpZ25lZCB0byBncm91cHMsIHlvdSBtYXkgcG90ZW50aWFsbHkgY2F1c2UgZGFtYWdlIGFuZCBicmVhayBhbiBleGlzdGluZyBzaXRlIDxpPihlc3BlY2lhbGx5IGlmIHlvdSByZWR1Y2UgZmllbGQgbGVuZ3RocywgZXRjKTwvaT48L2ZvbnQ+JzsKJGxhbmdbJ2luZm9fc210cHZhbGlkYXRlJ10gPSAnRGV6ZSBmdW5jdGllIHdlcmt0IG5pZXQgb25kZXIgd2luZG93cyc7CiRsYW5nWydtc2dfZG9udGNyZWF0ZXVzZXJuYW1lJ10gPSAnTWFhayBnZWVuIHByb3BlcnR5IGFhbiB2b29yOiB1c2VybmFtZS9wYXNzd29yZC4gRGV6ZSB6aWpuIGluZ2Vib3V3ZCBpbiBkZSBtb2R1bGUuJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRjc3YnXSA9ICdHZWJydWlrZXJzIGV4cG9ydGVyZW4gbmFhciBDU1YnOwokbGFuZ1snZXhwb3J0Y3N2J10gPSAnRXhwb3J0ZXJlbic7CiRsYW5nWydhZG1pbiddID0gJ0JlaGVlcic7CiRsYW5nWydlZGl0cHJvcCddID0gJ1dhYXJkZSBXaWp6aWdlbic7CiRsYW5nWydtYXhsZW5ndGgnXSA9ICdNYXhpbWFsZSBsZW5ndGUnOwokbGFuZ1snY3JlYXRlZCddID0gJ0FhbmdlbWFha3QnOwokbGFuZ1snc29ydGJ5J10gPSAnU29ydGVyZW4gT3AnOwokbGFuZ1snc29ydCddID0gJ1NvcnRlcmluZyc7CiRsYW5nWyd1c2Vyc2luZ3JvdXAnXSA9ICdHZWJydWlrZXJzIGluIGRlIGdlc2VsZWN0ZWVyZGUgZ3JvZXAoZW4pJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ1Jlc3VsdGF0ZW4gYmVwZXJrZW4gdG90JzsKJGxhbmdbJ2Vycm9yX25vZW1haWxmaWVsZCddID0gJ0thbiBnZWVuIGUtbWFpbCB2ZWxkIHZpbmRlbiB2b29yIGRlemUgZ2VicnVpa2VyLiBOZWVtIGNvbnRhY3Qgb3AgbWV0IGRlIGJlaGVlcmRlci4nOwokbGFuZ1sncHJvbXB0X2ZvcmdvdHB3X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdm9vciBwYXNzd29yZCB2ZXJnZXRlbiBmb3JtdWxpZXInOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdm9vciAmIzAzOTt3aWp6aWcgaW5zdGVsbGluZ2VuJiMwMzk7IGZvcm11bGllcic7CiRsYW5nWydwcm9tcHRfbG9naW5fcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGxvZ2luJzsKJGxhbmdbJ3Byb21wdF9sb2dvdXRfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGxvZ291dCc7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0ZWVyIHZvbGdvcmRlJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ0VlbiBhYW50YWwgZ2VicnVpa2VycyBoZWVmdCBlZW4gdmVyem9layB0b3QgcmVzZXR0ZW4gd2FjaHR3b29yZCBpbmdlZGllbmQsIG1vbWVudGVlbCB6aWpuIGRpdCBlcjonOwokbGFuZ1sncmVtb3ZlMXdlZWsnXSA9ICdWZXJ3aWpkZXIgYWxsZSBhYW5tZWxkaW5nZW4gbWVlciBkYW4gZWVuIHdlZWsgb3VkJzsKJGxhbmdbJ3JlbW92ZTFtb250aCddID0gJ1ZlcndpamRlciBhbGxlIGFhbm1lbGRpbmdlbiBtZWVyIGRhbiBlZW4gbWFhbmQgb3VkJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ0FsbGUgZW50cmllcyB2ZXJ3aWpkZXJlbic7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnWmVrZXIgd2V0ZW4/JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRjb2RlJ10gPSAnRXIgaXMgZWVuIHZlcmtlZXJkZSBjb2RlIGluZ2V2b2VyZCwgcHJvYmVlciBoZXQgc3ZwIG5vZ21hYWxzJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdEZSB0aWpkZWxpamtlIGNvZGUgdm9vciB1dyBhY2NvdW50IGtvbiBuaWV0IGluIG9uemUgZGF0YWJhc2Ugd29yZGVuIGdldm9uZGVuJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJ10gPSAnU2phYmxvb24gb20gaGV0IGJldmVzdGlnaW5ncyBmb3JtdWxpZXIgdGUgdG9uZW4uJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX2VtYWlsdGVtcGxhdGUnXSA9ICdTamFibG9vbiBvbSBoZXQgcGFzc3dvcmQgdmVyZ2V0ZW4gZm9ybXVsaWVyIHRlIHRvbmVuLic7CiRsYW5nWydlcnJvcl9yZXNldGFscmVhZHlzZW50J10gPSAnSmlqemVsZiBvZiBpZW1hbmQgYW5kZXJzIGhlZWZ0IGFsIGVlbiBwYXNzd29yZCByZXNldCBwcm9jZWR1cmUgaW4gZ2FuZyBnZXpldC4gS2lqayBqZSBlLW1haWwgbmEsIHdlIGhlYmJlbiBhYW53aWp6aW5nZW4gaG9lIHRlIGhhbmRlbGVuIGRhYXIgbmFhciB0b2UgZ2VzdHV1cmQuJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdEYXRhYmFzZSBlcnJvci4nOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnSmUgb250dmFuZ3QgZGV6ZSBib29kc2NoYXAgb21kYXQgaWVtYW5kIGhlZWZ0IGdlbWVsZCBkYXQgamUgamUgcGFzc3dvcmQga3dpanQgYmVudC4gQWxzIGRpdCB6byBpcyBsZWVzIGRhbiBkZSBvbmRlcnN0YWFuZGUgYWFud2lqemluZ2VuIGFhbmRhY2h0aWcgZG9vci4gQWxzIGplIGhpZXIgbmlldHMgdmFuIGJlZ3JpanB0LCBkYW4ga2FuIGplIGRpdCBiZXJpY2h0amUgZ2V3b29uIHdpc3Nlbi4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RlICc7CiRsYW5nWydtZXNzYWdlX2NvZGUnXSA9ICdUaGUgZm9sbG93aW5nIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkIHJhbmRvbWx5IGdlbmVyYXRlZCBpbiBvcmRlciB0byB2ZXJpZnkgdGhlIHVzZXIgYWNjb3VudC4gIHdoZW4geW91IGNsaWNrIG9uIHRoZSBsaW5rIGJlbG93IHlvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgZmllbGQgdG8gZW50ZXIgdGhpcyBjb2RlLiAgTm9ybWFsbHkgdGhlIGZpZWxkIGlzIHByZS1jb21wbGV0ZWQgZm9yIHlvdSwgYnV0IGluY2FzZSBpdCBpc24mIzAzOTt0IHRoZSBjb2RlIGlzOic7CiRsYW5nWydwcm9tcHRfbGluayddID0gJ0NsaWNraW5nIG9uIHRoZSBmb2xsb3dpbmcgbGluayB3aWxsIHRha2UgeW91IHRvIHRoZSB3ZWJzaXRlIHdoZXJlIHlvdSBjYW4gZW50ZXIgdGhlIGFib3ZlIGNvZGUsIGFuZCByZXNldCB5b3VyIHBhc3N3b3JkOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnV2FjaHR3b29yZCBWZXJnZXRlbic7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0NvdWxkIG5vdCBmaW5kIHRoZSBDTVNNYWlsZXIgbW9kdWxlICc7CiRsYW5nWydpbmZvX2ZvcmdvdHB3bWVzc2FnZXNlbnQnXSA9ICdBbiBlbWFpbCBoYXMgYmVlbiBzZW50IHRvICVzIHdpdGggaW5zdHJ1Y3Rpb25zIGFzIHRvIGhvdyB0byByZXNldCB5b3VyIHBhc3N3b3JkLiAgVGhhbmsgeW91JzsKJGxhbmdbJ2xvc3Rwd19tZXNzYWdlJ10gPSAnU28geW91IGZvcmdvdCBvciBsb3N0IHlvdXIgcGFzc3dvcmQuIFdlbGwsIHR5cGUgeW91ciB1c2VybmFtZSBpbiBoZXJlLCBhbmQgaWYgd2UgY2FuIGZpbmQgeW91IHdlIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IGl0JzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3RlbXBsYXRlJ10gPSAnV2FjaHR3b29yZCBWZXJnZXRlbiBUZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfcHJvcG5vdGZvdW5kJ10gPSAnRWlnZW5zY2hhcCAlcyBuaWV0IGdldm9uZGVuJzsKJGxhbmdbJ3Byb3BzZm91bmQnXSA9ICdHZXZvbmRlbiBlaWdlbnNjaGFwcGVuJzsKJGxhbmdbJ2FkZHByb3AnXSA9ICdFaWdlbnNjaGFwIHRvZXZvZWdlbic7CiRsYW5nWydlcnJvcl9yZXF1aXJlZGZpZWxkJ10gPSAnRWVuIHZlcnBsaWNodCB2ZWxkICglcykgaXMgbmlldCBpbmdldnVsZCc7CiRsYW5nWydpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCddID0gJ1Z1bCBoaWVyIGVlbiBuaWV1dyB3YWNodHdvb3JkIGluIG9tIGhldCB3YWNodHdvb3JkIHRlIHJlc2V0dGVuJzsKJGxhbmdbJ2Vycm9yX25vdGxvZ2dlZGluJ10gPSAnSGV0IHNjaGlqbnQgZGF0IHUgbmlldCBpbmdlbG9nZWQgYmVudCc7CiRsYW5nWyd1c2VyX3NldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnUmVnaXN0cmF0aWUnOwokbGFuZ1snZXJyb3JfYWNjb3VudGV4cGlyZWQnXSA9ICdEaXQgYWNjb3VudCBpcyB2ZXJsb3Blbic7CiRsYW5nWydlcnJvcl9pbXByb3BlcmVtYWlsZm9ybWF0J10gPSAnVmVya2VlcmQgZS1tYWlsIGFkcmVzIGZvcm1hYXQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICdPbmdlbGRpZ2UgYWZsb29wIGRhdHVtJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5ncHJvcGVydHknXSA9ICdFcnJvciBzZXR0aW5nIHByb3BlcnR5ICVzIGZvciB1c2VyICRzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRncm91cGlkJ10gPSAnT25nZWxkaWdlIGdyb2VwIGlkICVzJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnSGlkZGVuIGZpZWxkIG1hcmtlciAnOwokbGFuZ1snaGlkZGVuZmllbGRjb2xvciddID0gJ0hpZGRlbiBmaWVsZCBjb2xvciAnOwokbGFuZ1snaGlkZGVuJ10gPSAnVmVyYm9yZ2VuJzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZW5hbWUnXSA9ICdBIHByb3BlcnR5IHdpdGggdGhhdCBuYW1lIGlzIGFscmVhZHkgZGVmaW5lZCc7CiRsYW5nWydlcnJvcl9ub3Byb3BlcnRpZXMnXSA9ICdHZWVuIGVpZ2Vuc2NoYXBwZW4gZ2VkZWZpbmVlcmQnOwokbGFuZ1snZXJyb3Jfbm9yZWxhdGlvbnMnXSA9ICdObyBwcm9wZXJ0aWVzIHdlcmUgc2VsZWN0ZWQgZm9yIHRoaXMgZ3JvdXAnOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHZXZvbmRlbiBncm9lcGVuJzsKJGxhbmdbJ2Vycm9yX29uZWdyb3VwcmVxdWlyZWQnXSA9ICdNZW1iZXJzaGlwIGluIGF0IGxlYXN0IG9uZSBncm91cCBpcyByZXF1aXJlZCc7CiRsYW5nWydwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJ10gPSAnUmVxdWlyZSBtZW1iZXJzaGlwIGluIGF0bGVhc3Qgb25lIGdyb3VwJzsKJGxhbmdbJ2JhY2snXSA9ICdUZXJ1Zyc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnJXMgaXMgZWVuIHZlcnBsaWNodCB2ZWxkJzsKJGxhbmdbJ3JlcXVpcmVkZmllbGRtYXJrZXInXSA9ICdWZXJwbGljaHRlIHZlbGRlbiBtYXJrZXJlbiBtZXQnOwokbGFuZ1sncmVxdWlyZWRmaWVsZGNvbG9yJ10gPSAnVmVycGxpY2h0ZSB2ZWxkZW4gaGlnaGxpZ2h0ZW4gaW4gJzsKJGxhbmdbJ25leHQnXSA9ICdWb2xnZW5kZSc7CiRsYW5nWydlcnJvcl9ncm91cGV4aXN0cyddID0gJ0VlbiBncm9lcCBtZXQgZGllIG5hYW0gYmVzdGFhdCBhbCc7CiRsYW5nWydyZXF1aXJlZCddID0gJ1ZlcnBsaWNodCB2ZWxkJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnT3B0aW9uZWVsJzsKJGxhbmdbJ29mZiddID0gJ1VpdCc7CiRsYW5nWydsZW5ndGgnXSA9ICdMZW5ndGUnOwokbGFuZ1snbGVuZ3RoY29tbWVudCddID0gJzxicj4oY2hhcnMgaW4gdGhlIHRleHQgaW5wdXQpJzsKJGxhbmdbJ3NlbG9wdGlvbnMnXSA9ICdEcm9wZG93biBvcHRpb25zLCBzZXBhcmF0ZWQgYnkgbGluZSBicmVha3MnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1sncHJvbXB0J10gPSAnUHJvbXB0JzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydjaGVja2JveCddID0gJ0FhbnZpbmsgdmFramUnOwokbGFuZ1snZW1haWwnXSA9ICdFbWFpbCBBZHJlcyc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0dmVsZCc7CiRsYW5nWydkcm9wZG93biddID0gJ1VpdGtsYXAnOwokbGFuZ1snbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnXSA9ICdXZWxrb20nOwokbGFuZ1snbG9nb3V0J10gPSAnVWl0bG9nZ2VuJzsKJGxhbmdbJ3Byb21wdF9jaGFuZ2VzZXR0aW5ncyddID0gJ01pam4gSW5zdGVsbGluZ2VuIHdpanppZ2VuJzsKJGxhbmdbJ2Vycm9yX2xvZ2luZmFpbGVkJ10gPSAnTG9naW4gbmlldCBnZWx1a3QgLSB3YWNodHdvb3JkL3VzZXJuYW1lIHByb2JsZWVtPyc7CiRsYW5nWydsb2dpbiddID0gJ0lubG9nZ2VuJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ0dlYnJ1aWtlcnNuYWFtJzsKJGxhbmdbJ3Byb21wdF9wYXNzd29yZCddID0gJ1dhY2h0d29vcmQnOwokbGFuZ1sncmVnaXN0ZXInXSA9ICdSZWdpc3RyZXJlbic7CiRsYW5nWydmb3Jnb3RwdyddID0gJ1dhY2h0d29vcmQgVmVyZ2V0ZW4/JzsKJGxhbmdbJ2RlZmF1bHRzJ10gPSAnU3RhbmRhYXJkJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2phYmxvb24nOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnR2VicnVpa2VyIElEIG5pZXQgZ2V2b25kZW4nOwokbGFuZ1snZXJyb3JfdXNlcm5hbWV0YWtlbiddID0gJ0RpZSBnZWJydWlrZXJzbmFhbSAoJXMpIGlzIGFsIGluIGdlYnJ1aWsnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1VzZSBTTVRQIHRvIHZhbGlkYXRlIGVtYWlsIGFkZHJlc3Nlcz8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnTWluaW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWF4aW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTWluaW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTWF4aW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnU2Vzc2lvbiBUaW1lb3V0IChzZWNvbmRzKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlbWFpbHJlZyddID0gJ0FsbG93IEVtYWlsIFJlZ2lzdHJhdGlvbic7CiRsYW5nWydwcm9tcHRfZGZsdGdyb3VwJ10gPSAnRGVmYXVsdCBHcm91cCBmb3IgbmV3IHVzZXJzJzsKJGxhbmdbJ2NoYW5nZXNldHRpbmdzX3RlbXBsYXRlJ10gPSAnQ2hhbmdlIFNldHRpbmdzIFRlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnXSA9ICdQYXNzd29yZHMgRG8gbm90IG1hdGNoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZSddID0gJ0ludmFsaWQgVXNlcm5hbWUnOwokbGFuZ1snZXJyb3JfaW52YWxpZHBhc3N3b3JkJ10gPSAnSW52YWxpZCBQYXNzd29yZCc7CiRsYW5nWydlZGl0dXNlciddID0gJ0VkaXQgVXNlcic7CiRsYW5nWyd2YWxpZCddID0gJ0dlbGRpZyc7CiRsYW5nWyd1c2VybmFtZSddID0gJ0dlYnJ1aWtlcnNuYWFtJzsKJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXR1cyc7CiRsYW5nWydlcnJvcl9tZW1iZXJncm91cHMnXSA9ICdUaGlzIHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncm91cHMnOwokbGFuZ1snZXJyb3JfcHJvcGVydGllcyddID0gJ05vIFByb3BlcnRpZXMnOwokbGFuZ1sndmFsdWUnXSA9ICdXYWFyZGUnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3JvZXBlbic7CiRsYW5nWydwcm9wZXJ0aWVzJ10gPSAnRWlnZW5zY2hhcHBlbic7CiRsYW5nWydwcm9wbmFtZSddID0gJ1Byb3BlcnR5IE5hbWUnOwokbGFuZ1sncHJvcHZhbHVlJ10gPSAnUHJvcGVydHkgVmFsdWUnOwokbGFuZ1snYWRkJ10gPSAnVG9ldm9lZ2VuJzsKJGxhbmdbJ2VkaXQnXSA9ICdBYW5wYXNzZW4nOwokbGFuZ1snZXhwaXJlcyddID0gJ1Zlcmxvb3B0JzsKJGxhbmdbJ3NwZWNpZnlfZGF0ZSddID0gJ0RhdHVtIG9wZ2V2ZW4nOwokbGFuZ1snMTJocnMnXSA9ICcxMiBVdXInOwokbGFuZ1snMjRocnMnXSA9ICcyNCBVdXInOwokbGFuZ1snNDhocnMnXSA9ICc0OCBVdXInOwokbGFuZ1snMXdlZWsnXSA9ICcxIFdlZWsnOwokbGFuZ1snMndlZWtzJ10gPSAnMiBXZWtlbic7CiRsYW5nWycxbW9udGgnXSA9ICcxIE1hYW5kJzsKJGxhbmdbJzNtb250aHMnXSA9ICczIE1hYW5kZW4nOwokbGFuZ1snNm1vbnRocyddID0gJzYgTWFhbmRlbic7CiRsYW5nWycxeWVhciddID0gJzEgSmFhcic7CiRsYW5nWyduZXZlciddID0gJ05vb2l0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsbWVzc2FnZSddID0gJ01vZHVsZSBpbnN0YWxsZWQgc3VjZXNzZnVsbHkuPGJyLz5CZSBzdXJlIHRvIHNldCB0aGUgJnF1b3Q7TW9kaWZ5IEZyb250RW5kVXNlciBQcm9wZXJ0aWVzIHBlcm1pc3Npb24uJnF1b3Q7JzsKJGxhbmdbJ3Bhc3N3b3JkJ10gPSAnV2FjaHR3b29yZCc7CiRsYW5nWydyZXBlYXRwYXNzd29yZCddID0gJ05vZ21hYWxzJzsKJGxhbmdbJ2Vycm9yX2dyb3VwbmFtZV9leGlzdHMnXSA9ICdFciBiZXN0YWF0IGFsIGVlbiBncm9lcCBtZXQgZGllIG5hYW0nOwokbGFuZ1snZWRpdGdyb3VwJ10gPSAnR3JvZXAgYmV3ZXJrZW4nOwokbGFuZ1snc3VibWl0J10gPSAnVmVyc3R1cmVuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXJlbic7CiRsYW5nWydkZWxldGUnXSA9ICdWZXJ3aWpkZXJlbic7CiRsYW5nWydjb25maXJtX2VkaXRncm91cCddID0gJ0FyZSB5b3Ugc3VyZSB0aGlzIGlzIHRoZSBwcm9wZXIgc2V0dGluZ3MgZm9yIHRoaXMgZ3JvdXA/XG5UdXJuaW5nIGEgcHJvcGVydHkgb2ZmIHdpbGwgbm90IGRlbGV0ZSBhbnkgZW50cmllcyBpbiB0aGUgcHJvcGVydGllcyB0YWJsZSBmb3IgdGhpcyBncm91cC91c2VyLiAgVGhleSB3aWxsIG1lcmVseSBiZSB1bmF2YWlsYWJsZS4nOwokbGFuZ1snYXJleW91c3VyZV9kZWxldGVncm91cCddID0gJ1dlZXQgamUgemVrZXIgZGF0IGplIGRlemUgZ3JvZXAgd2lsdCB2ZXJ3aWpkZXJlbj8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfcHJvcCddID0gJ1dlZXQgamUgemVrZXIgZGF0IGplIGRlemUgcHJvcGVydHkgZGVmaW50aWVmIHdpbHQgdmVyd2lqZGVyZW4/XG5BbHMgamUgZGF0IGRvZXQgdmVyd2lqZGVyIGplIG1ldGVlbiBvb2sgYWxsZSBwcm9wZXJ0aWVzIGdlbGlua2VkIGFhbiBkZSBnZWJydWlrZXJzLic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdUZSB3ZWluaWcgcGFyYW1ldGVycyc7CiRsYW5nWydpZCddID0gJ0lkJzsKJGxhbmdbJ25hbWUnXSA9ICdOYWFtJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRnb3J1cCddID0gJ1Byb2JsZWVtIGJpaiBoZXQgdG9ldm9lZ2VuIHZhbiBkZSBncm9lcCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFyYW1zJ10gPSAnT25nZWxkaWdlIFBhcmFtZXRlcnMnOwokbGFuZ1snYXBwbHlmaWx0ZXInXSA9ICdUb2VwYXNzZW4nOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3VzZXJmaWx0ZXInXSA9ICdHZWJydWlrZXJzbmFhbSBSZWd1bGFyIEV4cHJlc3Npb24nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdPbXNjaHJpanZpbmcnOwokbGFuZ1snZ3JvdXBuYW1lJ10gPSAnR3JvZXAgTmFhbSc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdUb2VnYW5nIEdld2VpZ2VyZCc7CiRsYW5nWydlcnJvciddID0gJ0ZvdXQnOwokbGFuZ1snYWRkZ3JvdXAnXSA9ICdHcm9lcCBUb2V2b2VnZW4nOwokbGFuZ1snYWRkdXNlciddID0gJ0dlYnJ1aWtlciBUb2V2b2VnZW4nOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ0dlYnJ1aWtlcnMgZ2V2b25kZW4gZGllIHZvbGRvZW4gYWFuIGRlIGdlZ2V2ZW4gem9layBjcml0ZXJpYSc7CiRsYW5nWydncm91cCddID0gJ0dyb2VwJzsKJGxhbmdbJ3NlbGVjdGdyb3VwJ10gPSAnR3JvZXAgU2VsZWN0ZXJlbic7CiRsYW5nWydyZWdpc3RyYXRpb25fdGVtcGxhdGUnXSA9ICdSZWdpc3RyYXRpZSBTamFibG9vbic7CiRsYW5nWydsb2dvdXRfdGVtcGxhdGUnXSA9ICdVaXRsb2cgU2phYmxvb24nOwokbGFuZ1snbG9naW5fdGVtcGxhdGUnXSA9ICdJbmxvZyBTamFibG9vbic7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1Zvb3JrZXVyZW4nOwokbGFuZ1sndXNlcnMnXSA9ICdHZWJydWlrZXJzJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0Zyb250ZW5kIEdlYnJ1aWtlcnMgTWFuYWdlbWVudCc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0JlaGVlciBGcm9udGVuZCBHZWJydWlrZXJzJzsKJGxhbmdbJ2RlZmF1bHRmcm9udHBhZ2UnXSA9ICdTdGFuZGFhcmQgYmlubmVua29tc3QgcGFnaW5hJzsKJGxhbmdbJ2xhc3RhY2Nlc3NlZHBhZ2UnXSA9ICdMYWF0c3QgYmV6b2NodGUgcGFnaW5hJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ0FuZGVyZSBwYWdpbmE6JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT4wLjAuMSAtIE9jdG9iZXIsIDIwMDUgLSBJbml0aWFsIE5SUFQgKE5vdCBSZWFkeSBmb3IgUHJpbWUgVGltZSkgcmVsZWFzZTwvbGk+DQo8bGk+MC4xLjAgLSBPY3RvYmVyLCAyMDA1IC0gSW5pdGlhbCByZWxlYXNlPC9saT4NCjxsaT4wLjEuMSAtIE9jdG9iZXIsIDIwMDUgLSBGaXhlZCBpc3N1ZXMgd2l0aCBwcm9wZXJ0aWVzPC9saT4NCjxsaT4wLjEuMiAtIE9jdG9iZXIsIDIwMDUgLSBBZGRlZCBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eTwvbGk+DQo8bGk+PHA+MC4xLjMgLSBOb3ZlbWJlciwgMjAwNTwvcD4NCiAgICA8cD5BZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgcmVkaXJlY3QgcGFnZSBvbiBsb2dpbiwgbG9nb3V0LCBmb3Jnb3QgcGFzc3dvcmQsIGFuZCBjaGFuZ2Ugc2V0dGluZ3MsIGFuZCBhZGRlZCB0aGUgcmV0dXJudG8gYW5kIGZvcm0gcGFyYW1ldGVycyB0byB0aGUgdXNlciBzaWRlIG9mIHRoaW5ncywgYWxzbyBkaWQgYSBjb3VwbGUgbGYgbGl0dGxlIGNsZWFudXBzLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIHYwLjExIGFuZCBhYm92ZSBmb3IgY2VydGFpbi48L3A+PC9saT4NCjxsaT4wLjEuNCAtIE5vdmVtYmVyLCAyMDA1IC0gVmVyeSBtaW5vciBjaGFuZ2Ugd2l0aCByZXNwZWN0IHRvIGEgZm9yZ290dGVuIGFuZCBubyBsb25nZXIgbmVlZGVkIGZ1bmN0aW9uIGNhbGw8L2xpPg0KPGxpPjxwPjAuMS41IC0gTm92ZW1iZXIsIDIwMDU8L3A+DQogICAgPHA+QW5vdGhlciB2ZXJ5IG1pbm9yIGNoYW5nZSwgYWRkZWQgc29tZSB0ZXh0IHRvIHRoZSBQb3N0SW5zdGFsbCBtZXNzYWdlLjwvcD48L2xpPg0KPGxpPjxwPjAuMS42IC0gSmFudWFyeSwgMjAwNjxwPg0KICAgIDxwPkNoYW5nZXMgdG8gdGhlIHBlcm1pc3Npb24gbW9kZWwsIGFuZCBtaW5vciBidWcgZml4ZXMgdG8gdGhlIHByZWZlcmVuY2VzLiAgQWxzbyBzb21lIHBocDUgZml4ZXMgYnV0IEkgYW0gc3VyZSB0aGF0IHRoZXJlIGFyZSBtb3JlIG91dCB0aGVyZS48L3A+PC9saT4NCjxsaT48cD4wLjEuNyAtIEphbnVhcnksIDIwMDY8cD4NCiAgICA8cD5NYW55IHRoYW5rcyB0byA8Yj5rYXRvbjwvYj4gZm9yIGFkZGluZyB0aGUgdGV4dGFyZWEgYW5kIGRyb3Bkb3duIHByb3BlcnR5IHR5cGVzLjwvcD4NCiAgICA8cD5GaXhlcyB0byB0aGUgcHJvcGVydHkgYWRkaW5nIHRvIGZpeCBwcm9ibGVtcyB3aXRoIHNwYWNlcyBpbiBwcm9wZXJ0eSBuYW1lcyAod2Ugbm8gbG9uZ2VyIGxldCB0aGF0IGhhcHBlbikuPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMCAtIEZlYnJ1YXJ5LCAyMDA2PHA+DQogICAgPHA+QWRkZWQgZmlsdGVyaW5nIGFuZCByb3cgbGltaXRpbmcgdG8gdGhlIGFkbWluIHBhbmVsLiBUaGlzIHdpbGwgaGF2ZSBiaWcgYmVuZWZpdHMgdG8gdGhvc2UgdGhhdCBhcmUgdXNpbmcgdGhpcyBtb2R1bGUgZm9yIGhpZ2ggdHJhZmljLCBhbmQgaGlnaCB1c2VyIHNpdGVzLjwvcD4NCiAgICA8cD5BZGRlZCBzb3J0aW5nIHRvIHRoZSBhZG1pbiBwYW5lbDwvcD4NCiAgICA8cD5BZGRlZCBtYXggbGVuZ3RoIGFiaWxpdHkgdG8gdGV4dCBhbmQgZW1haWwgZmllbGRzPC9wPg0KICAgIDxwPkZpeGVkIGEgc21hbGwgcHJvYmxlbSB3aXRoIHRoZSBkZWZhdWx0IGdyb3VwIG5vdCBiZWluZyBjaGVja2VkIHdoZW4gYWRkaW5nIGEgdXNlcjwvcD4NCiAgICA8cD5TYXZlIGZpbHRlciBzZXR0aW5ncyBpbiBwcmVmZXJlbmNlcywgYW5kIHRoZSBhY3RpdmUgdGFiIHRvby48L3A+DQogICAgPHA+RGVsZXRlIHVzZXIgcHJvcGVydGllcyB3aGVuIGEgcHJvcGVydHkgaXMgZGVsZXRlZCA8ZW0+Tm90ZTwvZW0+LCBub3Qgd2hlbiBpdCBpcyBkaXNhYmxlZCBpbiB0aGUgZWRpdCBncm91cCBkaWFsb2c8L3A+DQogICAgPHA+QWRkIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGluIGVkaXQgZ3JvdXBzLjwvcD4NCiAgICA8cD5BZGRlZCBhIGNvdXBsZSBtb3JlIGNvbmZpcm1hdGlvbiBtZXNzYWdlcy48L3A+DQogICAgPHA+QWRkZWQgQ1NWIEV4cG9ydCBvcHRpb248L3A+DQogICAgPHA+VG9kbyAtIEFkZCBwcmVmZXJlbmNlcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZpZWxkbGVuZ3RoPC9wPg0KPC9saT4NCjxsaT48cD4xLjAuMSAtIE1hcmNoLCAyMDA2PHA+DQogICAgPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZSBlbWFpbCBhZGRyZXNzZXM8L3A+DQogICAgPHA+Rml4IHByb2JsZW0gd2hlcmUgZXhwaXJ5IGRhdGUgd2FzIGJlaW5nIG1vZGlmaWVkIHdoZW4gYWRtaW4gbW9kaWZpZWQgdXNlciBzZXR0aW5nczwvcD4NCiAgICA8cD5BZGQgYSBjb25maXJtYXRpb24gbWVzc2FnZSB0byB0aGUgcHJlZmVyZW5jZXMgc3VibWl0IGJ1dHRvbjwvcD4NCiAgICA8cD5GaXhlZCBhIG1pbm9yIGJ1ZyB3aGVuIGNvdXRpbmcgdGhlIG51bWJlciBvZiB1c2VycyBpbiBhIGdyb3VwPC9wPg0KICAgIDxwPkZpeGVzIHRvIHRoZSBzaXplIG9mIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBmaWVsZHMsIGFuZCBtYXhsZW5ndGg8L3A+DQogICAgPHA+QWRkZWQgYWR2YW5jZWQgZmlsdGVyaW5nIG9uIHByb3BlcnRpZXM8L3A+DQogICAgPHA+Q2hhbmdlcyB0byBsYWJlbGluZyBpbiBhZGQgb3IgZWRpdCB1c2VyPC9wPg0KICAgIDxwPkZpeGVzIHRvIHByb2JsZW1zIHdpdGggaW5saW5lIGFuZCBub24gaW5saW5lIGZvcm1zLCB0aGUgcGFzc3dvcmQgaXMgbmV2ZXIgc2VudCBvbiB0aGUgZ2V0IGxpbmU8L3A+DQogICAgPHA+Q2hhbmdlZCB0byByZXF1aXJlIENNUyAwLjEyLWJldGEyIGF0IGEgbWluaW11bSAoZm9yIHNhZmV0eSBwdXJwb3Nlcyk8L3A+DQo8L2xpPg0KPGxpPjxwPjEuMC4yIC0gTWFyY2gsIDIwMDY8cD4NCiAgICA8cD5Nb3JlIGZpZWxkIGxlbmd0aCBmaXhlczwvcD4NCjwvbGk+DQo8bGk+PHA+MS4wLjMgLSBNYXJjaCwgMjAwNjxwPg0KICAgIDxwPkV4cG9ydCB0byBzbWFydHkgYWxsIG9mIHRoZSB1c2VyIHByb3BlcnRpZXMgd2hlbiB0aGV5IGFyZSBsb2dnZWQgaW48L3A+DQo8L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzcyk8L2k+LiAgSXQgYWxsb3dzIGNyZWF0aW9uIG9mIHVzZXIgZ3JvdXBzLCBhbmQgdXNlciBhY2NvdW50cyBhbmQgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQuICBpdCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBDdXN0b21Db250ZW50IG1vZHVsZSB0byBkaXNwbGF5IGRpZmZlcmVudCBjb250ZW50IHRvIGRpZmZlcmVudCB1c2VycyBvbmNlIHRoZXkgaGF2ZSBsb2dnZWQgaW48L3A+DQo8aDM+RmVhdHVyZXM8L2gzPg0KPHVsPg0KPGxpPjxwPlVzZXIgYWNjb3VudCBleHBpcmF0aW9uLiAgWW91IGNhbiBjcmVhdGUgdGVtcG9yYXJ5IHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+R3JvdXAgUHJvcGVydGllcy4gIFlvdSBjYW4gYXNrIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24gZnJvbSBtZW1iZXJzIG9mIGRpZmZlcmVudCBncm91cHM8L3A+PC9saT4NCjxsaT48cD5DYXBhYmxlIG9mIGhhbmRsaW5nIGh1bmRyZWRzIG9mIHVzZXJzPC9wPjwvbGk+DQo8bGk+PHA+SGFzIGFuIGV4dGVuc2l2ZSBBUEkgZm9yIGFkZGluZyBmdW5jdGlvbmFsaXR5PC9wPjwvbGk+DQo8L3VsPg0KPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+DQo8dWw+DQo8bGk+PHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJmFtcDsgZ0dyb3VwcyZxdW90OyBtZW51LjwvcD48L2xpPg0KPGxpPg0KPHA+U2Vjb25kbHksIHlvdSBzaG91bGQgZGVmaW5lIHByb3BlcnRpZXMuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIEVtYWlsIGFkZHJlc3MsIGV0Yy48L3A+DQo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQsIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgZm9yIHlvdTwvYj4NCjwvbGk+DQo8bGk+PHA+TmV4dCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2V0aGVyIGl0IGlzIGFuIG9wdGlvbmFsLCByZXF1aXJlZCwgb3IgaGlkZGVuIGZpZWxkIDxpPihvZmYgaXMgYWxzbyB2YWxpZCk8L2k+PC9wPjwvbGk+DQo8bGk+PHA+PGI+Tm90ZTo8L2I+IEJlZm9yZSBwcm9jZWVkaW5nLCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBwcmVmZXJlbmNlcyBhcmUgc2V0IGNvcnJlY3RseS48L3A+PC9saT4NCjxsaT48cD5UaGlyZGx5IHlvdSBzaG91bGQgY3JlYXRlIHNvbWUgdXNlcnMuICBBZGRpbmcgdXNlcnMgaXMgYSB0d28gc3RlcCBwcm9jZXNzLiAgV2hlbiBjcmVhdGluZyBhIHVzZXIgeW91IGFyZSBhc2tlZCBmb3IgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCwgYW5kIGFuIGV4cGlyeSBkYXRlIGZvciB0aGF0IHVzZXIuICBZb3UgdGhlbiBtdXN0IHNlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgdGhhdCB1c2VyIGlzIGEgbWVtYmVyIG9mLCBhbmQgY2xpY2sgXCYjMDM5O05leHRcJiMwMzk7PC9wPg0KPHA+PGVtPk5vdGU6IDwvZW0+VGhpcyBpcyBhIGxhYm91ciBpbnRlbnNpdmUgYW5kIGJvcmluZyBwcm9jZXNzLCBpdCBpcyBlYXNpZXIgdG8gbGV0IHVzZXJzIHJlZ2lzdGVyIHRoZW1zZWx2ZXMsIGFuZCB0aGVuIHlvdSBjYW4gZWRpdCB0aGVpciBncm91cCBpbmZvcm1hdGlvbi4gIGJ1dCBmb3IgdGVzdGluZyBwdXJwb3NlcywgcGxlYXNlIGNyZWF0ZSBhdCBsZXN0IG9uZSB1c2VyPC9wPjwvbGk+DQo8bGk+PHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD48L2xpPg0KPGxpPjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSB7Y21zX21vZHVsZSBtb2R1bGU9RnJvbnRFbmRVc2Vyc30gdGFnIHRvIHlvdXIgcGFnZSBvciB0ZW1wbGF0ZTwvcD48L2xpPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgY2FsZ3V5XCYjMDM5O3MNCm1vZHVsZSBob21lcGFnZSBhdCA8YSBocmVmPSZhbXA7cXVvdDtodHRwOi8vdGVjaGNvbS5keW5kbnMub3JnJmFtcDtxdW90Oz50ZWNoY29tLmR5bmRucy5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZhbXA7cXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmYW1wO3F1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZhbXA7cXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmYW1wO3F1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgDQo8L3VsPg0KPGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9ybT0mcXVvdDtuYW1lJnF1b3Q7PC9saT4NCjxwPkZvcm1zOg0KPHVsPg0KIDxsaT48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm08L2xpPg0KIDxsaT48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybTwvbGk+DQogPGxpPjxlbT5jaGFuZ2VzZXR0aW5nczwvZW0+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm08L2xpPg0KIDxsaT48ZW0+Zm9yZ290cHc8L2VtPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtPC9saT4NCjwvdWw+DQo8L3A+DQo8bGk+PGVtPihvcHRpb25hbCk8L2VtPiByZXR1cm50bz0mcXVvdDtwYWdlJnF1b3Q7PC9saT4NCjxwPlVzZWQgd2l0aCB0aGUgbG9naW4sIGxvZ291dCwgYW5kIGNoYW5nZXNldHRpbmdzIGZvcm1zLCB0aGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgcGFnZSBpZCBvciBhbGlhcyBvZiBhIHBhZ2UgdG8gcmVkaXJlY3QgdG8sIHdoZW4gdGhlIGZvcm0gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZDwvcD4NCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5SZXF1aXJlbWVudHM8L2gzPg0KPHA+SW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBmb3Jnb3R0ZW4gcGFzc3dvcmQgZnVuY3Rpb25hbGl0eSwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgdGhlIENNU01haWxlciBtb2R1bGUgdG8gYmUgcHJldmlvdXNseSBpbnN0YWxsZWQ8L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNSwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0mYW1wO3F1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mYW1wO3F1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZhbXA7cXVvdDtodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwmYW1wO3F1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgIAogICAgJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKICAgIAogICAgLy9Vc2VyIGxpc3QKICAgICRmbGRzID0gIgogICAgICAgICAgICAgaWQgSSBLRVksCgkgICAgIHVzZXJuYW1lIEMoODApIE5PVCBOVUxMLAogICAgICAgICAgICAgcGFzc3dvcmQgQygzMikgTk9UIE5VTEwsCiAgICAgICAgICAgICBjcmVhdGVkYXRlICIuQ01TX0FET0RCX0RULiIsCiAgICAgICAgICAgICBleHBpcmVzICIuQ01TX0FET0RCX0RUOwoKICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3VzZXJzIiwgCgkJCQkgICAgICAkZmxkcywgJHRhYm9wdGFycmF5ICk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKICAgICRkYi0+Q3JlYXRlU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnNfc2VxIiApOwogICAgCiAgICAvL0dyb3VwIGxpc3QKICAgICRmbGRzID0gIgoJICAgICBpZCBJIEtFWSwKCSAgICAgZ3JvdXBuYW1lIEMoMzIpLAoJICAgICBncm91cGRlc2MgQygxMjgpCgkgICAgIjsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2dyb3VwcyIsCgkJCQkgICAgICAkZmxkcywgJHRhYm9wdGFycmF5ICk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKICAgICRkYi0+Q3JlYXRlU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzX3NlcSIgKTsKCiAgICAvLyBsb2dnZWRpbgogICAgJGZsZHMgPSAiCgkgICAgIHNlc3Npb25pZCBDKDMyKSwKCSAgICAgbGFzdHVzZWQgSSwKCSAgICAgdXNlcmlkIEkKCSAgICAiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfbG9nZ2VkaW4iLAoJCQkJICAgICAgJGZsZHMsICR0YWJvcHRhcnJheSApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CiAgICAKICAgIC8vQ29ubmVjdGlvbnMgYmV0d2VlbiB1c2VycyBhbmQgZ3JvdXBzCiAgICAkZmxkcyA9ICIKCSAgICAgdXNlcmlkIEksCgkgICAgIGdyb3VwaWQgSQoJICAgICI7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19iZWxvbmdzIiwKCQkJCSAgICAgICRmbGRzLCAkdGFib3B0YXJyYXkgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgIC8vcHJvcGVydHkgZGVmaW5pdGlvbgogICAgJGZsZHMgPSAiCiAgICAgICAgICAgICBuYW1lICAgICAgQyg0MCkgS0VZLAogICAgICAgICAgICAgcHJvbXB0ICAgIEMoODApIE5PVCBOVUxMLAogICAgICAgICAgICAgdHlwZSAgICAgIEMoMjApIE5PVCBOVUxMLAogICAgICAgICAgICAgbGVuZ3RoICAgIEksCiAgICAgICAgICAgICBtYXhsZW5ndGggSQogICAgICAgICAgICAiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGRlZm4iLAoJCQkJICAgICAgJGZsZHMsICR0YWJvcHRhcnJheSApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgogICAgLy9kcm9wZG93biBzZWxlY3Qgb3B0aW9ucwogICAgJGZsZHMgPSAiCiAgICAgICAgICAgICBvcmRlcl9pZAkJSSwKICAgICAgICAgICAgIG9wdGlvbl9uYW1lCUMoNDApIE5PVCBOVUxMLAogICAgICAgICAgICAgb3B0aW9uX3RleHQJQygyNTUpIE5PVCBOVUxMLAogICAgICAgICAgICAgY29udHJvbF9uYW1lCUMoNDApIE5PVCBOVUxMOwogICAgICAgICAgICAiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZHJvcGRvd25zIiwKCQkJCSAgICAgICRmbGRzLCAkdGFib3B0YXJyYXkgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgIC8vIGdyb3VwIHByb3BlcnR5IG1hcAogICAgJGZsZHMgPSAiCiAgICAgICAgICAgICAgbmFtZSAgICBDKDQwKSBLRVksCiAgICAgICAgICAgICAgZ3JvdXBfaWQgSSBLRVksCiAgICAgICAgICAgICAgc29ydF9rZXkgSSwgCiAgICAgICAgICAgICAgcmVxdWlyZWQgSSBOT1QgTlVMTAogICAgICAgICAgICAiOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBwcm9wbWFwIiwKCQkJCSAgICAgICRmbGRzLCAkdGFib3B0YXJyYXkgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgIC8vdXNlciBwcm9wZXJ0aWVzCiAgICAkZmxkcyA9ICIKCSAgICAgaWQgSSBLRVksCgkgICAgIHVzZXJpZCBJLAoJICAgICB0aXRsZSBDKDEwMCksCgkgICAgIGRhdGEgQygyNTUpCgkgICAgIjsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BlcnRpZXMiLAoJCQkJICAgICAgJGZsZHMsICR0YWJvcHRhcnJheSApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CiAgICAkZGItPkNyZWF0ZVNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BlcnRpZXNfc2VxIiApOwoKICAgIC8vIGZvcmdvdHRlbiBwYXNzd29yZCBzdHVmZgogICAgJGZsZHMgPSAiCgkgICAgIHVzZXJpZCBJIEtFWSwKICAgICAgICAgICAgIGNvZGUgQygyNSksCiAgICAgICAgICAgICBjcmVhdGVkICIuQ01TX0FET0RCX0RUOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdGVtcGNvZGUiLAoJCQkJICAgICAgJGZsZHMsICR0YWJvcHRhcnJheSApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgogICAgLy8gbG9naW4gaGlzdG9yeSBzdHVmZgogICAgJGZsZHMgPSAiCiAgICAgICAgICAgICB1c2VyaWQgSSBLRVksCgkgICAgIHNlc3Npb25pZCBDKDMyKSwKICAgICAgICAgICAgIGFjdGlvbiBDKDMyKSwKICAgICAgICAgICAgIHJlZmRhdGUgIi5DTVNfQURPREJfRFQ7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19oaXN0b3J5IiwKCQkJCSAgICAgICRmbGRzLCAkdGFib3B0YXJyYXkgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgIC8vIHRlbXBsYXRlcwogICAgJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2xvZ2luZm9ybScsICR0aGlzLT5kZmx0X2xvZ2luZm9ybXRlbXBsYXRlKTsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19sb2dvdXRmb3JtJywgJHRoaXMtPmRmbHRfbG9nb3V0Zm9ybXRlbXBsYXRlKTsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19jaGFuZ2VzZXR0aW5nc2Zvcm0nLCAkdGhpcy0+ZGZsdF9jaGFuZ2VzZXR0aW5nc3RlbXBsYXRlKTsgCiAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmRmb3JtJywgJHRoaXMtPmRmbHRfZm9yZ290cGFzc3dvcmR0ZW1wbGF0ZTEpOwogICAgJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkZW1haWxmb3JtJywgJHRoaXMtPmRmbHRfZm9yZ290cGFzc3dvcmR0ZW1wbGF0ZTIpOwogICAgJHRoaXMtPlNldFRlbXBsYXRlKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkdmVyaWZ5Zm9ybScsICR0aGlzLT5kZmx0X2ZvcmdvdHBhc3N3b3JkdGVtcGxhdGUzKTsKCiAgICAvLyBwcmVmZXJlbmNlcwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsIDYpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcsIDIwKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnLCA0KTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCAyMCk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnLCAxODAwKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJywgLTEpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RvX3NtdHBfdmFsaWRhdGVfZW1haWwnLCAwKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlX29uZWdyb3VwJywgMSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsICchJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywgJ2dyZWVuJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsICcnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnLCAnJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ2luJywnJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcsJycpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLDEpOyAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGlibGl0eQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJywgMjApOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJywgMjApOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycsMSk7CgogICAgLy8gRXZlbnRzCiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkxvZ2luJyApOwogICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25Mb2dvdXQnICk7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkV4cGlyZVVzZXInICk7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkNyZWF0ZVVzZXInICk7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkRlbGV0ZVVzZXInICk7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkNyZWF0ZUdyb3VwJyApOwogICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25EZWxldGVHcm91cCcgKTsKCiAgICAvLyBwZXJtaXNzaW9ucwogICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kaWZ5IEZyb250RW5kVXNlciBQcm9wZXJ0aWVzJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzIiApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19sb2dnZWRpbiIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfYmVsb25ncyIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGVydGllcyIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfcHJvcGRlZm4iICk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2Ryb3Bkb3ducyIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBwcm9wbWFwIiApOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogICAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc190ZW1wY29kZSIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfaGlzdG9yeSIgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgIAogICAgJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdXNlcnNfc2VxIiApOwogICAgJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfZ3JvdXBzX3NlcSIgKTsKICAgICRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX3Byb3BlcnRpZXNfc2VxIiApOwoKICAgIC8vIHRlbXBsYXRlcwogICAgJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdmZXVzZXJzX2xvZ2luZm9ybScpOyAKICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgnZmV1c2Vyc19sb2dvdXRmb3JtJyk7IAogICAgJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdmZXVzZXJzX2NoYW5nZXNldHRpbmdzZm9ybScpOyAKICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGZvcm0nKTsKICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZGVtYWlsZm9ybScpOwogICAgJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCdmZXVzZXJzX2ZvcmdvdHBhc3N3b3JkdmVyaWZ5Zm9ybScpOwoKICAgIC8vIHByZWZlcmVuY2VzCiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWluX3Bhc3N3b3JkbGVuZ3RoJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndXNlcl9zZXNzaW9uX2V4cGlyZXMnKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZG9fc210cF92YWxpZGF0ZV9lbWFpbCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfY29sb3InKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdwYWdlaWRfZm9yZ290cGFzc3dkJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncGFnZWlkX2xvZ2luJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2N1cnJlbnRfZ3JvdXAnKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdjdXJyZW50X3JlZ2V4Jyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnY3VycmVudF9saW1pdCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2N1cnJlbnRfc29ydCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2N1cnJlbnRfcHJvcHNlbCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2N1cnJlbnRfcHJvcHZhbCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2FjdGl2ZV90YWInKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycpOwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3NpZ25pbl9idXR0b24nKTsKICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9ucycpOwogICAgCiAgICAvLyBwZXJtaXNzaW9ucwogICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycpOwoKCSAvLyBGRVVzZXJzLXNwZWNpZmljIHBlcm1pc3Npb25zIC4uLiBtYXkgb3IgbWF5IG5vdCBleGlzdAoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBBZGQgVXNlcnMnKTsKCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFVzZXJzJyk7CgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRkVVIFJlbW92ZSBVc2VycycpOwoJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0ZFVSBBZGQgR3JvdXBzJyk7CgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRkVVIE1vZGlmeSBHcm91cHMnKTsKCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IEdyb3VwIEFzc2lnbm1lbnRzJyk7CgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRkVVIFJlbW92ZSBHcm91cHMnKTsKCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdGRVUgTW9kaWZ5IEZyb250RW5kVXNlclByb3BzJyk7CgkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRkVVIE1vZGlmeSBUZW1wbGF0ZXMnKTsKCgogICAgLy8gRXZlbnRzCiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luJyApOwogICAgJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Mb2dvdXQnICk7CiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkV4cGlyZVVzZXInICk7CiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkNyZWF0ZVVzZXInICk7CiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkRlbGV0ZVVzZXInICk7CiAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkNyZWF0ZUdyb3VwJyApOwogICAgJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25EZWxldGVHcm91cCcgKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKIEZyb250RW5kVXNlcnMuIEEgcGx1Z2luIGZvciBDTVMgLSBDTVMgTWFkZSBTaW1wbGUKIENvcHlyaWdodCAoYykgMjAwNC0wNSBieSBSb2JlcnQgQ2FtcGJlbGwgPHJvYkB0ZWNoY29tLmR5bmRucy5vcmc+CgogVHJhbnNsYXRpb25zOgogRnJlbmNoOiBQYXRyaWNpYSBCcnVuLCBodHRwOi8vd3d3LmJydW1hbHNvbHN0aWNlLmNvbQogTm9yd2VnaWFuIChib2ttP2wpOiBSb2dlciAiU3RpZ21hIiBLbnV0c2VuIDxzdGlnbWFzdGVyQGdtYWlsLmNvbT4KCiBDTVMtIENNUyBNYWRlIFNpbXBsZSBpcyBDb3B5cmlnaHQgKGMpIFRlZCBLdWxwICh3aXNoeUB1c2Vycy5zZi5uZXQpCiBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwoKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQoqLwoKICAgICRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKICAgIHN3aXRjaCggJG9sZHZlcnNpb24gKQogICAgICB7CiAgICAgICAgY2FzZSAnMC4xLjAnOgogICAgICAgIGNhc2UgJzAuMS4xJzoKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gcGVybWlzc2lvbnMKICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01vZGlmeSBGcm9udEVuZFVzZXJQcm9wcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZGlmeSBGcm9udEVuZFVzZXIgUHJvcGVydGllcycpOwogICAgICAgICAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmRmb3JtJywgJHRoaXMtPmRmbHRfZm9yZ290cGFzc3dvcmR0ZW1wbGF0ZTEpOwogICAgICAgICAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2ZldXNlcnNfZm9yZ290cGFzc3dvcmRlbWFpbGZvcm0nLCAkdGhpcy0+ZGZsdF9mb3Jnb3RwYXNzd29yZHRlbXBsYXRlMik7CiAgICAgICAgICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZmV1c2Vyc19mb3Jnb3RwYXNzd29yZHZlcmlmeWZvcm0nLCAkdGhpcy0+ZGZsdF9mb3Jnb3RwYXNzd29yZHRlbXBsYXRlMyk7CgogICAgICAgICAgICAvLyBmb3Jnb3R0ZW4gcGFzc3dvcmQgc3R1ZmYKICAgICAgICAgICAgJGZsZHMgPSAiCgkgICAgICAgICAgICAgdXNlcmlkIEkgS0VZLAogICAgICAgICAgICAgICAgICAgICBjb2RlIEMoMjUpLAogICAgICAgICAgICAgICAgICAgICBjcmVhdGVkICIuQ01TX0FET0RCX0RUOwogICAgICAgICAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CiAgICAgICAgICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgICAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfdGVtcGNvZGUiLAoJCQkJICAgICAgICAgICAgICAkZmxkcywgJHRhYm9wdGFycmF5ICk7CiAgICAgICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwogICAgICAgICAgICAvLyBub3RpY2Ugbm8gYnJlYWsKICAgICAgICAgIH0KCiAgICAgICAgY2FzZSAnMC4xLjInOgogICAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsICcnKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsICcnKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicsJycpOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcsJycpOwogICAgICAgICAgICAvLyBub3RpY2Ugbm8gYnJlYWsKICAgICAgICAgIH0KCWNhc2UgJzAuMS4zJzoKCWNhc2UgJzAuMS40JzoKCWNhc2UgJzAuMS41JzoKCWNhc2UgJzAuMS42JzoKCSAgewoJCS8vZHJvcGRvd24gc2VsZWN0IG9wdGlvbnMKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkJJGZsZHMgPSAiCgkJCQkgb3JkZXJfaWQJCUksCgkJCQkgb3B0aW9uX25hbWUJQyg0MCkgTk9UIE5VTEwsCgkJCQkgb3B0aW9uX3RleHQJQyg4MCkgTk9UIE5VTEwsCgkJCQkgY29udHJvbF9uYW1lCUMoNDApIE5PVCBOVUxMOwoJCQkJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTcWwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19kcm9wZG93bnMiLAoJCQkJCQkgICRmbGRzLCAkdGFib3B0YXJyYXkgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCiAgICAgICAgICAgICAgICAvLyBhbmQgY2xlYW51cCBwcm9wZXJ0eSBuYW1lcwogICAgICAgICAgICAgICAgJHEgPSAndXBkYXRlICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfZmV1c2Vyc19wcm9wZGVmbiBzZXQgbmFtZSA9IGxjYXNlKHJlcGxhY2UobmFtZSwiICIsIl8iKSknOwogICAgICAgICAgICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSApOwoJICB9IC8vY2FzZQoJY2FzZSAnMC4xLjcnOgogICAgICAgICAgewoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKICAgICAgICAgICAgICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRjb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc19wcm9wZGVmbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhsZW5ndGggSSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwogICAgICAgICAgfSAvLyBjYXNlCiAgICAgICAgY2FzZSAnMS4wLjAnOgogICAgICAgICAgewogICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLDEpOwogICAgICAgICAgfQogICAgICAgIGNhc2UgJzEuMC4xJzoKICAgICAgICAgIHsKICAgICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnLCAyMCk7CiAgICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJywgMjApOwogICAgICAgICAgfQogICAgICAgIGNhc2UgJzEuMC41JzoKICAgICAgICBjYXNlICcxLjAuNic6CgkgIHsKCSAgICAvLyBFdmVudHMKCSAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkxvZ2luJyApOwoJICAgICR0aGlzLT5DcmVhdGVFdmVudCggJ09uTG9nb3V0JyApOwoJICAgICR0aGlzLT5DcmVhdGVFdmVudCggJ09uRXhwaXJlVXNlcicgKTsKCSAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoICdPbkNyZWF0ZVVzZXInICk7CgkgICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25EZWxldGVVc2VyJyApOwoJICAgICR0aGlzLT5DcmVhdGVFdmVudCggJ09uQ3JlYXRlR3JvdXAnICk7CgkgICAgJHRoaXMtPkNyZWF0ZUV2ZW50KCAnT25EZWxldGVHcm91cCcgKTsKCgkgICAgLy8gUHJlZmVyZW5jZXMKCSAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywxKTsKCgkgICAgLy8gVGFibGVzCgkgICAgJGZsZHMgPSAiCiAgICAgICAgICAgICB1c2VyaWQgSSBLRVksCgkgICAgIHNlc3Npb25pZCBDKDMyKSwKICAgICAgICAgICAgIGFjdGlvbiBDKDMyKSwKICAgICAgICAgICAgIHdoZW4gRFQKICAgICAgICAgICAgIjsgCgkgICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJICAgICR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgkgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ZldXNlcnNfaGlzdG9yeSIsCgkJCQkJICAgICAgJGZsZHMsICR0YWJvcHRhcnJheSApOwoJICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJICB9CiAgICAgICAgY2FzZSAnMS4xLjAnOgoJICB7CgkgICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJICAgICRzcWxhcnJheSA9ICRkaWN0LT5DaGFuZ2VUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9mZXVzZXJzX2Ryb3Bkb3ducyIsCgkJCQkJICAgICJvcHRpb25fdGV4dCBDKDI1NSkgTk9UIE5VTEwiKTsKCSAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCSAgfQogICAgICAgfSAvLyBzd2l0Y2gKPz4=]]></data>
	</file>
	<file>
	  <filename>/Random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBHZW5lcmF0ZSByYW5kb20gY2hhcmFjdGVycy4NCiAqDQogKiBAYXV0aG9yICAgIExhdXJlbnRpdSBUYW5hc2UgPGV4cGVydHBocEB5YWhvby5jb20+DQogKiBAdmVyc2lvbiAgIDEuMQ0KICovDQoNCmNsYXNzIFJhbmRvbQ0Kew0KCS8qKg0KCSAqIFNldCBkZWZhdWx0IGNoYXJhY3RlcnMuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgc3RyaW5nDQogICAgICogQGFjY2VzcyAgIHByaXZhdGUNCiAgICAgKi8NCg0KCXZhciAkX3ZjcnM7DQoNCgkvKioNCgkgKiBJZiBoYXZlIG51bWJlcg0KICAgICAqDQogICAgICogQHZhciAgICAgIGJvb2wNCiAgICAgKiBAYWNjZXNzICAgcHJpdmF0ZQ0KICAgICAqLw0KDQoJdmFyICRfdm51bTsNCg0KCS8qKg0KCSAqIElmIGRvZXNuJ3QgaGF2ZSBudW1iZXINCiAgICAgKg0KICAgICAqIEB2YXIgICAgICBib29sDQogICAgICogQGFjY2VzcyAgIHByaXZhdGUNCiAgICAgKi8NCg0KCXZhciAkX3Zub3Q7DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvcg0KCSAqDQoJICogU2V0IGRlZmF1bHQgdmFsdWVzDQoJICoNCgkgKiBAcGFyYW0gIHN0cmluZyAgJGNycyAgIENoYXJhY3RlcnMgb3V0cHV0DQoJICogQHBhcmFtICBib29sICAgICRudW0gICBXaXRoIG51bWJlcg0KCSAqIEBwYXJhbSAgYm9vbCAgICAkbm90ICAgV2l0aCBub3QgbnVtYmVyDQoJICovDQoNCglmdW5jdGlvbiBSYW5kb20oJGNycyA9IGZhbHNlLCAkbnVtID0gZmFsc2UsICRub3QgPSBmYWxzZSl7DQoJCSR0aGlzLT5fdm51bSA9ICRudW07DQoJCSR0aGlzLT5fdm5vdCA9ICRub3Q7DQoJCWlmKCEkY3JzKXsNCgkJCSR0aGlzLT5fdmNycyA9ICIwMTIzNDU2Nzg5Ii4NCgkJCQkiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLg0KCQkJCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7DQoJCX1lbHNlew0KCQkJJHRoaXMtPl92Y3JzID0gJGNyczsNCgkJCWlmKCgkbnVtIHx8ICRub3QpICYmICEkdGhpcy0+X3JlYygkY3JzLCAkbnVtLCAkbm90KSl7DQoJCQkJaWYoJG51bSAmJiAkbm90KSAkZXJyID0gIm51bWJlciBvciBub3QgbnVtYmVyIjsNCgkJCQllbHNlaWYoJG51bSkgJGVyciA9ICJudW1iZXIiOw0KCQkJCWVsc2VpZigkbm90KSAkZXJyID0gIm5vdCBudW1iZXIiOw0KCQkJCWVsc2UgJGVyciA9ICJjb21wYXJhdGlvbiI7DQoJCQkJdHJpZ2dlcl9lcnJvcigiQ2xhc3MgUmFuZG9tIC0gU3RyaW5nIGlucHV0IFsgIi4kY3JzLiIgXSBkb2Vzbid0IGhhdmUgIi4kZXJyLCBFX1VTRVJfRVJST1IpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogQ29tcGFyZSBpbnB1dCBzdHJpbmcNCgkgKg0KCSAqIEBhY2Nlc3MgIHByaXZhdGUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkc3RyICAgICAgQ2hhcmFjdGVycyBpbnB1dA0KCSAqIEBwYXJhbSAgIGJvb2wgICAgICRudW1iZXIgICBIYXZlIG51bWJlcg0KCSAqIEBwYXJhbSAgIGJvb2wgICAgICRub3RudW0gICBIYXZlIG5vdCBudW1iZXINCgkgKiBAcmV0dXJuICBib29sICAgICBJZiBoYXZlIG51bWJlciBvci9hbmQgbm90IG51bWJlcg0KCSAqLw0KDQoJZnVuY3Rpb24gX3JlYygkc3RyLCAkbnVtYmVyID0gdHJ1ZSwgJG5vdG51bSA9IHRydWUpew0KCQkkY250ID0gc3RybGVuKCRzdHIpOw0KCQkkc2V0MSA9ICRzZXQyID0gZmFsc2U7DQoJCWlmKCRudW1iZXIgfHwgJG5vdG51bSl7DQoJCQlmb3IoJGk9MDskaTwkY250OyRpKyspew0KCQkJCWlmKCRzdHJ7JGl9ID09PSBzdHJ2YWwoaW50dmFsKCRzdHJ7JGl9KSkpICRzZXQxID0gdHJ1ZTsNCgkJCQllbHNlICRzZXQyID0gdHJ1ZTsNCgkJCQlpZigkc2V0MSAmJiAkc2V0MikgYnJlYWs7DQoJCQl9DQoJCQlpZigkbnVtYmVyICYmICRub3RudW0pIHJldHVybiAoJHNldDEgJiYgJHNldDIpOw0KCQkJZWxzZWlmKCRudW1iZXIpIHJldHVybiAkc2V0MTsNCgkJCWVsc2VpZigkbm90bnVtKSByZXR1cm4gJHNldDI7DQoJCQllbHNlIHJldHVybiB0cnVlOw0KCQl9ZWxzZSByZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkgKiBHZW5lcmF0ZSByYW5kb20gY2hhcmFjdGVycw0KCSAqDQoJICogQGFjY2VzcyAgcHVibGljDQoJICogQHBhcmFtICAgaW50ICAgICAgJGxlbiAgIExlbmd0aCBvZiB0aGUgc3RyaW5nIHlvdSB3YW50IGdlbmVyYXRlZA0KCSAqIEByZXR1cm4gIHN0cmluZyAgIFJhbmRvbSBjaGFyYWN0ZXJzDQoJICovDQoNCglmdW5jdGlvbiBnZXQoJGxlbil7DQoJCWlmKCEoaXNfaW50KCRsZW4pICYmICRsZW4gPiAwKSkgcmV0dXJuICR0aGlzLT5fdmNyczsNCgkJJHJldCA9ICIiOw0KCQkkY250ID0gc3RybGVuKCR0aGlzLT5fdmNycyktMTsNCgkJZm9yKCRpPTA7JGk8JGxlbjskaSsrKSAkcmV0IC49ICR0aGlzLT5fdmNyc3tyYW5kKDAsICRjbnQpfTsNCgkJaWYoJHRoaXMtPl92bnVtIHx8ICR0aGlzLT5fdm5vdCkgcmV0dXJuICR0aGlzLT5fcmVjKCRyZXQsICR0aGlzLT5fdm51bSwgJHRoaXMtPl92bm90KSA/ICRyZXQgOiBSYW5kb206OmdldCgkbGVuKTsNCgkJZWxzZSByZXR1cm4gJHJldDsNCgl9DQoNCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addgroup.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBuYW1lfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZ3JvdXBuYW1lfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9ncm91cGRlc2N9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9ncm91cGRlc2N9PC9wPgogIDwvZGl2Pgp7aWYgJHByb3Bjb3VudCA+IDB9Cjxici8+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJICAgICAgICAgICAgICAgIDx0aD57JHByb21wdHRleHR9PC90aD4KCQkJPHRoPnskdHlwZXRleHR9PC90aD4KCSAgICAgICAgICAgICAgICA8dGg+eyRzb3J0b3JkZXJ0ZXh0fTwvdGg+CgkJCTx0aD57JHJlcXVpcmVkdGV4dH08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRwcm9wcyBpdGVtPXByb3BlfQoJCTx0ciBjbGFzcz0ieyRwcm9wLT5yb3djbGFzc30iPgoJCQk8dGQ+eyRwcm9wZS0+bmFtZX08L3RkPgoJCQk8dGQ+eyRwcm9wZS0+cHJvbXB0fTwvdGQ+CgkJCTx0ZD57JHByb3BlLT50eXBlfTwvdGQ+CgkgICAgICAgICAgICAgICAgPHRkPnskcHJvcGUtPnNvcnRvcmRlcn08L3RkPgoJCQk8dGQ+eyRwcm9wZS0+cmVxdWlyZWR9PC90ZD4KCQk8L3RyPgp7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/addprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19Cnskb3JpZ190eXBlfQp7JGVkaXRwcm9wfTxici8+CnskaW5mb21zZzF9PGJyLz4KeyRpbmZvbXNnMn08aHIvPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X25hbWV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9uYW1lfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9wcm9tcHR9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wcm9tcHR9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3R5cGV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90eXBlfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdH08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0fTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdDJ9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dDJ9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/addprop2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CiAgeyRpbnB1dF9uYW1lfQogIHskaW5wdXRfcHJvbXB0fQogIHskaW5wdXRfdHlwZX0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdDF9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dDF9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0Mn08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0Mn08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adduser1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdXNlcm5hbWV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91c2VybmFtZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcGFzc3dvcmR9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wYXNzd29yZH0mbmJzcDt7JGluZm9fcGFzc3dvcmR9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3JlcGVhdHBhc3N3b3JkfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVwZWF0cGFzc3dvcmR9Jm5ic3A7eyRpbmZvX3JlcGVhdHBhc3N3b3JkfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9leHBpcmVzfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZXhwaXJlc19kYXRlcHJlZml4IHRpbWU9JGV4cGlyZXNkYXRlIHN0YXJ0X3llYXI9MjAwMCBlbmRfeWVhcj0yMDQwfSB7aHRtbF9zZWxlY3RfdGltZSBwcmVmaXg9JGV4cGlyZXNfZGF0ZXByZWZpeCB0aW1lPSRleHBpcmVzZGF0ZX08L3A+CiAgPC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPGJyLz4KeyRncm91cHN0aXRsZX0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCB3aWR0aD0iNSUiPnskaWR0ZXh0fTwvdGg+CgkJCTx0aD57JG5hbWV0ZXh0fTwvdGg+CgkJCTx0aD57JGRlc2N0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCQkJPHRkPnskZW50cnktPmRlc2N9PC90ZD4KCQkJPHRkPnskZW50cnktPm1lbWJlcn08L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyR1c2VyX2lkfXskc3VibWl0fXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/adduser2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CntpZiAkY29udHJvbGNvdW50ID4gMH0KICA8Y2VudGVyPgogIDx0YWJsZSB3aWR0aD0iNzUlIj4Ke2ZvcmVhY2ggZnJvbT0kY29udHJvbHMgaXRlbT1jb250cm9sfQogIDx0cj4KICAgIDx0ZD57JGNvbnRyb2wtPmhpZGRlbn08Zm9udCBjb2xvcj0ieyRjb250cm9sLT5jb2xvcn0iPnskY29udHJvbC0+cHJvbXB0fXskY29udHJvbC0+bWFya2VyfTwvZm9udD48L3RkPgogICAgPHRkPnskY29udHJvbC0+Y29udHJvbH08L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KICA8L3RhYmxlPgogIDwvY2VudGVyPgo8YnIvPgp7L2lmfQp7JGhpZGRlbn17JGhpZGRlbjJ9eyRiYWNrfXskc3VibWl0fXskY2FuY2VsfQp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9Cnskc3RhcnRmb3JtfQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+eyRpbmZvX21pbnB3bGVufTwvc3Ryb25nPjwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3B3ZmxkbGVufTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wd2ZsZGxlbn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9taW5wd2xlbn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbWlucHdsZW59PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbWF4cHdsZW59OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X21heHB3bGVufTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3VuZmxkbGVufTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF91bmZsZGxlbn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9taW51bmxlbn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbWludW5sZW59PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbWF4dW5sZW59OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X21heHVubGVufTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgICAgICAgIDxociB3aWR0aD0iNTAlIiBhbGlnbj0ibGVmdCIvPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2lnbmluX2J1dHRvbn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2lnbmluX2J1dHRvbn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgICAgICAgICA8aHIgd2lkdGg9IjUwJSIgYWxpZ249ImxlZnQiLz4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Nlc3Npb250aW1lb3V0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zZXNzaW9udGltZW91dH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zbXRwdmFsaWRhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NtdHB2YWxpZGF0ZX0mbmJzcDs8c3Ryb25nPgogICAgICAgICAgICAgICAgICAgeyRpbmZvX3NtdHB2YWxpZGF0ZX08L3N0cm9uZz48L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hbGxvd19kdXBsaWNhdGVfZW1haWxzfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd19kdXBsaWNhdGVfZW1haWxzfQogICAgICAgICAgICAgICAgICAgPGJyLz48c3Ryb25nPnskaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzfTwvc3Ryb25nPjwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2luc306PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnN9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnN9CiAgICAgICAgICAgICAgICAgICA8YnIvPjxzdHJvbmc+eyRpbmZvX2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnN9PC9zdHJvbmc+PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcmVxdWlyZW9uZWdyb3VwfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9yZXF1aXJlb25lZ3JvdXB9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9uc306PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9uc308L3A+CiAgICAgICAgICAgICAgICAgICA8cD57JGluZm9fZmV1c2Vyc19zcGVjaWZpY19wZXJtaXNzaW9uc308L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kZmx0Z3JvdXB9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RmbHRncm91cH08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9yZXF1aXJlZG1hcmtlcn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVxdWlyZWRtYXJrZXJ9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcmVxdWlyZWRjb2xvcn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmVxdWlyZWRjb2xvcn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9oaWRkZW5tYXJrZXJ9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2hpZGRlbm1hcmtlcn08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9oaWRkZW5jb2xvcn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaGlkZGVuY29sb3J9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgICAgICAgPGhyIHdpZHRoPSI1MCUiIGFsaWduPSJsZWZ0Ii8+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9mb3Jnb3Rwd19wYWdlfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mb3Jnb3Rwd19wYWdlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2V9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NoYW5nZXNldHRpbmdzX3BhZ2V9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbG9naW5fcGFnZX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbG9naW5fcGFnZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9sb2dvdXRfcGFnZX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbG9nb3V0X3BhZ2V9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJeyRpbmZvX3N0YXJ9Cgk8L2Rpdj4KICAgICAgICB7aWYgJGRhdGFfbnVtcmVzZXRyZWNvcmRzICE9ICIifQogCSAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgICAgICAgIDxociB3aWR0aD0iNTAlIiBhbGlnbj0ibGVmdCIvPgogIAkgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgCSAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X251bXJlc2V0cmVjb3Jkc308L3A+CgkgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRkYXRhX251bXJlc2V0cmVjb3Jkc308L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9yZW1vdmUxd2Vla317JGlucHV0X3JlbW92ZTFtb250aH17JGlucHV0X3JlbW92ZWFsbH08L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICB7L2lmfQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH17JGNhbmNlbH08L3A+Cgk8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/admintasks.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9Cnskc3RhcnRmb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXhwb3J0fTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9leHBvcnR9PC9wPgo8L2Rpdj4KPGhyLz4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/edituserprops.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KeyRzdGFydGZvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcHJvcG5hbWV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wcm9wbmFtZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfcHJvcHZhbHVlfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcHJvcHZhbHVlfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbnBhcmFtc317JHN1Ym1pdH08L3A+CiAgPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/forgotpw_templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlMX08L3A+CnskaW5wdXRfdGVtcGxhdGUxfQo8YnIvPgo8cD57JHByb21wdF90ZW1wbGF0ZTJ9PC9wPgp7JGlucHV0X3RlbXBsYXRlMn0KPGJyLz4KPHA+eyRwcm9tcHRfdGVtcGxhdGUzfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZTN9Cjxici8+Cnskc3VibWl0fXskZGVmYXVsdHN9CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/grouplist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+eyRpdGVtY291bnR9Jm5ic3A7eyRncm91cHNmb3VuZH08L3A+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCB3aWR0aD0iNSUiPnskaWR0ZXh0fTwvdGg+CgkJCTx0aD57JG5hbWV0ZXh0fTwvdGg+CgkJCTx0aD57JGRlc2N0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCQkJPHRkPnskZW50cnktPmRlc2N9PC90ZD4KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJPC90cj4Key9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/propertiesform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmICRtZXNzYWdlICE9ICcnfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgo8cD57JHByb3Bjb3VudH0mbmJzcDt7JHByb3BzZm91bmR9PC9wPgp7aWYgJHByb3Bjb3VudCA+IDB9Cjxici8+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRwcm9tcHR0ZXh0fTwvdGg+CgkJCTx0aD57JHR5cGV0ZXh0fTwvdGg+CgkJCTx0aD57JGxlbmd0aHRleHR9PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kcHJvcHMgaXRlbT1wcm9wZX0KCQk8dHIgY2xhc3M9InskcHJvcGUtPnJvd2NsYXNzfSI+CgkJCTx0ZD57JHByb3BlLT5uYW1lfTwvdGQ+CgkJCTx0ZD57JHByb3BlLT5wcm9tcHR9PC90ZD4KCQkJPHRkPnskcHJvcGUtPnR5cGV9PC90ZD4KCQkJPHRkPnskcHJvcGUtPmxlbmd0aH08L3RkPgoJCQk8dGQ+eyRwcm9wZS0+ZWRpdGxpbmt9PC90ZD4KCQkJPHRkPnskcHJvcGUtPmRlbGV0ZWxpbmt9PC90ZD4KCQk8L3RyPgp7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo8L2Rpdj4KPGJyLz4KPHA+eyRhZGRsaW5rfTwvcD4K]]></data>
	</file>
	<file>
	  <filename>/templates/templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZX0KPGJyLz4KeyRzdWJtaXR9eyRkZWZhdWx0c30KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/userlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiA8cCBjbGFzcz0icGFnZXRleHQiPjxzdHJvbmc+eyRwcm9tcHRfZmlsdGVyfTo8L3N0cm9uZz48L3A+CiA8cCBjbGFzcz0icGFnZWlucHV0Ij4mbmJzcDs8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9ncm91cH08L3A+CiA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZpbHRlcl9ncm91cH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF91c2VyZmlsdGVyfTwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmlsdGVyX3JlZ2V4fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3BlcnR5ZmlsdGVyc2VsfTwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmlsdGVyX3Byb3BlcnR5c2VsfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3BlcnR5ZmlsdGVyfTwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmlsdGVyX3Byb3BlcnR5fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2xpbWl0fTwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmlsdGVyX2xpbWl0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiA8cCBjbGFzcz0icGFnZXRleHQiPjxzdHJvbmc+eyRwcm9tcHRfc29ydH06PC9zdHJvbmc+PC9wPgogPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jm5ic3A7PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc29ydGJ5fTwvcD4KIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZmlsdGVyX3NvcnRieX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NlbGVjdH17JGlucHV0X2hpZGRlbn08L3A+PGJyLz4KPC9kaXY+CnskZW5kZm9ybX0KPGhyIHdpZHRoPSI1MCUiIGFsaWduPSJsZWZ0Ii8+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KIDxwPnskbnVtdXNlcnN9Jm5ic3A7eyR1c2Vyc2luZ3JvdXB9PC9wPgogPHA+eyRpdGVtY291bnR9Jm5ic3A7eyR1c2Vyc2ZvdW5kfTwvcD4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPnskdXNlcm5hbWV0ZXh0fTwvdGg+CgkJCTx0aD57JGNyZWF0ZWR0ZXh0fTwvdGg+CgkJCTx0aD57JGV4cGlyZXN0ZXh0fTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+dXNlcm5hbWV9PC90ZD4KCQkJPHRkPnskZW50cnktPmNyZWF0ZWR9PC90ZD4KCQkJPHRkPnskZW50cnktPmV4cGlyZXN9PC90ZD4KCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJPC90cj4JIAp7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQogPHA+eyRhZGRsaW5rfTwvcD4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/UserManipulator.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFVzZXJNYW5pcHVsYXRvcgp7CiAgdmFyICRtb2Q7CgogIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkKICB7CiAgICByZXR1cm4gMDsKICB9CgogIC8qIGV4cGlyeWNvZGUgaXMgYSBzdHJ0b3RpbWUgc3RyaW5nICovCiAgZnVuY3Rpb24gRXhwaXJlVGVtcENvZGVzKCRleHBpcnljb2RlKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIFJlbW92ZVVzZXJUZW1wQ29kZSggJHVpZCApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gR2V0VXNlclRlbXBDb2RlKCAkdWlkICkKICB7CiAgICByZXR1cm4gYXJyYXkoRkFMU0UsIkZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCIpOwogIH0KCiAgZnVuY3Rpb24gU2V0VXNlclRlbXBDb2RlKCAkdWlkLCAkY29kZSApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gU2V0UHJvcGVydHlEZWZuKCAkbmFtZSwgJG5ld25hbWUsICRwcm9tcHQsICRsZW5ndGgsICR0eXBlICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm4oICRuYW1lICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBHZXRQcm9wZXJ0eUdyb3VwUmVsYXRpb25zKCAkdGl0bGUgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIik7CiAgfQoKICBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCAkdWlkICkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncnBpZCApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICB9CgoKICBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRncnBpZCwgJHByb3BuYW1lLCAkc29ydGtleSwgJHZhbCApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICB9CgoKICBmdW5jdGlvbiBEZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIik7CiAgfQoKCiAgZnVuY3Rpb24gRGVsZXRlR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiKTsKICB9CgoKICBmdW5jdGlvbiBMb2dpbiggJHVzZXJuYW1lLCAkcGFzc3dvcmQgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIik7CiAgfQoKCiAgZnVuY3Rpb24gVXNlck1hbmlwdWxhdG9yKCAmJHRoZV9tb2R1bGUgKQogIHsKICAgICR0aGlzLT5tb2QgPSYgJHRoZV9tb2R1bGU7CiAgfQoKCiAgZnVuY3Rpb24gJkdldERiKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPm1vZC0+R2V0RGIoKTsKICB9CgoKICBmdW5jdGlvbiBHZXRNb2R1bGUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+bW9kOwogIH0KCgogIC8vISBDaGVjayBpZiB0aGUgZ3JvdXAgc3BlY2lmaWVkIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbgogIGZ1bmN0aW9uIENoZWNrR3JvdXBQZXJtaXNzaW9uKCAkZ2lkLCAkcGVybSApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBDaGVjayBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uCiAgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbiggJHBlcm0gKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb24KICBmdW5jdGlvbiBDaGVja1VzZXJQZXJtaXNzaW9uQnlVaWQoICR1aWQsICRwZXJtICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvLyEgQXNzaWduIHRoZSB1c2VyIHNwZWNpZmllZCAoYnkgaWQpIHRvIHRoZSBncm91cCBzcGVjaWZpZWQgKGJ5IGlkKQogIC8vIQogIC8vIVxwYXJhbSAgdWlkICBUaGUgdXNlcmlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgLy8hXHBhcmFtICBnaWQgIFRoZSBncm91cCBpZCBmb3IgdGhlIG5ldyBhc3NvY2lhdGlvbgogIC8vIVxyZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAvLyEKICBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIHN1cHBsaWVkIHBhc3N3b3JkCiAgLy8hCiAgLy8hXHBhcmFtICBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdG8gdGVzdC4KICAvLyFccmV0dXJuIHRydWUgaWYgdGhlIHBhc3N3b3JkIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKICAvLyEKICBmdW5jdGlvbiBJc1ZhbGlkUGFzc3dvcmQoICRwYXNzd29yZCApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBDb21wbGV0ZWx5IGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc3VwcGxpZWQgdXNlciBpZAogIC8vIQogIC8vIVRoaXMgbWV0aG9kIGNvbXBsZXRlbHkgZGVsZXRlcyBhbnl0aGluZyBmcm9tIHRoZSBkYXRhYmFzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgdXNlciBpZC4KICAvLyFzcGVjaWZpY2FsbHksIGdyb3VwIGFzc29jaWF0aW9ucywgcHJvcGVydGllcywgYW5kIHRoZSB1c2VyIHJlY29yZCBpdHNlbGYuCiAgLy8hCiAgLy8hXHBhcmFtIHVpZCB0aGUgdXNlcmlkIHRvIGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0bwogIC8vIVxyZXR1cm4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUuCiAgLy8hICAgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgZmFsc2UsIHRoZW4gdGhlIHNlY29uZCBlbGVtZW50IHdpbGwgY29udGFpbiBhbiBlcnJvciBtZXNzYWdlLgogIC8vIQogIGZ1bmN0aW9uIERlbGV0ZVVzZXJGdWxsKCAkdWlkICkKICB7CiAgICByZXR1cm4gYXJyYXkoRkFMU0UsIk5vIGZ1bmN0aW9uIGRlZmluZWQiKTsKICB9CgoKICAvLyEgR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBncm91cAogIC8vIQogIC8vISBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFzc29jaWF0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIAogIC8vISBncm91cCBpZAogIC8vISAgICBpZCA9PiBUaGUgcmVxdWVzdGVkIGdyb3VwIGlkCiAgLy8hICAgIGdyb3VwbmFtZSA9PiBUaGUgbmFtZSBvZiB0aGUgZ3JvdXAKICAvLyEgICAgZ3JvdXBkZXNjID0+IFRoZSBncm91cCBkZXNjcmlwdGlvbgogIC8vIQogIC8vISBccGFyYW0gZ2lkIFRoZSBncm91cCBpZAogIC8vISBccGFyYW0gYXNzb2NpYXRpdmUgYXJyYXksIG9yIGFycmF5IHdpdGggZmlyc3QgZWxlbWVudCBvZiBmYWxzZSwgc2Vjb25kIGVsZW1lbnQgY29udGFpbnMgZXJyb3IgbWVzc2FnZQogIC8vISBccmV0dXJuIGFuIGFzc29jaWF0aXZlIGFycmF5IHdpdGggZ3JvdXAgaW5mbywgb3IgZmFsc2UKICAvLyEKICBmdW5jdGlvbiBHZXRHcm91cEluZm8oICRnaWQgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgR2V0IGluZm9ybWF0aW9uIGFib3V0IGEgdXNlcgogIC8vIQogIC8vISBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFzc29jaWF0aW9uIHdpdGggdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIAogIC8vISB1c2VyIGlkCiAgLy8hICAgaWQgPSB0aGUgcmVxdWVzdGVkIHVzZXIgaWQKICAvLyEgICB1c2VybmFtZSA9IHRoZSB1c2VycyBuYW1lCiAgLy8hICAgcGFzc3dvcmQgPSB0aGUgKGVuY3J5cHRlZCkgdXNlciBwYXNzd29yZAogIC8vISAgIGVtYWlsICAgID0gdGhlIHVzZXJzIGVtYWlsIGFkZHJlc3MKICAvLyEgICBleHBpcmVzICA9IHRoZSB1c2VycyBleHBpcnkgZGF0ZQogIC8vISAgIHN0YXR1cyAgID0gdGhlIHVzZXJzIHN0YXR1cwogIC8vIQogIC8vISBccGFyYW0gdWlkIFRoZSB1c2VyaWQgdG8gaW5xdWlyZSBhYm91dAogIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBjb250YWlucyByZXR1cm4gc3RhdHVzICh0cnVlL2ZhbHNlKSwgdGhlIHNlY29uZCBlbGVtZW50CiAgLy8hICAgIGlzIGVpdGhlciBhbiBhcnJheSBjb250YWluaW5nIHRoZSBkZXRhaWxzIGFib3ZlLCBvciBhbiBlcnJvciBtZXNzYWdlLgogIC8vIQogIGZ1bmN0aW9uIEdldFVzZXJJbmZvKCAkdWlkICkKICB7CiAgICByZXR1cm4gYXJyYXkoRkFMU0UsIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIik7CiAgfQoKCiAgLy8hIEdldCBhIGxpc3Qgb2YgdGhlIHVzZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAKICAvLyEKICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWluaW5nIGEgY29tcGxldGUgc2V0IG9mIHRoZQogIC8vISBpbmZvcm1hdGlvbiBhYm91dCBhbGwgb2YgdGhlIHVzZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAKICAvLyEgCiAgLy8hIFxwYXJhbSBncm91cGlkIHRoZSBkZXNpcmVkIGdyb3VwIGlkCiAgLy8hIFxyZXR1cm4gYW4gYXJyYXkgb2YgdXNlciBpbmZvcm1hdGlvbiAoc2VlIEdldFVzZXJJbmZvKSwgb3IgZmFsc2UKICAvLyEgXHNhIEdldFVzZXJJbmZvCiAgLy8hCiAgZnVuY3Rpb24gR2V0VXNlcnNJbkdyb3VwKCAkZ3JvdXBpZCA9ICcnICkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIEEgZnVuY3Rpb24gdGhhdCB0ZXN0cyB3ZXRoZXIgYSBncm91cCB3aXRoIHRoZSBzcGVmaWZpZWQgaWQgZXhpc3RzCiAgLy8hCiAgLy8hIFxwYXJhbSBnaWQgVGhlIGRlc2lyZWQgZ3JvdXAgaWQKICAvLyEgXHJldHVybiBib29sZWFuCiAgIC8vIQogIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlJRCggJGdpZCApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBBIGZ1bmN0aW9uIHRoYXQgdGVzdHMgd2V0aGVyIGEgZ3JvdXAgd2l0aCB0aGUgbmFtZSBleGlzdHMKICAvLyEKICAvLyEgXHBhcmFtIGdpZCBUaGUgZGVzaXJlZCBncm91cCBuYW1lCiAgLy8hIFxyZXR1cm4gYm9vbGVhbgogICAvLyEKICBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSggJG5hbWUgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgVGVzdCB3ZXRoZXIgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzIHBhc3NlcyB0aGUgcnVsZXMuCiAgLy8hCiAgLy8hIFRoaXMgbWV0aG9kIHdpbGwgdGVzdCBpZiB0aGUgZW1haWwgYWRkcmVzcyBzdXBwbGllZCBtYXRjaGVzIHRoZSAKICAvLyEgc2V0IHJ1bGVzLiAgT3B0aW9uYWxseSwgdGhlIGVtYWlsIGFkZHJlc3MgY2FuIGJlIHZhbGlkYXRlZCB2aWEKICAvLyEgc210cC4KICAvLyEKICAvLyEgXHBhcmFtICBlbWFpbCBUaGUgYWRkcmVzcyB0byB0ZXN0CiAgLy8hIFxwYXJhbSBzbXRwdmFsaWRhdGUgQSBib29sZWFuIGluZGljYXRpbmcgd2V0aGVyIHNtdHAgdmFsaWRhdGlvbiBzaG91bGQgYmUgdXNlZC4KICAvLyEgXHJldHVybiBhbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IGluZGljdWF0ZXMgc3VjY2VzcyBvciBmYWlsdXJlCiAgLy8hICAgIHRoZSBzZWNvbmQgZWxlbWVudCBpcyB0aGUgZXJyb3IgbWVzc2FnZSwgaWYgYW4gZXJyb3Igb2NjdXJyZWQKICAvLyEKICBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwsICRzbXRwdmFsaWRhdGUgPSBmYWxzZSApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogIH0KCgogIC8vISBDaGVjayB3ZXRoZXIgdGhlIHVzZXJuYW1lIHN1cHBsaWVkIHBhc3NlcyB0aGUgcnVsZXMKICAvLyEKICAvLyFccGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lIHRvIGJlIHRlc3RlZAogIC8vIVxyZXR1cm4gYm9vbGVhbiB0cnVlL2ZhbHNlCiAgLy8hCiAgZnVuY3Rpb24gSXNWYWxpZFVzZXJuYW1lKCAkdXNlcm5hbWUgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgUmVtb3ZlIHRoZSBzcGVjaWZpZWQgdXNlciBmcm9tIHRoZSBzcGVjaWZpZWQgZ3JvdXAKICAvLyEKICAvLyFUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBtZW1iZXJzaGlwIG9mIHVzZXIgJHVpZCBmcm9tIGdyb3VwICRnaWQKICAvLyEKICAvLyFccGFyYW0gdWlkCiAgLy8hXHBhcmFtIGdpZAogIC8vIVxyZXR1cm4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGNvbnRhaW5zIGV4aXQgc3RhdHVzIChib29sZWFuKSwgdGhlIHNlY29uZCBlbGVtZW50CiAgLy8hICAgKG9wdGlvbmFsKSByZXR1cm5zIGFuIGVycm9yIG1lc3NhZ2UsIGlmIGFuIGVycm9yIG9jY3VycmVkLgogIC8vIQogIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoICR1aWQsICRnaWQgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICB9CgoKICAvLyEgQSBtZXRob2QgdG8gbW9kaWZ5IGFuIGV4aXN0aW5nIGdyb3VwCiAgLy8hCiAgLy8hXHBhcmFtIGdpZCBBbiBleGlzdGluZyBncm91cCBpZAogIC8vIVxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogIC8vIVxwYXJhbSBkZXNjIFRoZSBuZXcgZ3JvdXAgZGVzY3JpcHRpb24KICAvLyFccmV0dXJuIEFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgdGhlCiAgLy8hICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogIC8vIQogIGZ1bmN0aW9uIFNldEdyb3VwKCAkZ2lkLCAkbmFtZSwgJGRlc2MgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICB9CgoKICBmdW5jdGlvbiBTZXRVc2VyUGFzc3dvcmQoICR1aWQsICRwYXNzd29yZCApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogIH0KCgogIC8vISBNb2RpZnkgYW4gZXhpc3RpbmcgZ3JvdXAKICAvLyEKICAvLyEgXHBhcmFtIHVpZCBUaGUgaWQgb2YgdGhlIGV4aXN0aW5nIHVzZXIKICAvLyEgXHBhcmFtIHVzZXJuYW1lIFRoZSBuZXcgdXNlciBuYW1lCiAgLy8hIFxwYXJhbSBlbWFpbCBUaGUgbmV3IGVtYWlsIGFkZHJlc3MKICAvLyEgXHBhcmFtIHBhc3N3b3JkIFRoZSBuZXcgKHVuZW5jcnlwdGVkKSBwYXNzd29yZAogIC8vISBccGFyYW0gZXhwaXJlcyBUaGUgbmV3IGV4cGlyeSBkYXRlCiAgLy8hIFxwYXJhbSBzdGF0dXMgdGhlIG5ldyBzdGF0dXMKICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogIC8vISAgICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogIC8vIQogIGZ1bmN0aW9uIFNldFVzZXIoICR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyApCiAgewogICAgcmV0dXJuIGFycmF5KEZBTFNFLCJGdW5jdGlvbiBub3QgZGVmaW5lZCIpOwogIH0KCgogIC8vISBTZXQgdGhlIHVzZXIncyBncm91cCBtZW1iZXJzaGlwcyBhYnNvbHV0ZWx5CiAgLy8hCiAgLy8hVGhpcyBtZXRob2QgcmVtb3ZlcyBhbGwgcHJldmlvdXMgZ3JvdXAgYXNzb2NpYXRpb25zLCBhbmQgc2V0cyBuZXcgb25lcwogIC8vIXRvIG1hdGNoIHRob3NlIGluIHRoZSBncnBpZHMgYXJyYXkuCiAgLy8hCiAgLy8hXHBhcmFtIHVpZCBUaGUgdXNlciBpZCB0byBlZGl0CiAgLy8hXHBhcmFtIGdycGlkcyBBbiBhcnJheSBvZiB1c2VyIGlkcyB0byBhc3NvY2lhdGUgd2l0aAogIC8vIVxyZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgLy8hCiAgZnVuY3Rpb24gU2V0VXNlckdyb3VwcyggJHVpZCwgJGdycGlkcyApCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBTZXQgdGhlIHVzZXIncyBwcm9wZXJ0aWVzIGFic29sdXRlbHkuCiAgLy8hCiAgLy8hIFRoaXMgbWV0aG9kIGRlbGV0ZXMgYW55IGV4aXN0aW5nIHVzZXIgcHJvcGVydGllcyBhbmQgc2V0cyB0aGVtIGFjY29yZGluZyB0byB0aGUgcHJvcGVydGllcwogIC8vISBzdXBwbGllZC4KICAvLyEKICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlciBpZCB0byBiZSBlZGl0ZWQKICAvLyEgXHBhcmFtIHByb3BzIEFuIGFycmF5IG9mIEtleT1WYWx1ZSBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgdGhlIHVzZXIgcHJvcGVydGllcy4KICAvLyEgXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogIC8vIQogIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0aWVzKCAkdWlkLCAkcHJvcHMgKSAgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBUZXN0IGlmIHRoZSB1c2VyIGlkIGlzIGFscmVhZHkgdGFrZW4KICAvLyEKICAvLyEgVGVzdHMgaWYgYSB1c2VyIGJ5IHRoYXQgaWQgYWxyZWFkeSBleGlzdHMKICAvLyEKICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAvLyEgXHJldHVybiBib29sZWFuCiAgLy8hCiAgZnVuY3Rpb24gVXNlckV4aXN0c0J5SUQoICR1aWQgKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgUmV0dXJuIGFuIGFycmF5IG9mIHRoZSB1c2VyJ3MgcHJvcGVydGllcwogIC8vIQogIC8vISBSZXR1cm5zIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgdXNlcnMgcHJvcGVydGllcwogIC8vIQogIC8vISBccGFyYW0gdWlkIFRoZSB1aWQgdG8gdGVzdAogIC8vISBccmV0dXJuIGZhbHNlIG9uIGVycm9yLCBvdGhlcndpc2UgYW4gYXJyYXkgb2YgYXNzb2NpYXRpb25zLCBlYWNoIGFzc29jaWF0aW9uCiAgLy8hICAgaGFzIHRoZSBmb2xsb3dpbmcga2V5czoKICAvLyEgICAgICBpZCAgICAgPSBUaGUgcHJvcGVydHkgaWQKICAvLyEgICAgICB1c2VyaWQgPSBUaGUgbWF0Y2hpbmcgdXNlciBpZAogIC8vISAgICAgIHRpdGxlICA9IFRoZSBwcm9wZXJ0eSB0aXRsZQogIC8vISAgICAgIGRhdGEgICA9IFRoZSBwcm9wZXJ0eSBkYXRhCiAgLy8hCiAgZnVuY3Rpb24gR2V0VXNlclByb3BlcnRpZXMoJHVpZCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvLyEgUmV0dXJuIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgZ3JvdXBzIHRoYXQgdGhpcyB1c2VyIGJlbG9uZ3MgdG8KICAvLyEKICAvLyEgUmV0dXJucyBhbiBhcnJheSBvZiBncm91cGluZm8gcmVjb3JkcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBncm91cHMgdGhhdAogIC8vISB0aGlzIHVzZXIgaXMgYXNzb2NpYXRlZCB3aXRoLgogIC8vIQogIC8vISBccGFyYW0gdXNlcmlkIFRoZSB1c2VyaWQgdG8gdGVzdAogIC8vISBccmV0dXJuIGZhbHNlIG9uIGVycm9yLCBvdGhlcndpc2UsIGFuIGFycmF5IG9mIGdyb3VwaW5mbyByZWNvcmRzLgogIC8vIQogIGZ1bmN0aW9uIEdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBBZGQgYSBzaW5nbGUgcHJvcGVydHkgZGVmaW5pdGlvbgogIC8vISBccGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkKICAvLyEgXHBhcmFtIHByb21wdCBUaGUgcHJvbXB0IHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIKICAvLyEgICAgICAgbm90ZSwgdGhpcyB3aWxsIGJlIExhbmdpZmllZAogIC8vISBccGFyYW0gdHlwZSAgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5CiAgLy8hICAgICAgIDAgPSB0ZXh0LCAxID0gY2hlY2tib3gsIDIgPSBlbWFpbAogIC8vISBccGFyYW0gcmVxdWlyZWQgd2V0aGVyIG9yIG5vdCB0aGUgcHJvcGVydHkgaXMgcmVxdWlyZWQKICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogIC8vISAgICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogIC8vIQogIGZ1bmN0aW9uIEFkZFByb3BlcnR5RGVmbiggJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoICkKICB7CiAgICByZXR1cm4gYXJyYXkoRkFMU0UsIk5vdCBJbXBsZW1lbnRlZCIpOwogIH0KCgogIC8vISBEZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zICh1c2Ugd2l0aCBjYXV0aW9uKQogIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbnMoKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiTm90IEltcGxlbWVudGVkIik7CiAgfQoKICAvLyEgR2V0IGEgc2luZ2xlIHByb3BlcnR5IGRlZmluaXRpb24gYnkgbmFtZQogIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbiggJG5hbWUgKQogIHsKICAgIHJldHVybiBGQUxTRTsKICB9CgogIC8vISBHZXQgYW4gYXJyYXkgb2YgcHJvcGVydHkgZGVmaW5pdGlvbnMKICBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm5zKCkKICB7CiAgICByZXR1cm4gYXJyYXkoRkFMU0UsIk5vdCBJbXBsZW1lbnRlZCIpOwogIH0KCgogIC8vISBHZXQgYSBzaW5nbGUgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHVzZXIKICAvLyEKICAvLyEgR2V0IGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLgogIC8vISAKICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gcmV0dXJuCiAgLy8hIFxwYXJhbSBkZWZhdWx0dmFsdWUgQSB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0IGZvciB0aGF0IHVzZXIKICAvLyEgXHJldHVybiBUaGUgcHJvcGVydHkgdmFsdWUsIG9yIGZhbHNlLgogIC8vIQogIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eSgkdGl0bGUsJGRlZmF1bHR2YWx1ZT1mYWxzZSkgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBHZXQgcHJvcGVydHkgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlciBpZAogIC8vIQogIC8vISBccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBzZWFyY2hpbmcgZm9yCiAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIHVzZXJpZCBmb3Igd2hvJ3MgcHJvcGVydHkgd2UgYXJlIHNlYXJjaGluZwogIC8vISBccGFyYW0gZGVmYXVsdHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gaWYgdGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBleGlzdCBmb3IgdGhpcyB1c2VyCiAgLy8hIFxyZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLCBvciBmYWxzZS4KICAvLyEKICBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCAkZGVmYXVsdHZhbHVlPWZhbHNlKSAKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCgogIC8vISBTZXQgYSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdXNlcgogIC8vISAKICAvLyEgU2V0cyBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgLy8hCiAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgcHJvcGVydHkgbmFtZQogIC8vISBccGFyYW0gZGF0YSAgVGhlIHByb3BlcnR5IHZhbHVlCiAgLy8hIFxyZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgLy8hCiAgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwkZGF0YSkgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBTZXQgYSBwcm9wZXJ0eSBmb3IgdGhlIHByb3ZpZGVkIHVzZXJpZAogIC8vIQogIC8vISBTZXRzIGEgcHJvcGVydHkgZXhjbHVzaXZlbHkgZm9yIGEgY2VydGFpbiB1c2VyCiAgLy8hCiAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgcHJvcGVydHkgbmFtZQogIC8vISBccGFyYW0gZGF0YSAgVGhlIHByb3BlcnR5IHZhbHVlCiAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIGRlc2lyZWQgdXNlciBpZAogIC8vIQogIGZ1bmN0aW9uIFNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCRkYXRhLCR1c2VyaWQpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgRGVsZXRlIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50IHVzZXIKICAvLyEKICAvLyEgUmVtb3ZlIGEgcHJvcGVydHkgZnJvbSB0aGUgZGF0YWJhc2UgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAvLyEKICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUKICAvLyEgXHBhcmFtIGFsbCAgIE9wdGlvbmFsbHkgZGVsZXRlIGFsbCBwcm9wZXJ0aWVzIGZvciB0aGlzIHVzZXIgIAogIC8vISBccmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aHdlcmlzZW4KICAvLyEKICBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHkoJHRpdGxlLCRhbGw9ZmFsc2UpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgRGVsZXRlIGEgcHJvcGVydHkgZm9yIGEgc3BlY2lmaWVkIHVzZXIKICAvLyEKICAvLyFccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGRlbGV0ZQogIC8vIVxwYXJhbSB1c2VyaWQgVGhlIGlkIHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZm9yCiAgLy8hXHBhcmFtIGFsbCAob3B0aW9uYWwpIERlbGV0ZSBhbGwgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCB1c2VyaWQuCiAgLy8hXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KICAvLyEKICBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCRhbGw9ZmFsc2UpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgRGVsZXRlIGFsbCBvZiB0aGUgY3VycmVudCB1c2VycyBwcm9wZXJ0aWVzCiAgLy8hCiAgLy8hIFxyZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAvLyEKICBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllcygpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgRGVsZXRlIEFsbCBwcm9wZXJ0aWVzIGZvciBhIHNwZWNpZmllZCB1c2VyIGlkCiAgLy8hCiAgLy8hIFxwYXJhbSB1c2VyaWQKICAvLyEgXHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogIC8vIQogIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKSAKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIENoZWNrIHRoZSBzdXBwbGllZCBwYXNzd29yZCBhbmQgZW5zdXJlIGl0IG1hY2hlcyB0aGUgb25lIGluIHRoZSBkYXRhYmFzZQogIC8vIQogIC8vIVxwYXJhbXMgdXNlcm5hbWUgVGhlIHVzZXJuYW1lIHRvIHRlc3QgZm9yCiAgLy8hXHBhcmFtcyBwYXNzd29yZCBUaGUgcGFzc3dvcmQgdG8gdGVzdAogIC8vIVxyZXR1cm4gdHJ1ZSBpZiBwYXNzd29yZHMgbWF0Y2gsIGZhbHNlIG90aGVyd2lzZS4KICAvLyEKICBmdW5jdGlvbiBDaGVja1Bhc3N3b3JkKCR1c2VybmFtZSwkcGFzc3dvcmQpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgUmV0dXJuIHRoZSB1c2VybmFtZSBvZiB0aGUgY3VycmVudCB1c2VyCiAgLy8hCiAgLy8hIFxyZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdXNlcm5hbWUgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgogIC8vISAgIGlmIG5vb25lIGlzIGxvZ2dlZCBpbiwgdGhlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQKICAvLyEKICBmdW5jdGlvbiBMb2dnZWRJbk5hbWUoKSAKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIFJldHVybiB0aGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY3VycmVudCB1c2VyCiAgLy8hCiAgLy8hIFxyZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgLy8hICAgaWYgbm9vbmUgaXMgbG9nZ2VkIGluLCB0aGVuIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZAogIC8vIQogIGZ1bmN0aW9uIExvZ2dlZEluRW1haWwoKSAKICB7CiAgICByZXR1cm4gIiI7CiAgfQoKCiAgLy8hIExvZ291dCB0aGUgY3VycmVudCB1c2VyCiAgZnVuY3Rpb24gTG9nb3V0KCkgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBFeHBpcmUgYW55IGFuZCBhbGwgdXNlcnMgdGhhdCBoYXZlIGJlZW4gYXdheSBmb3IgdG9vIGxvbmcKICBmdW5jdGlvbiBFeHBpcmVVc2VycygpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIC8vISBSZXR1cm4gdGhlIHVzZXJpZCBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgZnVuY3Rpb24gTG9nZ2VkSW5JZCgpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgVGVzdHMgd2V0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgbG9nZ2VkIGluIG9yIG5vdC4KICBmdW5jdGlvbiBMb2dnZWRJbigpIAogIHsKICAgIGlmICgkdGhpcy0+TG9nZ2VkSW5JZCgpPT1mYWxzZSkgcmV0dXJuIGZhbHNlOyBlbHNlIHJldHVybiB0cnVlOwogIH0KCgogIC8vISBUZXN0IHdldGhlciBhbiBhc3NvY2lhdGlvbiBleGlzdHMgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHVzZXIgYW5kIGdyb3VwCiAgLy8hCiAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIHVzZXJpZCB0byB0ZXN0CiAgLy8hIFxwYXJhbSBncm91cGlkIFRoZSBncm91cGlkIHRvIHRlc3QKICAvLyEgXHJldHVybiB0cnVlIGlmIGFuIGFzc29jaWF0aW9uIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCiAgLy8hCiAgZnVuY3Rpb24gTWVtYmVyT2ZHcm91cCgkdXNlcmlkLCRncm91cGlkKSAKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIFJldHVybiB0aGUgdXNlcm5hbWUgdGhhdCBtYWNoZXMgdGhlIHNwZWNpZmllZCB1c2VyIGlkCiAgLy8hCiAgLy8hXHJldHVybiBUaGUgbWF0Y2hpbmcgdXNlcm5hbWUsIG9yIGZhbHNlCiAgLy8hCiAgZnVuY3Rpb24gR2V0VXNlck5hbWUoJHVzZXJpZCkgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBHZXQgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGlkCiAgLy8hCiAgLy8hXHJldHVybiBFbWFpbCBhZGRyZXNzLCBvciBmYWxzZQogIC8vIQogIGZ1bmN0aW9uIEdldEVtYWlsKCR1c2VyaWQpIAogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgR2V0IHRoZSB1c2VyaWQgb2YgdGhlIHVzZXIgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZQogIC8vIQogIC8vISBccmV0dXJuIFVzZXJJRCwgb3IgZmFsc2UKICAvLyEKICBmdW5jdGlvbiBHZXRVc2VySUQoJHVzZXJuYW1lKSAKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIEFkZCBhIG5ldyBncm91cAogIC8vIQogIC8vISBBZGRzIGEgbmV3IGdyb3VwIHdpdGggdGhlIHN1cHBsaWVkIG5hbWUgYW5kIGRlc2NyaXB0aW9uCiAgLy8hCiAgLy8hIFxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogIC8vISBccGFyYW0gZGVzY3JpcHRpb24gdGhlIGdyb3VwIGRlc2NyaXB0aW9uCiAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgZGVzY3JpcHRpb24gZGVzY3JpYmluZyB0aGUgcmV0dXJuIHN0YXR1cyAKICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZSAKICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgLy8hCiAgZnVuY3Rpb24gQWRkR3JvdXAoICRuYW1lLCAkZGVzY3JpcHRpb24gKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICB9CgoKICAvLyEgQWRkIGEgbmV3IHVzZXIKICAvLyEKICAvLyEgQWRkIHRoZSBzcGVjaWZpZWQgdXNlciB0byB0aGUgZGF0YWJhc2UKICAvLyEKICAvLyEgXHBhcmFtIG5hbWUgVGhlIGRlc2lyZWQgdXNlcm5hbWUKICAvLyEgXHBhcmFtIHBhc3N3b3JkIFRoZSBkZXNpcmVkIHBhc3N3b3JkICh1bmVuY3J5cHRlZCkKICAvLyEgXHBhcmFtIGV4cGlyZXMgVGhlIGV4cGlyeSBkYXRlCiAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgZGVzY3JpcHRpb24gZGVzY3JpYmluZyB0aGUgcmV0dXJuIHN0YXR1cyAKICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZSAKICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IsIG9yIHRoZSB1c2VyaWQgb3RoZXJ3aXNlCiAgLy8hCiAgZnVuY3Rpb24gQWRkVXNlciggJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICB9CgoKICAvLyEgR2V0IHRoZSBncm91cCBuYW1lIGdpdmVuIGEgZ3JvdXAgaWQKICAvLyEKICAvLyEgXHJldHVybiBncm91cCBuYW1lLCBvciBmYWxzZQogIC8vIQogIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ3JvdXBpZCkgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBHZXQgdGhlIGdyb3VwIGRlc2NyaXB0aW9uIGdpdmVuIGEgZ3JvdXAgaWQKICAvLyEKICAvLyEgXHJldHVybiBncm91cCBkZXNjcmlwdGlvbiwgb3IgZmFsc2UKICAvLyEKICBmdW5jdGlvbiBHZXRHcm91cERlc2MoJGdyb3VwaWQpCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8vISBEZWxldGUgdGhlIHNwZWNpZmllZCBncm91cAogIC8vIQogIC8vISBEZWxldGUgdGhlIGdyb3VwIHJlY29yZCBmb3IgdGhlIG1hdGNoaW5kIGlkCiAgLy8hCiAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgZGVzY3JpcHRpb24gZGVzY3JpYmluZyB0aGUgcmV0dXJuIHN0YXR1cyAKICAvLyEgICAgKHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IpLiAgVGhlIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgaXMgYW4gZXJyb3Igc3RyaW5nIGluIHRoZSAKICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgLy8hCiAgZnVuY3Rpb24gRGVsZXRlR3JvdXBGdWxsKCAkaWQgKQogIHsKICAgIHJldHVybiBhcnJheShGQUxTRSwiRnVuY3Rpb24gbm90IGRlZmluZWQiKTsKICB9CgoKICAvLyEgR2V0IGEgbGlzdCBvZiBhbGwgb2YgdGhlIGdyb3VwcywgYW5kIHRoZWlyIGlkJ3MKICAvLyEKICAvLyEgXHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWluaW5nIGdyb3VwIG5hbWVzIGFzIGtleXMsIGFuZCBpZCdzIGFzIHZhbHVlcwogIC8vIQogIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpCiAgewogICAgcmV0dXJuIGFycmF5KCk7CiAgfQoKCiAgLy8hIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGxldGUgbGlzdCBvZiBncm91cHMKICAvLyEKICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhcnJheSBvZiBncm91cGluZm8gYXNzb2NpYXRpb25zLCByZXByZXNlbnRpbmcgYWxsIG9mIHRoZQogIC8vISBncm91cHMgaW4gdGhlIHRhYmxlLgogIC8vIQogIC8vISBccmV0dXJucyBhbiBhcnJheSBvZiBncm91cGluZm8gYXNzb2NpYXRpb25zCiAgLy8hCiAgZnVuY3Rpb24gR2V0R3JvdXBMaXN0RnVsbCgpCiAgewogICAgcmV0dXJuIGFycmF5KCk7CiAgfQoKCiAgLy8hIEdldCB0aGUgZ3JvdXBpZCBnaXZlbiBhIGdyb3VwIG5hbWUKICAvLyEKICAvLyEgXHJldHVybiBncm91cGlkIG9yIGZhbHNlCiAgLy8hCiAgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgoKICAvLyEgR2V0IGEgbGlzdCBvZiB0aGUgZ3JvdXBzIHRoYXQgdGhlIHNwZWNpZmllZCB1c2VyIGJlbG9uZ3MgdG8KICAvLyEKICAvLyEgUmV0dXJuIGEgc3RyaW5nIG9mIGNvbW1hIGRlbGltaXRlZCBncm91cCBuYW1lcywgY29ycmVzcG9uZGluZyB0byB0aGUKICAvLyEgZ3JvdXBzIHRoYXQgdGhlIHVzZXIgaXMgYSBtZW1iZXIgb2YKICAvLyEKICAvLyEgXHJldHVybiBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzLCBvciAibm9uZSIKICAvLyEKICBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHMoJHVzZXJpZCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLy8hIERlbGV0ZSB0aGUgdXNlciB3aXRoIHRoZSBzcGVjaWZpZWQgaWQKICAvLyEgXG5vdGUgVGhpcyBpcyBhIGRlcHJlY2F0ZWQgZnVuY3Rpb24gYXMgaXQgcmVsaWVzIG9uIHRoZSB1c2VyaWQgYmVpbmcgc2V0IGluIHRoZSBfR0VUCiAgLy8hIHZhcmlhYmxlLgogIC8vIQogIGZ1bmN0aW9uIERlbGV0ZVVzZXIoJGlkKSAgCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCn0gLy8gY2xhc3MKCj8+Cg==]]></data>
	</file>
</module>
