<?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>AdvancedContent</name>
	<version>0.6.3</version>
  <mincmsversion>1.6.9</mincmsversion>
	<help><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+PGJyIC8+CjxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPkRpZXNlcyBNb2R1bCBiaWV0ZXQgZWluZW4gd2VpdGVyZW4gSW5oYWx0c3R5cGVuICJFcndlaXRlcnRlciBJbmhhbHQiLjxiciAvPgpNaXQgZGllc2VtIEluaGFsdHN0eXBlbiBrYW5uIGRpZSBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBmbGV4aWJlbCBnZXN0YWx0ZXQgd2VyZGVuLCBpbmRlbSBtYW4gaW0gU2VpdGVuLVRlbXBsYXRlIGRlbiBlaW56ZWxuZW4gSW5oYWx0c2JsJm91bWw7Y2tlbiB3ZWl0ZXJlIFBhcmFtZXRlciBoaW56dWYmdXVtbDtndC48YnIgLz4KSW5oYWx0c2JsJm91bWw7Y2tlIGsmb3VtbDtubmVuIGluIEZvcm0gdmVyc2NoaWVkZW5lciBJbnB1dC1GZWxkZXIgd2llIERyb3Bkb3ducywgTWVocmZhY2hhdXN3YWhsZmVsZGVyIG9kZXIgQ2hlY2tib3hlbiBkYXJnZXN0ZWxsdCB3ZXJkZW4uPGJyIC8+CkRpZSBJbnB1dC1GZWxkZXIgayZvdW1sO25uZW4gd2VpdGVyaGluIGluIGVpZ2VuZW4gVGFicyBhbmdlemVpZ3Qgb2RlciBpbiBHcnVwcGVuIHp1c2FtbWVuZ2VmYXNzdCB3ZXJkZW4uPGJyIC8+CkF1w59lcmRlbSBoYXQgbWFuIGRpZSBNJm91bWw7Z2xpY2hrZWl0LCBTZWl0ZW4gb2RlciBlaW56ZWxuZSBCbCZvdW1sO2NrZSBudXIgZiZ1dW1sO3IgYmVzdGltbXRlIEdydXBwZW4gZGVzIEZyb250RW5kVXNlcnMgTW9kdWxzIGZyZWl6dWdlYmVuLjxiciAvPgpEaWUgRWluc3RlbGx1bmdlbiBkZXMgQmVudXR6ZXJ6dWdyaWZmcyBzaW5kIGF1ZiB1bnRlcmdlb3JkbmV0ZSBTZWl0ZW4gdmVycmViYmFyLjwvcD4KPHA+RGllIFBhcmFtZXRlciBrJm91bWw7bm5lbiBhdcOfZXJkZW0gbWl0IEhpbGZlIHZvbiBlaW5mYWNoZW0gU21hcnR5LVN5bnRheCBkeW5hbWlzY2hlIFdlcnRlIGVudGhhbHRlbi48YnIgLz4KRC5oLiBtYW4ga2FubiB6LkIuIGRhcyBFcmdlYm5pcyBlaW5lcyBiZW51dHplcmRlZmluaWVydGVuIFRhZ3MsIGVpbmVzIFBsdWdpbnMsIGVpbmVzIE1vZHVscyBvZGVyIGVpbmZhY2ggbnVyIGVpbmVzIEdsb2JhbGVuIEluaGFsdHNibG9ja2VzIGFscyBXZXJ0IGYmdXVtbDtyIGVpbmVuIFBhcmFtZXRlciBlaW5zZXR6ZW4gbGFzc2VuLjwvcD4KPHA+PGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gSW4gbWFuY2hlbiBGJmF1bWw7bGxlbiBlbXBmaWVsdCBlcyBzaWNoLCBhbnN0ZWxsZSBkZXMgbm9ybWFsZW4ge2NvbnRlbnR9IFRhZ3MgZGVuIHtBZHZhbmNlZENvbnRlbnR9IFRhZyB6dSBiZW51dHplbi4gKEdyb8OfLSB1bmQgS2xlaW5zY2hyZWlidW5nIGJlYWNodGVuKTwvZW0+PC9wPgo8aDM+V2llIHdpcmQgZXMgdmVyd2VuZGV0PzwvaDM+CjxwPk5hY2ggZGVyIEluc3RhbGxhdGlvbiB3aXJkIGRlciBBZG1pbmlzdHJhdGlvbiBlaW4gd2VpdGVyZXIgTWVuJnV1bWw7cHVua3QgIkVyd2VpdGVydW5nZW4tJmd0O0Vyd2VpdGVydGVyIEluaGFsdCIgaGluenVnZWYmdXVtbDtndC48YnIgLz4KSGllciBrJm91bWw7bm5lbiB2ZXJzY2hpZWRlbmUgRWluc3RlbGx1bmdlbiB2b3JnZW5vbW1lbiB3ZXJkZW4uPGJyIC8+CkJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIHN0ZWh0IG51biBlaW4gd2VpdGVyZXIgSW5oYWx0c3R5cCAiRXJ3ZWl0ZXJ0ZXIgSW5oYWx0IiB6dXIgQXVzd2FobCwgZGVyIGRpZSBGdW5rdGlvbmVuIGRlcyBNb2R1bHMgYmVyZWl0c3RlbGx0LjwvcD4KPHA+TWl0IEhpbGZlIGZvbGdlbmRlciBQYXJhbWV0ZXIgYmVpbSBFcnN0ZWxsZW4gdm9uIEluaGFsdHNibCZvdW1sO2NrZW4gaW0gU2VpdGVuLVRlbXBsYXRlIGsmb3VtbDtubmUgZGllc2UgRnVua3Rpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuOjwvcD4KPGgzPldlbGNoZSBQYXJhbWV0ZXIgc2luZCB2ZXJmJnV1bWw7Z2Jhcj88L2gzPgo8cD5hbGxlIFBhcmFtZXRlciBzaW5kIG9wdGlvbmFsPC9wPgo8cD48c3Ryb25nPlN0YW5kYXJkIFBhcmFtYXRlcjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlFcm0mb3VtbDtnbGljaHQgZGFzIEhpbnp1ZiZ1dW1sO2dlbiBtZWhyZXJlciBJbmhhbHRzYmwmb3VtbDtja2UuIEJlaW0gQmVhcmJlaXRlbiBlaW5lciBTZWl0ZSB3aXJkIGYmdXVtbDtyIGplZGVuIEJsb2NrIGVpbiBlaWdlbmVzIElucHV0LUZlbGQgYW5nZXplaWd0LjxiciAvPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7WndlaXRlciBJbmhhbHRzYmxvY2smcXVvdDt9PC9jb2RlPjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGVyIE5hbWUgZGVzIEluaGFsdHNibG9ja3MgZGFyZiBudXIgQnVjaHN0YWJlbiwgWmFobGVuIHVuZCBVbnRlcnN0cmljaGUgZW50aGFsdGVuLiAoa2VpbmUgTGVlci0gb2RlciBTb25kZXJ6ZWljaGVuLCBVbWxhdXRlIGV0Yy4pLiBBbmRlcmVuZmFsbHMgd2lyZCBkZXIgQmxvY2tuYW1lICZhdW1sO2hubGljaCBkZW0gU2VpdGVuYWxpYXMgZW50cHJlY2hlbmQga29udmVydGllcnQuPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+V2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkLCB3aXJkIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBrZWluIFdZU0lXWUcgRWRpdG9yIGYmdXVtbDtyIGRpZXNlbiBCbG9jayB2ZXJ3ZW5kZXQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+V2VubiBkaWVzZXIgV2VydCBhdWYgZmFsc2UgZ2VzZXR6dCB3aXJkLCB3aXJkIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBudXIgZWluIGVpbmZhY2hlcyBlaW56ZWlsaWdlcyBUZXh0LUlucHV0LUZlbGQgYW5nZXplaWd0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+U3RhYmRhcmRpbmhhbHQgYmVpbSBFcnN0ZWxsZW4gbmV1ZXIgU2VpdGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBFaW5nYWJlYXVmZm9yZGVydW5nIGYmdXVtbDtyIGRlbiBJbmhhbHRzYmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuLiBXZW5uIGRpZXNlciBQYXJhbWV0ZXIgZmVobHQsIHdpcmQgZGVyIHVua29udmVydGllcnRlIFdlcnQgZGVzIFBhcmFtZXRlcnMgYmxvY2sgdmVyd2VuZGV0LjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCVdlaXN0IGRlbiBJbmhhbHQgZGllc2VzIEJsb2NrcyBhdWYgZGVyIEludGVybmV0c2VpdGUgZWluZXIgU21hcnR5IFZhcmlhYmxlbiB6dS48YnIgLz4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGFzc2lnbj0icGFnZWNvbnRlbnQifTxiciAvPgoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSZxdW90OyRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+RXJ3ZWl0ZXJ0ZSBQYXJhbWV0ZXI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSAKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBpbiB3ZWxjaGVyIEZvcm0gZGVyIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gSW5oYWx0c2JsJm91bWw7Y2tlIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBpbiBiZXN0aW1tdGVuIFRhYnMgYW5nZXplaWd0IHdlcmRlbi48YnIgLz4KCQkJCU0mb3VtbDtnbGljaGUgV2VydGUgc2luZCB6LkIuICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtIYXVwdG1lbiZ1dW1sOyZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25lbiZxdW90OyksIG9kZXIgamVkZXIgYW5kZXJlIGJlbGllYmlnZSBXZXJ0IChlcnpldWd0IGF1dG9tYXRpc2NoIGVpbmVuIHdlaXRlcmVuIFRhYikuPGJyIC8+CgkJCQk8ZW0+TWFuIGthbm4gc29taXQgei5CLiBlaW5lIENoZWNrYm94IGltIFRhYiAiT3B0aW9uZW4iIGhpbnp1ZiZ1dW1sO2dlbiBvZGVyIGVpbmVuIGVpZ2VuZW4gVGFiIGVyc3RlbGxlbi48L2VtPi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPk1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIGRpZSBJbmhhbHRzYmwmb3VtbDtja2Ugbm9jaG1hbHMgaW4gd2VpdGVyZSAiVW50ZXJ0YWJzIiBpbm5lcmhhbGIgZGVyICJIYXVwdHRhYnMiIHVudGVydGVpbHQgd2VyZGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBtYW4gbWVocmVyZSBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZWluZW0gRmllbGRzZXQgZ3J1cHBpZXJlbi48YnIgLz4KCQkJCURpZSBHcnVwcGVuIGsmb3VtbDtubmVuIGF1Y2ggYXVmIG1laHJlcmUgVGFicyB2ZXJ0ZWlsdCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIGlzdCBkZXIgQmxvY2sgZGVha3RpdmllcnQuPGJyIC8+CgkJCQlEZWFrdGl2aWVydGUgSW5oYWx0c2JsJm91bWw7Y2tlIHdlcmRlbiB3ZWRlciBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4sIG5vY2ggYXVmIGRlciBJbnRlcm5ldHNlaXRlIGFuZ2V6ZWlndC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVncnVwcGVuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlciBCZW51dHplcmdydXBwZSBlaW50cmFnZW47IG1laHJlcmUgR3J1cHBlbiBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVybiBkZXIgQWRtaW5pc3RyYXRpb24gYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CgkJCQkoTmFtZSBkZXMgQmVudXR6ZXJzIGVpbnRyYWdlbjsgbWVocmVyZSBCZW51dHplciBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiB3ZW5uIGRpZSBQYXJhbWV0ZXIgPHR0PmVkaXRvcl91c2VyczwvdHQ+IHVuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IG5pY2h0IHZlcndlbmRldCB3ZXJkZW4sIGsmb3VtbDtubmVuIGRpZSBCbCZvdW1sO2NrZSB2b24gamVkZW0gQmVudXR6ZXIgYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CglEaWUgV2VydGUgaGFiZW4ga2VpbmVuIEVpbmZsdXNzLCB3ZW5uIGRlciBCZW51dHplciBkZXIgR3J1cHBlICJBZG1pbiIgYW5nZWgmb3VtbDtydC48YnIgLz4KCVVtIGVpbmVtIEJlbnV0emVyIHp1IGVybGF1YmVuIGFsbGUgSW5oYWx0c2JsJm91bWw7Y2tlIHVuYWJoJmF1bWw7bmdpZyB2b24gZGVuIGJlaWRlbiBQYXJhbWV0ZXJuIHp1IGJlYXJiZWl0ZW4sIG11c3MgZGVyIEJlbnV0emVyIGVpbmVyIEdydXBwZSBhbmdlaCZvdW1sO3JlbiwgZGllIGRpZSBCZXJlY2h0aWd1bmcgIk1hbmFnZSBhbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgaGF0LjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+CgkJPHVsPgoJCQk8bGk+CgkJCQlEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZmVzdCwgd2VsY2hlIEJlbnV0emVyZ3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZGllc2VuIEJsb2NrIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBzZWhlbiBkJnV1bWw7cmZlbi48YnIgLz4KCQkJCShJRCBkZXIgQmVudXR6ZXJncnVwcGUgYW5nZWJlbjsgbWVocmVyZSBJRHMgbWl0IEtvbW1hIGdldHJlbm50KTxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgZ2lidCBhbiwgb2IgYW5zdGVsbGUgZGVzIEluaGFsdHNibG9ja3MgZGFzIExvZ2luLUZvcm11bGFyIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwsIHdlbm4gZGllc2VyIEJsb2NrIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgQmVudXR6ZXJncnVwcGVuIGZyZWlnZWdlYmVuIHVuZCBkZXIgQmVzdWNoZXIgbmljaHQgZWluZ2Vsb2dndCBpc3QuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEYXMgRm9ybXVsYXIgd2lyZCBudXIgZWluIGVpbnppZ2VzIE1hbCBhbmdlemVpZ3QuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+R2lidCBhbiwgb2IgZGVyIEJsb2NrIGxlZXIgc2VpbiBkYXJmIG9kZXIgbmljaHQuPGJyIC8+CgkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCB1bmQgZGVyIEluaGFsdCBkZXMgQmxvY2tzIGlzdCBsZWVyLCB3aXJkIGRlciBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGRlZmF1bHQgdmVyd2VuZGV0LjxiciAvPgoJCQlXdXJkZSBkZXIgQmxvY2sgbWl0IGRlbSBQbHVnaW4ge2NvbnRlbnRfaW1hZ2V9IGVyc3RlbGx0LCBmZWhsdCBkaWUgT3B0aW9uICJOaWNodHMiIGltIEJpbGQtRHJvcGRvd24uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNjaGFsdGV0IGRpZSBWZXJhcmJlaXR1bmcgZGVyIFBhcmFtZXRlcndlcnRlIG1pdCBIaWxmZSB2b24gU21hcnR5IGVpbi9hdXMuPGJyIC8+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiB0cnVlIGdlc2V0enQgd2lyZCwgd2lyZCBqZWRlciBQYXJhbWV0ZXIgbWl0IEhpbGZlIGRlciBTbWFydHkgVGVtcGxhdGUgRW5naW5lIHZlcmFyYmVpdGV0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2VpczogPC9zdHJvbmc+IERpZSBXZXJ0ZSBtJnV1bWw7c3NlbiBhbHMgU21hcnR5LVN5bnRheCBnZWtlbm56ZWljaG5ldCB3ZXJkZW4uIEhpZXIgayZvdW1sO25uZW4gYWJlciBuaWNodCBTdGFuZGFyZCBTbWFydHktQmVncmVuemVyICh7Li4ufSkgdmVyd2VuZGV0IHdlcmRlbiwgZGEgZXMgenUgRmVobGVybiBhdWYgZGVyIEludGVybmV0c2VpdGUgZiZ1dW1sO2hydC48YnIgLz4KCQkJCURhaGVyIHdlcmRlbiBzdGF0dGRlc3NlbiBkaWUgWmVpY2hlbiA6OjogYWxzIEJlZ3JlbnplciB2ZXJ3ZW5kZXQuPGJyIC8+PC9lbT4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0thdGVnb3JpZW4mcXVvdDsgbGFiZWw9JnF1b3Q7VyZhdW1sO2hsZW4gU2llIGVpbmUgS2F0ZWdvcmllJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+RWluZSBkZXRhaWxpZXJ0ZXJlIEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0c2Jsb2Nrcy48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlHaWJ0IGFuLCBvYiBlaW4gQmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGVpbi0gKHRydWUpIG9kZXIgYXVzZ2VrbGFwcHQgKGZhbHNlKSBzZWluIHNvbGwuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBpc3QgaW1tZXIgZmFsc2UsIHdlbm4gZGVyIGRlciBQYXJhbWV0ZXIgbm9fY29sbGFwc2U9dHJ1ZSB2ZXJ3ZW5kZXQgd2lyZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwga2FubiBkZXIgQmxvY2tlIG5pY2h0IHp1c2FtbWVuZ2VrbGFwcHQgd2VyZGVuLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBkZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0IGlzdCwgaXN0IGRlciBQYXJhbWV0ZXIgY29sbGFwc2UgYXV0b21hdGlzY2ggaW1tZXIgZmFsc2UuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yZXF1aXJlZDwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJR2lidCBhbiwgb2IgZWluIEJsb2NrIGVpbiBQZmxpY2h0ZmVsZCBpc3QgKHRydWUpIG9kZXIgbmljaHQgKGZhbHNlKS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgQ2hlY2tib3hlbjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQWt0aXZpZXJ0L0RlYWt0aXZpZXJ0IGRpZSBDaGVja2JveCBhbHMgU3RhbmRhcmR3ZXJ0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gJnF1b3Q7MSZxdW90OyA9IGFrdGl2aWVydDsgJnF1b3Q7MCZxdW90OyBkZWFrdGl2aWVydDxiciAvPjwvZW0+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9ja190eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IGRlZmF1bHQ9MX08L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERyb3Bkb3ducy9NZWhyZmFjaGF1c3dhaGw6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aXRlbXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBCZXplaWNobnVuZyBkZXIgZWluemVsbmVuIEVpbnRyJmF1bWw7Z2UuIChtaXQgZWluZW0gYmVzdGltbXRlbiBaZWljaGVuIGdldHJlbm50IC0gU3RhbmRhcmQgaXN0IHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgV2VydGUgZGVyIGVpbnplbG5lbiBFaW50ciZhdW1sO2dlLiAobWl0IGVpbmVtIGJlc3RpbW10ZW4gWmVpY2hlbiBnZXRyZW5udCAtIFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBlcyB3ZW5pZ2VyIFdlcnRlIGFscyBCZXplaWNobnVuZ2VuIGdpYnQsIHdlcmRlbiBkaWUgcmVzdGxpY2hlbiBCZXplaWNobnVuZ2VuIGFscyBXZXJ0ZSB2ZXJ3ZW5kZXQgKHVuZCB1bWdla2VocnQpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBdXNnZXcmYXVtbDtobHRlIFN0YW5kYXJkd2VydGUgKG1pdCBlaW5lbSBiZXN0aW1tdGVuIFplaWNoZW4gZ2V0cmVubnQgLSBTdGFuZGFyZCBpc3QgfCAocGlwZSkpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EYXMgVHJlbm56ZWljaGVuIG1pdCBkZW0gZGllIEJlemVpY2hudW5nZW4sIFdlcnRlIHVuZCBTdGFuZGFyZHdlcnRlIHZvbmVpbmFuZGVyIGdldHJlbm50IHdlcmRlbi4gKFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikKCQk8dWw+CgkJCTxsaT5EaWUgSCZvdW1sO2hlIGRlcyBJbnB1dGZlbGRlcywgd2VubiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gdmVyd2VuZGV0IHdpcmQuPGVtPihTdGFuZGFyZCBpc3QgZGllIEFuemFobCBkZXIgRWludHImYXVtbDtnZSk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBudXIgYmVpIHNlbGVjdF9tdWx0aXBsZQoJCTx1bD4KCQkJPGxpPgoJCQkJV2lyZCBkaWVzZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0LCB3ZXJkZW4gZGllIEVpbnRyJmF1bWw7Z2UgbmljaHQgYWxzIE1laHJmYWNoYXVzd2FobGZlbGQgYW5nZXplaWd0LCBzb25kZXJuIGFscyBlaW5lIExpc3RlIG1pdCBDaGVja2JveGVuLCBkaWUgbmV1IHNvcnRpZXJ0IHdlcmRlbiBrYW5uLjxiciAvPkplZGUgWmVpbGUgZWludGgmYXVtbDtsdCBkaWUgQmV6ZWljaG51bmcgZGVzIEVpbnRyYWdzIHVuZCBlaW5lIENoZWNrYm94IG1pdCBkZW0gV2VydCBkZXMgRWludHJhZ3MuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBFcyB3aXJkIG51ciBkaWUgUmVpaGVuZm9sZ2UgZGVyIDxzdHJvbmc+YXVzZ2V3JmF1bWw7aGx0ZW48L3N0cm9uZz4gRWludHImYXVtbDtnZSBnZXNwZWljaGVydC4gQXVzZ2V3JmF1bWw7aGx0ZSBFaW50ciZhdW1sO2dlIHdlcmRlbiBpbW1lciBhbHMgZXJzdGVzIGFuZ2V6ZWlndC48YnIgLz4KCQkJCU5pY2h0IGF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSBzdGVoZW4gZGFydW50ZXIgaW4gZGVyIFJlaWhlbmZvbGdlLCB3aWUgc2llIGltIFRlbXBsYXRlIGRlZmluaWVydCB3dXJkZW4uPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgRGF0dW1zYmwmb3VtbDtja2U6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgU3R1bmRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVuZGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxMiBvZGVyIDIzIC0gYWJoJmF1bWw7bmdpZyB2b20gUGFyYW1ldGVyIHNob3cyNGgpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2VyZGVuIGRpZSBTdHVuZGVuIGluIDEyaCBBbnplaWdlIG1pdCBBTS9QTSBhbmdlemVpZ3QuIChTdGFuZGFyZCBpcyB0cnVlKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIE1pbnV0ZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzIDEwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQmVnaW5uIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgNTkpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgaXN0LCB3aXJkIGtlaW4gVWhyemVpdC1Ecm9wZG93biBhbmdlemVpZ3QuIChTdGFuZGFyZCBpc3QgdHJ1ZSk8YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEJlaSBmYWxzZSB3aXJkIGFscyBVaHJ6ZWl0IDAwOjAwIFVociBnZXNwZWljaGVydDwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCURhcyBzdHJmdGltZSBEYXR1bXNmb3JtYXQgZiZ1dW1sO3IgZGllIEFuemVpZ2UgYXVmIGRlciBJbnRlcm5ldHNlaXRlLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PgoJCTx1bD4KCQkJPGxpPgoJCQkJRWluZSBMaXN0ZSB2b24gSW5wdXQtSURzLCBkaWUgaW4gZGVuIE1vZHVsZWluc3RlbGx1bmdlbiBlcnN0ZWxsdCB3dXJkZW4uIChtZWhyZXJlIFdlcnRlIG1pdCBLb21tYSBnZXRyZW5udCk8YnIgLz4KCQkJCUVzIGsmb3VtbDtubmVuIGRpZXNlbGJlbiBJRHMgbWVocmZhY2ggdmVyd2VuZGV0IHdlcmRlbi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW4gVHJlbm56ZWljaGVuIGYmdXVtbDtyIGRpZSBlaW56ZWxuZW4gV2VydGUgZGVzIGpld2VpbGlnZW4gTXVsdGlJbnB1dHMuPGJyIC8+CgkJCQlTdGFuZGFyZCBpc3QgJnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tJmd0OyZxdW90OwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbiBUcmVubnplaWNoZW4gZiZ1dW1sO3IgZGllIGVpbnplbG5lbiBNdWx0aUlucHV0cy48YnIgLz4KCQkJCURlZmF1bHQgaXMgJnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxsaW1pdGVyIC0tJmd0OyZxdW90OwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxwPjxzdHJvbmc+V2FzIGlzdCBlaW4gbXVsdGlfaW5wdXQ/PC9zdHJvbmc+PC9wPgoJCTxwPkVpbiBtdWx0aV9pbnB1dCBpc3QgZWluIEJsb2NrLCBkZXIgYXVzIG1laHJlcmVuIElucHV0ZmVsZGVybiBiZXN0ZWhlbiBrYW5uLjxiciAvPgoJCURpZXNlIGsmb3VtbDtubmVuIGluIGRlbiBNb2R1bGVpbnN0ZWxsdW5nZW4gZmVzdGdlbGVndCB3ZXJkZW4uIERhYmVpIGdpbHQgZiZ1dW1sO3IgamVkZW4gbXVsdGlfaW5wdXQgZGVyc2VsYmUgU3ludGF4IHdpZSBpbiBlaW5lbSBTZWl0ZW50ZW1wbGF0ZSBiZWltIEVyc3RlbGxlbiBlaW5lcyBJbmhhbHRzYmxvY2tzLjxiciAvPgoJCU11bHRpSW5wdXRzIGsmb3VtbDtubmVuIHZlcndlbmRldCB3ZXJkZW4sIHVtIHZlcnNjaGllZGVuZSBXZXJ0ZSBpbiBlaW5lbSBlaW56aWdlbiBJbmhhbHRzYmxvY2sgenUgc3BlaWNoZXJuLCB3b2JlaSBmJnV1bWw7ciBqZWRlbiBXZXJ0IHVudGVyc2NoaWVkbGljaGUgSW5wdXRmZWxkZXIgdmVyd2VuZGV0IHdlcmRlbiBrJm91bWw7bm5lbi48YnIgLz4KCQlEaWVzZSBCbCZvdW1sO2NrZSBrYW5uIG1hbiB6LkIuIHZlcndlbmRlbiwgdW0gZWluZSBMaXN0ZSBtaXQgTW9kdWxlbiB1bmQgenVnZWgmb3VtbDtyaWdlbiBQYXJhbWV0ZXJuIGFuenV6ZWlnZW4uPGJyIC8+CgkJQmVpc3BpZWwgZWluZXMgTXVsdGlJbnB1dHMgaW0gU2VpdGVudGVtcGxhdGU6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1NlaXRlbm1vZHVsZSZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9CgkJPC9jb2RlPgoJCTwvcHJlPgoJCTxwPkJlaXNwaWVsIGYmdXVtbDtyIGVpbmVuIE11bHRpSW5wdXQgZGVyICZ1dW1sO2JlciBkaWUgTW9kdWxlaW5zdGVsbHVuZyBlcnN0ZWxsdCB3ZXJkZW4ga2FubiAoTmFtZT0mcXVvdDttb2R1bGUmcXVvdDspOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5XaWUgc2llaHQgZGFzIG51biBiZWltIEJlYXJiZWl0ZW4gZWluZXIgU2VpdGUgYXVzPzwvcD4KCQk8cD5FcyB3aXJkIGVpbiBGaWVsZHNldCBtaXQgZGVyIExlZ2VuZGUgJnF1b3Q7U2VpdGVubW9kdWxlJnF1b3Q7IGFuZ2V6ZWlndC4gPGJyIC8+CgkJSW4gZGllc2VtIEZpZWxkc2V0IHdpcmQgZGVyIE11bHRpSW5wdXQgJnF1b3Q7bW9kdWxlJnF1b3Q7IHZpZXJtYWwgYW5nZXplaWd0LjxiciAvPgoJCUQuaC4gZXMgZ2lidCB2aWVyIFplaWxlbiBtaXQgamUgendlaSBJbnB1dGZlbGRlcm4uIEVpbiBEcm9wZG93biB1bmQgZWluIGVpbnplaWxpZ2VzIFRleHRpbnB1dC48L3A+CgkJPHA+V2FzIHdpcmQgZ2VzcGVpY2hlcnQ/PC9wPgoJCTxwPkRhcyBNb2R1bCBzcGVpY2hlcnQgZGllIFdlcnRlIGFscyBlaW5lbiBlaW56ZWxuZW4gSW5oYWx0c2Jsb2NrLiBEYWJlaSB3ZXJkZW4gZGllIGVpbnplbG5lbiBJbnB1dGZlbGRlciBtaXQgZGVtIGlucHV0X2RlbGltaXRlciB2b25laW5hbmRlciBnZXRyZW5udCB1bmQgZGVyZW4gV2VydCBtaXQgZGVtIGlucHV0X3ZhbHVlX2RlbGltaXRlci48YnIgLz4KCQlOZWhtZW4gd2lyIG1hbCBhbiwgZXMgd3VyZGUgZGFzIE5ld3Ntb2R1bCB2aWVybWFsIGF1c2dldyZhdW1sO2hsdCwgamVkb2NoIG1pdCB1bnRlcnNjaGllZGxpY2hlbiBQYXJhbWV0ZXJuIHdpZSB6LkIuIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+CgkJSW4gZGVyIERhdGVuYmFuayB3aXJkIGZvbGdlbmRlcyBmJnV1bWw7ciBkaWVzZW4gQmxvY2sgZ2VzcGVpY2hlcnQ6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIxIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMiImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjMiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSI0IgoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5JbSBTZWl0ZW50ZW1wbGF0ZSBrYW5uIG1hbiBudW4gZGVuIEluaGFsdCBkaWVzZXMgQmxvY2tzIGFuaGFuZCBkZXIgVHJlbm56ZWljaGVuIGF1ZnRlaWxlbiB1bmQgZGllIGF1c2dldyZhdW1sO2hsdGVuIE1vZHVsZSBpbmtsLiBpaHJlciBqZXdlaWxpZ2VuIFBhcmFtZXRlciBhdWZydWZlbi48L3A+CgkJPHA+S29tcGxldHRlcyBCZWlzcGllbDo8L3A+CgkJPHByZT4KCQk8Y29kZT4KCQl7KiBJbmhhbHRzYmxvY2sgZXJzdGVsbGVuIHVuZCBkZXIgVmFyaWFibGUgJG1vZHVsZXMgenV3ZWlzZW4gKn0KCQl7Y29udGVudCBibG9jaz0mcXVvdDttZWluZV9zZWl0ZW5tb2R1bGUmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7TW9kdWxlLE1vZHVsZSxNb2R1bGUsTW9kdWxlJnF1b3Q7IGFzc2lnbj0mcXVvdDttb2R1bGVzJnF1b3Q7fQoJCQoJCXsqIEluaGFsdCBkZXIgVmFyaWFibGUgJG1vZHVsZXMgaW4gZWluIEFycmF5IGF1ZnRlaWxlbiB1bmQgaW4gZGVyIFZhcmlhYmxlICRtb2R1bGVzIHNwZWljaGVybjsgc29taXQgaGFiZW4gd2lyIGRpZSBNdWx0aUlucHV0cyAqfQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9JnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZXN9CgkJCgkJeyogamVkZW4gTXVsdGlJbnB1dCBkdXJjaGdlaGVuICp9CgkJe2ZvcmVhY2ggZnJvbT0kbW9kdWxlcyBpdGVtPSZxdW90O21vZHVsZSZxdW90O30KCQkJe2lmICRtb2R1bGUgIT0gJyd9CgkJCQoJCQkJeyogZGllIFdlcnRlIGRlcyBNdWx0aUlucHV0cyBpbiBlaW4gQXJyYXkgYXVmdGVpbGVuOyBzb21pdCBoYWJlbiB3aXIgTW9kdWxuYW1lIHVuZCBQYXJhbWV0ZXIgKn0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0mcXVvdDsmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDsmcXVvdDt8ZXhwbG9kZTokbW9kdWxlfQoJCQkJCgkJCQl7aWYgJG1vZHVsZV9pdGVtc1swXSAhPSAmIzAzOTsmIzAzOTt9CgkJCQkKCQkJCQl7KiBNb2R1bCBhdWZydWZlbiAqfQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDonY21zX21vZHVsZSBtb2R1bGU9Iid8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiciICd8Y2F0OiRtb2R1bGVfaXRlbXNbMV18Y2F0OiRzbWFydHkucmRlbGltfQoJCQkJCXtlbHNlfQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JyInfGNhdDokc21hcnR5LnJkZWxpbX0KCQkJCQl7L2lmfQoJCQkJCQoJCQkJey9pZn0KCQkJCQoJCQl7L2lmfQoJCQoJCXsvZm9yZWFjaH0KCQk8L2NvZGU+CgkJPC9wcmU+Cgk8L2xpPgo8L3VsPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5EaWVzZXMgTW9kdWwgYmlldGV0IGtlaW5lIGtvbW1lcnppZWxsZSBVbnRlcnN0JnV1bWw7dHp1bmcuIEVzIGdpYnQgamVkb2NoIGVpbmlnZSBNJm91bWw7Z2xpY2hrZWl0ZW4sIEhpbGZlIHp1IGZpbmRlbjo8L3A+Cjx1bD4KCTxsaT5EaWUgSG9tcGFnZSBkZXMgUHJvamVrdGVzIGlzdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLyI+aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi88L2E+PC9saT4KCTxsaT5XZWl0ZXJlIERpc2t1c3Npb25lbiBnaWJ0IGVzIGF1w59lcmRlbSBpbiBkZW4gQ01TIE1hZGUgU2ltcGxlIEZvcmVuOjxiciAvPgoJPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGUiPmh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLmRlPC9hPjxiciAvPgoJPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5odHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmc8L2E+PC9saT4KPC91bD4KPGJyIC8+CjxwPkJpdHRlIG1lbGRlbiBTaWUgRmVobGVyIG9kZXIgVmVyYmVzc2VydW5nc3ZvcnNjaGwmYXVtbDtnZSBhdWYgZGVyIFByb2plY3QgSG9tZXBhZ2UuPC9wPgo8aDM+Q29weXJpZ2h0IHVuZCBMaXplbno8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAtMjAxMSwgR2VvcmcgQnVzY2ggKE5hTikgPGEgaHJlZj0ibWFpbHRvOmdlb3JnLmJ1c2NoQGdteC5uZXQiPiZsdDtnZW9yZy5idXNjaEBnbXgubmV0Jmd0OzwvYT4uIEFsbGUgUmVjaHRlIHZvcmJlaGFsdGVuLjwvcD4KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHVudGVyIGRlciA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4gdmVyJm91bWw7ZmZlbnRsaWNodC4gU2llIG0mdXVtbDtzc2VuIGRpZXNlciBMaXplbnogenVzdGltbWVuLCBiZXZvciBTaWUgZGFzIE1vZHVsIHZlcndlbmRlbi48L3A+CjxwPgoJTGF1dCBkZW4gTnV0enVuZ3NiZXN0aW1tdW5nZW4gZGVyIEdQTCB3aXJkIGRpZXNlIFNvZnR3YXJlIHNvIHZlciZvdW1sO2ZmZW50bGljaHQgd2llIHNpZSBpc3QuPGJyIC8+CglTaWUgZXJoZWJ0IGtlaW5lcmxlaSBBbnNwcnVjaCBhdWYgZWlud2FuZGZyZWllIEZ1bmt0aW9uLjxiciAvPgoJRGFzIE1vZHVsIHd1cmRlIGVyc3RlbGx0LCBpbiBkZXIgSG9mZm51bmcgbiZ1dW1sO3R6bGljaCB6dSBzZWluLjxiciAvPgoJRXMgYmVzdGVodCBrZWluZXJsZWkgR2FyYW50aWUgYXVmIGVpbmVuIGVpbndhbmRmcmVpZW4gTnV0emVuLjxiciAvPgoJQml0dGUgbGVzZW4gU2llIGRpZSBOdXR6dW5nc2JlZGluZ3VuZ2VuIGYmdXVtbDtyIGF1c2YmdXVtbDtocmxpY2hlIEluZm9ybWF0aW9uZW4uCjwvcD4KPGJyIC8+PGgzPlBhcmFtZXRlcjwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIERpZXNlciBQYXJhbWV0ZXIgbGVndCBkaWUgU3ByYWNoZSBmZXN0LCBkaWUgdm9tIE1vZHVsIGYmdXVtbDtyIGRpZSBBdXNnYWJlIGF1ZiBkZXIgV2Vic2VpdGUgdmVyd2VuZGV0IHdpcmQuIERpZXMgd2lyZCBqZWRvY2ggbmljaHQgdm9uIGFsbGVuIE1vZHVsZW4gdW50ZXJzdCZ1dW1sO3R6dCBiencuIGJlbiZvdW1sO3RpZ3QuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEdlb3JnIEJ1c2NoIChOYU4pPGJyIC8+PGJyIC8+VmVyc2lvbiA6IDAuNi4zPGJyIC8+PGJyIC8+JkF1bWw7bmRlcnVuZ3N2ZXJsYXVmOjxiciAvPjxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij48Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNtZCIgdmFsdWU9Il9zLXhjbGljayIgLz4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaG9zdGVkX2J1dHRvbl9pZCIgdmFsdWU9IkZBMkQzRlBMU1RBS0oiIC8+CjxpbnB1dCB0eXBlPSJpbWFnZSIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2VuX0dCL2kvYnRuL2J0bl9kb25hdGVfTEcuZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJQYXlQYWwgLSBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIC8+CjxpbWcgYWx0PSIiIGJvcmRlcj0iMCIgc3JjPSJodHRwczovL3d3dy5wYXlwYWwuY29tL2RlX0RFL2kvc2NyL3BpeGVsLmdpZiIgd2lkdGg9IjEiIGhlaWdodD0iMSIgLz4KPC9mb3JtPjwvZGl2PjxiciAvPgo8cD48c3Ryb25nPk1vZHVsZSByZWxlYXNlczwvc3Ryb25nPi4uLjwvcD4KPHVsPgoJPGxpPjxwPjxzdHJvbmc+MC42LjMgKE1hciAyMDExKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFsjNTczNF0gUGFyYW1ldGVyIGJsb2NrX2dyb3VwIGlzIG5vdCBrbm93biBieSBtb2R1bGUgQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDE0XSBoZWFkZXIgcHJvYmxlbSB3aXRoIG11bHRpLWlucHV0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDM4XSBjb250ZW50X2ltYWdlIHJlc3BlY3RpdmVseSBibG9ja190eXBlPSJpbWFnZSIgZG9lc24ndCB3b3JrPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDM5XSB0ZW1wbGF0ZSBjYW4ndCBiZSBzd2l0Y2hlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjA2MV0gaXNzdWUgd2l0aCB0aGUgcmVkaXJlY3QgZm9yIGZldSBub24gbWF0Y2g8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwOTVdIFBhcmFtZXRlciBzb3J0YWJsZSBpcyBub3Qga25vd24gPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTEgKHJlZGlyZWN0IGlmIGZyb250ZW5kIHVzZXIgaGFzIG5vIGFjY2VzIHRvIHRoYXQgcGFnZSBkaWQgbm90IHdvcmsgcHJvcGVybHkpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3M8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBjb2xsYXBzZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gdGhpcyBtb2R1bGUgbm93IG9ubHkgd29ya3Mgd2l0aCBDTVNtcyAxLjYuOSB1cCB0byAxLjguMjwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4yIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBtaW5vciBidWdmaXggKHNob3dlZCB0YWJzIG9mIHByZXZpb3VzIHRlbXBsYXRlIHdoZW4gdGVtcGxhdGUgd2FzIGNoYW5nZWQpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IGJ1Z2ZpeGVzIGZvciBDTVNtcyAxLjk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYmxvY2tfdHlwZSBtdWx0aV9pbnB1dDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIFJlbW92ZWQgZmlsZSBwaWNrZXIgKGFuZCBhc3NvY2lhdGVkIGJsb2NrX3R5cGVzIGltYWdlL2ZpbGUpIC0gdXNlIEdCRmlsZVBpY2tlciBpbnN0ZWFkLjwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNSAoU2VwdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI5MiAobWVtb3J5IGlzc3VlKTwvcD48L2xpPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMCAodXJsb25seSBub3Qgd29ya2luZyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTEgKGltYWdlIHBhdGhzIG5vdCBzdG9yZWQgJ2NvcnJlY3RseScpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIHBhcmFtcyBleGNsdWRlX3ByZWZpeCwgaW5jbHVkZV9wcmVmaXgsIGV4Y2x1ZGVfc3VmaXgsIGluY2x1ZGVfc3VmaXg8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjUzIChUZXh0IGlucHV0IHRvIGRlZmluZSBhZGQgcGFyYW1zIHRvIHJlZGlyZWN0IGZ1bmN0aW9uKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MSAocHV0IEZldUFjY2VzcyBpbiBCbG9ja3RhYik8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gQWRkZWQgbmV3IHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoZSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtIGZpbHRlciAodXNlIG5ldyBwYXJhbXMgaW5zdGVhZCk8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcGFyYW0gZGlyIG9mIGJsb2NrIHR5cGUgZmlsZS9pbWFnZSBuZWVkcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXIgb25seSAodGhlcmUgaXMgbm8gaW1hZ2UgdXBsb2FkcyBkaXIgdXNlZCBhbnltb3JlKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSAjNTE1MTogZml4ZWQgc3R5bGVzaGVldCBpc3N1ZSB3aXRoIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIG9mIGNvbnRlbnQgYmxvY2tzIGluIElFL1NhZmFyaS48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSAjNTE2MjogUEhQIHdhcm5pbmdzIGlmIGJhY2tlbmQgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICJNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MiIG9wZW4gYW4gYWR2YW5jZWQgY29udGVudCBwYWdlIGFuZCBtdWx0aXBsZSBjb250ZW50IGJsb2NrcyBvZiBzYW1lIG5hbWUgd2VyZSB1c2VkIGluIHRlbXBsYXRlLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGZldSBhY2Nlc3MgZGlkIG5vdCB3b3JrLjwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVsZXRlIiB0byBsZXQgdXNlcnMgZGVsZXRlIGZpbGVzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAiTW9kaWZ5IEZpbGVzIjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJjcmVhdGVfZGlycyIgdG8gbGV0IHVzZXJzIGNyZWF0ZV9kaXJzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAiTW9kaWZ5IEZpbGVzIjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIG5ldyBibG9ja3R5cGUgIm5vdGUiIHRvIGNyZWF0ZSBzb21lIHNpbmdsZSBub3RlcyBmb3IgeW91ciBlZGl0b3JzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9mIEZpbGVNYW5hZ2VyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYmxvY2sgb2YgdHlwZSBmaWxlIG9yIGltYWdlIHN0b3JlcyByZWxhdGl2ZSB1cmwgbm93PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNCAoSnVseSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+SW1wb3J0YW50IG5vdGljZTo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAidHlwZSIgdG8gImJsb2NrX3R5cGUiIHNpbmNlIGl0IGludGVyZmVyZXMgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSAjNTEwMTogcGFnZV90YWIgIm9wdGlvbnMiIHdhcyBzaG93biB0byB1c2VycyB3aXRoIG5vIHBlcm1pc3Npb24gdG8gZWRpdCBwYWdlIG9wdGlvbnMgaWYgYSBjb250ZW50IGJsb2NrIHdhcyBhc3NpZ25lZCB0byB0aGF0IHRhYi48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgbWltZS10eXBlIGlzc3VlIChhZGRlZCBwcmVmZXJlbmNlIHRvIHRvZ2dsZSBtaW1lLXR5cGUgdXNhZ2Ugb24vb2ZmKTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIHBhdGggaXNzdWUgd2hlcmUgdGh1bWJuYWlscyB3ZXJlIG5vdCBzaG93bjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBvdGhlciBtaW5vciBidWdmaXhlczwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJzaG93X2Nsb2NrIiB0byBlbmFibGUvZGlzYWJsZSB0aGUgdGltZSBkcm9wZG93biBvZiBibG9ja3R5cGVzICJkYXRlIiBpbiBiYWNrZW5kPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRhdGVfZm9ybWF0IiB0byBmb3JtYXQgdGltZXN0YW1wIG9mIGJsb2NrdHlwZXMgImRhdGUiIGluIGZyb250ZW5kPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlc2NyaXB0aW9uIjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJ1bGsgZnVuY3Rpb24gdG8gc2V0IGFsbCBwYWdlcyB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuNCAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MDQ1OiBXaGVuIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgLT4gQWR2YW5jZWQgQ29udGVudCBsb3RzIG9mIFBIUCBlcnJvcnM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSAjNTA1NjogcGFnZV90YWJzIG5vdCB3b3JraW5nIGZvciB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQ29udGVudCI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSAjNTA3MzogaW5jb3JyZWN0IGRpc3BsYXkgb2YgZmlsZXMgd2hlbiBvcGVuaW5nIGZpbGVwaWNrZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW5vciBidWcgd2hlcmUgdGhlIG9wdGlvbiAiYWxsb3dfbm9uZSIgb2YgY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlIHdhcyBub3Qgc2hvd24gd2hlbiB0ZW1wbGF0ZSBoYXMgYmVlbiBlZGl0ZWQ8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgZmlsZW1hbmFnZW1lbnQgYW5kIHVwbG9hZCBmdW5jdGlvbnMgdG8gY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYnJlYWRjdW1icyB0byBmaWxlcGlja2VyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIG1pbWUgdHlwZSBjaGVja2luZyB0byBnZXQgZmlsZSB0eXBlPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcmF3dXJsZW5jb2RlIGluIHNyYyBhdHRyaWJzIHRvIGRpc3BsYXkgaW1hZ2VzIHdpdGggd2VpcmQgZmlsZW5hbWVzLjwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPm1pc2NlbGxhbmVvdXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgT09QIHN0dWZmIChwcml2YXRlL3B1YmxpYy9wcm90ZWN0ZWQpIHRvIGdhaW4gbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggUEhQNDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGNoYW5nZWQgYWpheCBmdW5jdGlvbnMgdG8gcmV0dXJuIHhtbCB2YWx1ZXM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMyAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+Cgk8dWw+CgkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJPHVsPgoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+CgkJCQk8bGk+PHA+LSB1bnN1Ym1pdHRlZCBjb250ZW50IGdvdCBsb3N0IGlmIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCTwvdWw+CgkJPC9saT4KCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQk8dWw+CgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPgoJCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aW1lcGlja2VyOyByZXBsYWNlZCBieSBhIHNpbXBsZSBkcm9wZG93bjwvcD48L2xpPgoJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X2ltYWdlfTwvcD48L2xpPgoJCQk8L3VsPgoJCTwvbGk+Cgk8L3VsPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGNoYW5naW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgY2hhbmdpbmcgdGVtcGxhdGUgY2F1c2VkIGZhdGFsIGVycm9yczwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHByZXZpZXcgdGFiPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlLWFkZGVkIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gdG8gdG9nZ2xlIGNvbnRlbnQgYmxvY2tzIGluIGJhY2tlbmQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW1zIHNlbGVjdGVkL2NoZWNrZWQ7IHVzZSBwYXJhbSBkZWZhdWx0IGluc3RlYWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYmxvY2sgaWRzIHdpbGwgYmUgY29udmVydGVkIGZyb20gYmxvY2sgbmFtZSB1c2luZyBjb3JlIGZ1bmN0aW9uIG11bmdlX3N0cmluZ190b191cmwgKHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJzLCB3aGl0ZXNwYWNlcywgdW1sYXV0cyBldGMuKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAidmFsdWVzIiBpcyB1c2VkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHNvbWUgdGVtcGxhdGUgdmFycyBvZiB0aGUgZnJvbnRlbmQgdG8gYmUgYWxzbyBhY2Nlc3NpYmxlIGluIGJhY2tlbmQgKGUuZy46ICRwYWdlX2FsaWFzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiYWxsb3dfbm9uZSIgdG8gYWxsIGNvbnRlbnQgYmxvY2sgdHlwZXMgdG8gc3BlY2lmeSBpZiB0aGUgcHJlZGVmaW5lZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBpZiBubyB2YWx1ZSBpcyBlbnRlcmVkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICJhbGxvd19ub25lIiBwYXJhbSB3YXMgY2hhbmdlZCBhZnRlciBhbiBlbXB0eSB2YWx1ZSBoYXMgYmVlbiBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNvcnRhYmxlX2l0ZW1zIiB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbid0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz5BZHZhbmNlZENvbnRlbnQgMC4zIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbW92ZWQgcGFnZSBhbGlhcyBpbmhlcml0YW5jZTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAiOyIgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gImRlbGltaXRlciI8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAiU2hvdyBsb2dpbiBmb3JtIjwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBwYWdlIGFsaWFzIHRvIGFkZCBpdCBhcyBwcmVmZml4OyBzbyBpZiB5b3UgaGF2ZSBhIHBhZ2UgY2FsbGVkICJtZW1iZXJzIiBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgImluaGVyaXQgcGFnZSBhbGlhcyIgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICJtZW1iZXJzXyI7IG1ha2VzIGZpbHRlcmluZyBvZiBtZW51IGVudHJpZXMgd2l0aCBNZW51TWFuYWdlciBwYXJhbSAiZXhjbHVkZXByZWZmaXgiIG9yICJpbmNsdWRlcHJlZmZpeCIgZWFzaWVyLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiAKCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+Cjx1bD4KCTxsaT4KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwbGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8YnIgLz48YnIgLz4=]]></about>
	<description><![CDATA[--Add Me - module:AdvancedContent string:admindescription--]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICouKj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgZGVueSBmcm9tIGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L0ZpbGVzPgo=]]></data>
	</file>
	<file>
	  <filename>/action.addMultiInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0LnBocAojIFB1cnBvc2U6IGFkZHMgYSBtdWx0aSBpbnB1dCBibG9ja3R5cGUKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykpCnsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3JfcGVybWlzc2lvbnMnKSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkKewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXQnKSk7Cn0KCiRlcnJvciA9IGZhbHNlOwokZXJyb3JtZXNzYWdlID0gJyc7CgokaW5wdXRfaWQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfaWQnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ2lucHV0X2lkJ10pKQp7CgkkaW5wdXRfaWQgPSBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKHRyaW0oJHBhcmFtc1snaW5wdXRfaWQnXSkpKTsKfQoKJGlucHV0X2ZpZWxkcyA9ICcnOwppZihpc3NldCgkcGFyYW1zWydpbnB1dF9maWVsZHMnXSkpCnsKCSRpbnB1dF9maWVsZHMgPSAkcGFyYW1zWydpbnB1dF9maWVsZHMnXTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snaW5wdXRfdHBsJ10pKQp7CgkkaW5wdXRfdHBsID0gJHBhcmFtc1snaW5wdXRfdHBsJ107Cn0KZWxzZQp7CgkkaW5wdXRfdHBsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKfQoKIyMjIGRvIGFjdGlvbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSAmJiAkcGFyYW1zWydzdWJtaXQnXT09dHJ1ZSkKewoJaWYoJGlucHV0X2lkID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5wdXRfaWQnKS4nPGJyIC8+JzsKCX0KCWlmKCRpbnB1dF9maWVsZHMgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9maWVsZHMnKS4nPGJyIC8+JzsKCX0KCglpZigkZXJyb3I9PWZhbHNlKQoJewoJCWlmKCEkdGhpcy0+QWRkTXVsdGlJbnB1dCgkaW5wdXRfaWQsJGlucHV0X2ZpZWxkcykpCgkJewoJCQkkZXJyb3IgPSB0cnVlOwoJCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl9pbnB1dF9pZF9leGlzdHMnKS4nPGJyIC8+JzsKCQl9CgkJZWxzZSBpZighJHRoaXMtPkFkZFRwbEFzc29jKCdtdWx0aV9pbnB1dCcsJGlucHV0X2lkLCRpbnB1dF90cGwpKQoJCXsKCQkJJGVycm9yID0gdHJ1ZTsKCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdXBkYXRpbmdfbXVsdGlfaW5wdXRfYXNzb2NzJykuJzxiciAvPic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X2FkZGVkJywKCQkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0Jywnc3VibWl0Jz0+dHJ1ZSkpOwoJCX0KCX0KCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIHNtYXJ0eSBzdHVmZgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCSdhZGRNdWx0aUlucHV0JywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTskdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLAoJbGFuZygnc3VibWl0JykpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJyxsYW5nKCdjYW5jZWwnKSkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF90ZXh0JywkdGhpcy0+bGFuZygnaW5wdXRfaWQnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2lkJywkaW5wdXRfaWQsNjQsMTI4KSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF90ZXh0JywkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfdHBsJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RwbF9pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnaW5wdXRfdHBsJywgJHRoaXMtPkdldFRwbExpc3QoJ211bHRpX2lucHV0JyksICcnLCAkaW5wdXRfdHBsKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpZWxkc190ZXh0JywkdGhpcy0+bGFuZygnaW5wdXRfZmllbGRzJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpZWxkc19pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsJGlkLCRpbnB1dF9maWVsZHMsJ2lucHV0X2ZpZWxkcycsJycsJ2lucHV0X2ZpZWxkcycpKTsKCmlmKCRlcnJvcm1lc3NhZ2UhPScnKQp7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Vycm9ybWVzc2FnZScsJGVycm9ybWVzc2FnZSk7Cn0KCiMgRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPl9wcC4kdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRNdWx0aUlucHV0LnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.addMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0VHBsLnBocAojIFB1cnBvc2U6IGFkZHMgYSB0ZW1wbGF0ZSBmb3IgbXVsdGkgaW5wdXQgYmxvY2t0eXBlCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb25zJykpOwp9CgppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0X3RwbCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCiR0cGxfbmFtZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWyd0cGxfbmFtZSddKSAmJiAhZW1wdHkoJHBhcmFtc1sndHBsX25hbWUnXSkpCnsKCSR0cGxfbmFtZSA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwodHJpbSgkcGFyYW1zWyd0cGxfbmFtZSddKSkpOwp9CgokdGVtcGxhdGUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7Cn0KCiMjIyBkbyBhY3Rpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJHBhcmFtc1snc3VibWl0J109PXRydWUpCnsKCWlmKCR0cGxfbmFtZSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3RwbF9uYW1lJykuJzxiciAvPic7Cgl9CglpZigkdGVtcGxhdGUgPT0gJycpCgl7CgkJJGVycm9yID0gdHJ1ZTsKCQkkZXJyb3JtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdlcnJvcl90ZW1wbGF0ZScpLic8YnIgLz4nOwoJfQoJaWYoJGVycm9yPT1mYWxzZSkKCXsKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJ211bHRpX2lucHV0XycuJHRwbF9uYW1lLCAkdGVtcGxhdGUpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X3RwbF9hZGRlZCcsCgkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0X3RwbCcsJ3N1Ym1pdCc9PnRydWUpKTsKCX0KfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgc21hcnR5IHN0dWZmCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJJ2FkZE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOyR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsCglsYW5nKCdzdWJtaXQnKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLGxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RwbF9uYW1lX3RleHQnLCR0aGlzLT5sYW5nKCd0cGxfbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0cGxfbmFtZV9pbnB1dCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwndHBsX25hbWUnLCR0cGxfbmFtZSw2NCwxMjgpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdGV4dCcsbGFuZygndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdGVtcGxhdGUsJ3RlbXBsYXRlJywnJywndGVtcGxhdGUnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2hlbHBfdGV4dCcsJHRoaXMtPmxhbmcoJ2hlbHBfdHBsX3ZhcnMnKSk7CgppZigkZXJyb3JtZXNzYWdlIT0nJykKewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcm1lc3NhZ2UnLCRlcnJvcm1lc3NhZ2UpOwp9CgojIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5fcHAuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkTXVsdGlJbnB1dFRwbC50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjMKIyBGaWxlICAgOiBhY3Rpb24uZGVmYXVsdC5waHAKIyAgICAgICAgICBUaGlzIGZpbGUgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgcGx1Z2luIHtjb250ZW50fQojIFB1cnBvc2U6IHBlcmZvcm1zIHRoZSBkZWZhdWx0IGZyb250ZW5kIGFjdGlvbiBpZiB7QWR2YW5jZWRDb250ZW50fSBpcyB1c2VkLgojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRwYXJhbXNbJ2FjdGl2ZSddKSkgCnsKCXJldHVybjsgIyBkb24ndCBwcm9jZXNzIGluYWN0aXZlIGJsb2Nrcwp9CgokcGFnZWluZm8gPSYgJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXTsKJHJlc3VsdCAgID0gJyc7CgokYmxvY2sgPSAnY29udGVudF9lbic7CiRtYWluQ29udGVudCA9IHRydWU7CgojIE1MRSBzdXBwb3J0CiRtbGUgPSBmYWxzZTsKZ2xvYmFsICRobHMsICRtbGVibG9jaywgJG1sZWJsb2NrZmFsbGJhY2s7CmlmKGlzc2V0KCRobHMpKQp7CgkkbWxlID0gdHJ1ZTsKfQoKaWYoJG1sZSAmJiAkbWxlYmxvY2sgIT0gJycpCnsKCSRibG9jayA9ICdjb250ZW50Jy4kbWxlYmxvY2s7Cn0KIy0tLQoKaWYoaXNzZXQoJHBhcmFtc1snYmxvY2snXSkgJiYgJHBhcmFtc1snYmxvY2snXSAhPSAkYmxvY2spCnsKCSRtYWluQ29udGVudCA9IGZhbHNlOwoJJF9ibG9jayA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwoJHBhcmFtc1snYmxvY2snXSkpOwoJJGJsb2NrID0gJF9ibG9jazsKCSMgTUxFIHN1cHBvcnQKCWlmKCRtbGUpIAoJewoJCSRibG9jayAuPSAkbWxlYmxvY2s7Cgl9CgkjLS0tCn0KCiRkZWZhdWx0VmFsdWUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snZGVmYXVsdCddKSkKewoJJGRlZmF1bHRWYWx1ZSA9IHRyaW0oJHBhcmFtc1snZGVmYXVsdCddKTsKfQoKJGRvU21hcnR5ID0gZmFsc2U7CmlmKGlzc2V0KCRwYXJhbXNbJ3NtYXJ0eSddKSAmJiAkdGhpcy0+SXNUcnVlKCRwYXJhbXNbJ3NtYXJ0eSddKSAmJiAkZ0Ntcy0+R2V0U21hcnR5KCktPmdldF90ZW1wbGF0ZV92YXJzKCdjb250ZW50X29iaicpLT5UeXBlKCkgPT0gJ2NvbnRlbnQyJykKewoJJGRvU21hcnR5ID0gdHJ1ZTsKfQppZigkZG9TbWFydHkgJiYgJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+VHlwZSgpID09ICdjb250ZW50MicpIAp7CgkkZGVmYXVsdFZhbHVlID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+RG9TbWFydHkoJGdDbXMtPkdldFNtYXJ0eSgpLT5nZXRfdGVtcGxhdGVfdmFycygnY29udGVudF9vYmonKS0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrXVsnZGVmYXVsdF92YWx1ZSddKTsKfQoKJGFsbG93Tm9uZSA9IHRydWU7CmlmKGlzc2V0KCRwYXJhbXNbJ2FsbG93X25vbmUnXSkgJiYgJHRoaXMtPklzRmFsc2UoJHBhcmFtc1snYWxsb3dfbm9uZSddKSkKewoJJGFsbG93Tm9uZSA9IGZhbHNlOwp9CgppZiAoaXNzZXQoJHBhZ2VpbmZvKSAmJiAkcGFnZWluZm8gIT09IEZBTFNFICYmIGlzc2V0KCRwYWdlaW5mby0+Y29udGVudF9pZCkgKQp7CgkkaWQgICAgICAgICA9ICcnOwoJJG1vZHVsZW5hbWUgPSAnJzsKCSRhY3Rpb24gICAgID0gJyc7CgkkaW5saW5lICAgICA9IGZhbHNlOwoJaWYgKGlzc2V0KCRfUkVRVUVTVFsnbW9kdWxlJ10pKQoJewoJCSRtb2R1bGVuYW1lID0gJF9SRVFVRVNUWydtb2R1bGUnXTsKCX0KCQoJaWYgKGlzc2V0KCRfUkVRVUVTVFsnaWQnXSkpIAoJewoJCSRpZCA9ICRfUkVRVUVTVFsnaWQnXTsKCX0KCWVsc2VpZiAoaXNzZXQoJF9SRVFVRVNUWydtYWN0J10pKSAKCXsKCQkkYXJ5ICAgICAgICA9IGV4cGxvZGUoJywnLCBjbXNfaHRtbGVudGl0aWVzKCRfUkVRVUVTVFsnbWFjdCddKSwgNCk7CgkJJG1vZHVsZW5hbWUgPSAoaXNzZXQoJGFyeVswXSk/JGFyeVswXTonJyk7CgkJJGlkICAgICAgICAgPSAoaXNzZXQoJGFyeVsxXSk/JGFyeVsxXTonJyk7CgkJJGFjdGlvbiAgICAgPSAoaXNzZXQoJGFyeVsyXSk/JGFyeVsyXTonJyk7CgkJJGlubGluZSAgICAgPSAoaXNzZXQoJGFyeVszXSkgJiYgJGFyeVszXSA9PSAxP3RydWU6ZmFsc2UpOwoJfQoJCglpZiAoaXNzZXQoJF9SRVFVRVNUWyRpZC4nYWN0aW9uJ10pKSAKCXsKCQkkYWN0aW9uID0gJF9SRVFVRVNUWyRpZC4nYWN0aW9uJ107Cgl9CgllbHNlIGlmIChpc3NldCgkX1JFUVVFU1RbJ2FjdGlvbiddKSkgCgl7CgkJJGFjdGlvbiA9ICRfUkVRVUVTVFsnYWN0aW9uJ107Cgl9CgkKCWlmICghaXNzZXQoJHBhcmFtc1snYmxvY2snXSkgJiYgKCRpZCA9PSAnY250bnQwMScgfHwgKCRpZCAhPSAnJyAmJiAkaW5saW5lID09IGZhbHNlKSkpIAoJewoJCSRjbXNtb2R1bGVzID0gJiRnQ21zLT5tb2R1bGVzOwoJCQoJCWlmIChpc3NldCgkY21zbW9kdWxlcykpIAoJCXsKCQkJZm9yZWFjaCAoJGNtc21vZHVsZXMgYXMgJGtleT0+JHZhbHVlKSAKCQkJewoJCQkJaWYgKHN0cnRvbG93ZXIoJG1vZHVsZW5hbWUpID09IHN0cnRvbG93ZXIoJGtleSkpIAoJCQkJewoJCQkJCSRtb2R1bGVuYW1lID0gJGtleTsgCgkJCQl9CgkJCX0KCQkJCgkJCWlmIChpc3NldCgkbW9kdWxlbmFtZSkpIAoJCQl7CgkJCQlpZiAoaXNzZXQoJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdKSkgCgkJCQl7CgkJCQkJaWYgKGlzc2V0KCRjbXNtb2R1bGVzWyRtb2R1bGVuYW1lXVsnb2JqZWN0J10pCgkJCQkJCSYmICRjbXNtb2R1bGVzWyRtb2R1bGVuYW1lXVsnaW5zdGFsbGVkJ10gPT0gdHJ1ZQoJCQkJCQkmJiAkY21zbW9kdWxlc1skbW9kdWxlbmFtZV1bJ2FjdGl2ZSddID09IHRydWUKCQkJCQkJJiYgJGNtc21vZHVsZXNbJG1vZHVsZW5hbWVdWydvYmplY3QnXS0+SXNQbHVnaW5Nb2R1bGUoKSkKCQkJCQl7CgkJCQkJCUBvYl9zdGFydCgpOwoJCQkJCQkKCQkJCQkJdW5zZXQoJHBhcmFtc1snbGFiZWwnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2NsYXNzJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydpZCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snbmFtZSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snd2lkdGgnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2hlaWdodCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snYWx0J10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydibG9jayddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc21hcnR5J10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydsYWJlbCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1sndHlwZSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snYmxvY2tfdHlwZSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZGVmYXVsdCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc3R5bGUnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3NpemUnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2Jsb2NrX3RhYiddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1sncGFnZV90YWInXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ21heGxlbmd0aCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snd3lzaXd5ZyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snb25lbGluZSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc3RhcnRfdGltZSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZW5kX3RpbWUnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2RhdGVfZm9ybWF0J10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydzdGFydF9ob3VyJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydlbmRfaG91ciddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc3RhcnRfbWludXRlJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydlbmRfbWludXRlJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydzdGFydF9zZWNvbmRzJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydlbmRfc2Vjb25kcyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc2hvd19jbG9jayddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc3RlcF9ob3VycyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snc3RlcF9taW51dGVzJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydzdGVwX3NlY29uZHMnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3Nob3cyNGgnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3VwbG9hZCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZGlyJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydhbGxvd19ub25lJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydleGNsdWRlX3ByZWZpeCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZXhjbHVkZV9zdWZpeCddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snaW5jbHVkZV9wcmVmaXgnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2luY2x1ZGVfc3VmaXgnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2xvY2tfaW5wdXQnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2RlbGltaXRlciddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snaXRlbXMnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3ZhbHVlcyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snbW9kdWxlJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydkZWZhdWx0TW9kdWxlcyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1sndXJsb25seSddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZmV1X2FjdGlvbiddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZmV1X2FjY2VzcyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZWRpdG9yX2dyb3VwcyddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1snZWRpdG9yX3VzZXJzJ10pOwoJCQkJCQl1bnNldCgkcGFyYW1zWydhY3RpdmUnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3RyYW5zbGF0ZV9sYWJlbHMnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ3RyYW5zbGF0ZV92YWx1ZXMnXSk7CgkJCQkJCQoJCQkJCQl1bnNldCgkcGFyYW1zWydpbnB1dHMnXSk7CgkJCQkJCXVuc2V0KCRwYXJhbXNbJ2lucHV0X2RlbGltaXRlciddKTsKCQkJCQkJdW5zZXQoJHBhcmFtc1sndmFsdWVfZGVsaW1pdGVyJ10pOwoJCQkJCQkKCQkJCQkJJHBhcmFtcyA9IGFycmF5X21lcmdlKCRwYXJhbXMsIEdldE1vZHVsZVBhcmFtZXRlcnMoJGlkKSk7CgkJCQkJCQoJCQkJCQkjIGNhbGd1eTEwMDAgLi4uIGluY3JlbWVudCB0aGUgbW9kdWxlbnVtCgkJCQkJCSMgaWYgd2UncmUgbm90IGluIGlubGluZWQgbW9kZS4KCQkJCQkJaWYoICRpZCAhPSAnY250bnQwMScgKSAKCQkJCQkJewoJCQkJCQkJKyskZ0Ntcy0+dmFyaWFibGVzWyJtb2R1bGVudW0iXTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJJHJldHVybmlkID0gJyc7CgkJCQkJCWlmIChpc3NldCgkcGFyYW1zWydyZXR1cm5pZCddKSkgCgkJCQkJCXsKCQkJCQkJCSRyZXR1cm5pZCA9ICRwYXJhbXNbJ3JldHVybmlkJ107CgkJCQkJCX0KCQkJCQkJZWxzZSAKCQkJCQkJewoJCQkJCQkJJHJldHVybmlkID0gJHBhZ2VpbmZvLT5jb250ZW50X2lkOwoJCQkJCQl9CgkJCQkJCSRyZXN1bHQgPSAkY21zbW9kdWxlc1skbW9kdWxlbmFtZV1bJ29iamVjdCddLT5Eb0FjdGlvbkJhc2UoJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwoJCQkJCQlpZiAoJHJlc3VsdCAhPT0gRkFMU0UpIAoJCQkJCQl7CgkJCQkJCQllY2hvICRyZXN1bHQ7CgkJCQkJCX0KCQkJCQkJJG1vZHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsKCQkJCQkJQG9iX2VuZF9jbGVhbigpOwoJCQkJCQkkcmVzdWx0ID0gJG1vZHJlc3VsdDsKCQkJCQl9CgkJCQkJZWxzZSAKCQkJCQl7CgkJCQkJICAkcmVzdWx0ID0gIjwhLS0gTm90IGEgdGFnIG1vZHVsZSAtLT5cbiI7CgkJCQkJICBAdHJpZ2dlcl9lcnJvcignQXR0ZW1wdCB0byBhY2Nlc3MgbW9kdWxlICcuJGtleS4nIHdoaWNoIGNvdWxkIG5vdCBiZSBmb3VuZSAoaXMgaXQgcHJvcGVybHkgaW5zdGFsbGVkIGFuZCBjb25maWd1cmVkPycpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCWVsc2UgCgl7CgkJJG9sZHZhbHVlICAgICAgICAgICAgICAgICAgID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5jYWNoaW5nOwoJCSRnQ21zLT5HZXRTbWFydHkoKS0+Y2FjaGluZyA9IGZhbHNlOwoJCSRjb250ZW50SWQgICAgICAgICAgICAgICAgICA9ICRwYWdlaW5mby0+Y29udGVudF9pZDsKCQkKCQkjIE1MRSBzdXBwb3J0CgkJaWYoJG1sZSkKCQl7CgkJCSRjb250ZW50SWQgLj0gJy0nLiRobHM7CgkJfQoJCSMtLS0KCQkKCQkkcmVzdWx0ID0gJGdDbXMtPkdldFNtYXJ0eSgpLT5mZXRjaChzdHJfcmVwbGFjZSgnICcsICdfJywgJ2NvbnRlbnQ6JyAuICRibG9jayksICcnLCAkY29udGVudElkKTsKCQkKCQkjIE1MRSBzdXBwb3J0CgkJaWYoJG1sZQoJCQkmJiAkcmVzdWx0ID09ICcnICYmICRtbGVibG9ja2ZhbGxiYWNrICE9ICcnCgkJCSYmICRtbGVibG9ja2ZhbGxiYWNrICE9ICRtbGVibG9jaykKCQl7CgkJCWlmKCRibG9jayAhPSAnY29udGVudCcuJG1sZWJsb2NrKSAKCQkJewoJCQkJJGJsb2NrICA9ICRfYmxvY2sgLiAkbWxlYmxvY2tmYWxsYmFjazsKCQkJCSRyZXN1bHQgPSAkZ0Ntcy0+R2V0U21hcnR5KCktPmZldGNoKHN0cl9yZXBsYWNlKCcgJywgJ18nLCAnY29udGVudDonIC4gJGJsb2NrKSwgJycsICRjb250ZW50SWQpOwoJCQl9CgkJCWVsc2UgCgkJCXsKCQkJCSRibG9jayAgPSAnY29udGVudCcgLiAkbWxlYmxvY2tmYWxsYmFjazsKCQkJCSRyZXN1bHQgPSAkZ0Ntcy0+R2V0U21hcnR5KCktPmZldGNoKHN0cl9yZXBsYWNlKCcgJywgJ18nLCAnY29udGVudDonIC4gJGJsb2NrKSwgJycsICRjb250ZW50SWQpOwoJCQl9CgkJfQoJCSMtLS0KCQkKCQkkZ0Ntcy0+R2V0U21hcnR5KCktPmNhY2hpbmcgPSAkb2xkdmFsdWU7CgkJCgkJaWYoJHJlc3VsdCA9PSAnJyAmJiAhJGFsbG93Tm9uZSkKCQl7CgkJCSRyZXN1bHQgPSAkZGVmYXVsdFZhbHVlOwoJCX0KCX0KCWVjaG8gdHJpbSgkcmVzdWx0KTsKfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjMKIyBGaWxlICAgOiBhY3Rpb24uZGVmYXVsdGFkbWluLnBocAojIFB1cnBvc2U6IHBlcmZvcm1zIHRoZSBkZWZhdWx0IGJhY2tlbmQgYWN0aW9uIGlmICJFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQiCiMgICAgICAgICAgaXMgc2VsZWN0ZWQKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJykgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpKQoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsCSR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKCiRhY3RpdmVfdGFiID0gJ3ByZWZzJzsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkKCSRhY3RpdmVfdGFiID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwoKJGVycm9ybWVzc2FnZSA9ICcnOwppZihpc3NldCgkcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSkpCgkkZXJyb3JtZXNzYWdlIC49ICRwYXJhbXNbJ2Vycm9ybWVzc2FnZSddLic8YnIgLz4nOwoKJG1lc3NhZ2UgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSkKCSRtZXNzYWdlIC49ICRwYXJhbXNbJ21lc3NhZ2UnXS4nPGJyIC8+JzsKCiR0YWJzID0gYXJyYXkoKTsKCmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKSkKewoJJHRhYnNbJ3ByZWZzJ11bJ3RhYmhlYWRlciddID0gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLAoJCSR0aGlzLT5sYW5nKCdwcmVmcycpLAoJCSgkYWN0aXZlX3RhYj09J3ByZWZzJz90cnVlOicnKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgkJJ3NhdmVQcmVmcycsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbXBvcnRjb250ZW50X2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdpbXBvcnRwYWdlcycsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2ltcG9ydHBhZ2VzJywgbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSksCgkJCWFycmF5KCdvbGRfdHlwZSc9Pidjb250ZW50JywnbmV3X3R5cGUnPT4nY29udGVudDInKSwKCQkJJycsCgkJCWZhbHNlLAoJCQlmYWxzZSwKCQkJJ2NsYXNzPSJBZHZhbmNlZENvbnRlbnRfQUpBWCIgb25jbGljaz0iaWYoY29uZmlybShcJycuCgkJCQkkdGhpcy0+bGFuZygnY29uZmlybWltcG9ydCcsbGFuZygnY29udGVudCcpLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSkgLgoJCQkJJ1wnKSkge0FkdmFuY2VkQ29udGVudC5pbXBvcnRQYWdlcyh0aGlzLmhyZWYpO30gcmV0dXJuIGZhbHNlOyInKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW1wb3J0Y29udGVudDJfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2ltcG9ydHBhZ2VzJywgJycsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJykgLgoJCQknJm5ic3A7JyAuICR0aGlzLT5sYW5nKCdpbXBvcnRwYWdlcycsICR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpLAoJCQlhcnJheSgnb2xkX3R5cGUnPT4nY29udGVudDInLCduZXdfdHlwZSc9Pidjb250ZW50JyksCgkJCScnLAoJCQlmYWxzZSwKCQkJZmFsc2UsCgkJCSdjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FKQVgiIG9uY2xpY2s9ImlmKGNvbmZpcm0oXCcnLgoJCQkJJHRoaXMtPmxhbmcoJ2NvbmZpcm1pbXBvcnQnLCR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKSxsYW5nKCdjb250ZW50JykpIC4KCQkJCSdcJykpIHtBZHZhbmNlZENvbnRlbnQuaW1wb3J0UGFnZXModGhpcy5ocmVmKTt9IHJldHVybiBmYWxzZTsiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3VuaW5zdGFsbGFjdGlvbl90ZXh0JywgJHRoaXMtPmxhbmcoJ3VuaW5zdGFsbGFjdGlvbicpKTsKCQoJJGFjdGlvbnMgPSBhcnJheShsYW5nKCdub25lJyk9PicnLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MScpPT4yLAoJCSR0aGlzLT5sYW5nKCdzZXRjb250ZW50MicpPT4zLAoJCSR0aGlzLT5sYW5nKCdkZWxldGVwYWdlcycpPT4xKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1bmluc3RhbGxhY3Rpb25faW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3VuaW5zdGFsbF9hY3Rpb24nLCAkYWN0aW9ucywgJycsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJykpKTsKCQoJJGFjdGlvbnMgPSBhcnJheSgkdGhpcy0+bGFuZygncGVyX3BhZ2UnKT0+J2NvbnRlbnQnLAoJCSR0aGlzLT5sYW5nKCdwZXJfdGVtcGxhdGUnKT0+J3RlbXBsYXRlJywKCQkkdGhpcy0+bGFuZygnYm90aDEnKT0+J2JvdGgxJywKCQkkdGhpcy0+bGFuZygnYm90aDInKT0+J2JvdGgyJyk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0JywKCQkkdGhpcy0+bGFuZygnc2F2ZV9jb2xsYXBzZV9zdGF0dXMnLCAkdGhpcy0+bGFuZygnY29udGVudF9ibG9ja3MnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdibG9ja19kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdibG9ja19kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYmxvY2tfZGlzcGxheV9zZXR0aW5ncycpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfYmxvY2tfZGVmYXVsdF90ZXh0JywKCQkkdGhpcy0+bGFuZygnY29sbGFwc2VfZGVmYXVsdCcsJHRoaXMtPmxhbmcoJ2NvbnRlbnRfYmxvY2tzJykpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbGxhcHNlX2Jsb2NrX2RlZmF1bHRfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywnMCcpIC4KCQkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnY29sbGFwc2VfYmxvY2tfZGVmYXVsdCcsICcxJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywxKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc190ZXh0JywKCQkkdGhpcy0+bGFuZygnc2F2ZV9jb2xsYXBzZV9zdGF0dXMnLCAkdGhpcy0+bGFuZygnYmxvY2tfbWVzc2FnZScpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc19pbnB1dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJykpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdncm91cF9kaXNwbGF5X3NldHRpbmdzX3RleHQnLAoJCSR0aGlzLT5sYW5nKCdzYXZlX2NvbGxhcHNlX3N0YXR1cycsICR0aGlzLT5sYW5nKCdibG9ja19ncm91cHMnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdncm91cF9kaXNwbGF5X3NldHRpbmdzX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdncm91cF9kaXNwbGF5X3NldHRpbmdzJywgJGFjdGlvbnMsICcnLAoJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZ3JvdXBfZGlzcGxheV9zZXR0aW5ncycpKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF90ZXh0JywKCQkkdGhpcy0+bGFuZygnY29sbGFwc2VfZGVmYXVsdCcsJHRoaXMtPmxhbmcoJ2Jsb2NrX2dyb3VwcycpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHRfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCcwJykgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCAnMScsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ncm91cF9kZWZhdWx0JywxKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfdGV4dCcsCgkJJHRoaXMtPmxhbmcoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLCcwJykgLgoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLCAnMScsCgkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJywxKSkpOwoJCgkjIENvbnRlbnQgc2V0dGluZ3MKCWlmKCAkZmV1c2VycyA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnICkpCgl7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjb250ZW50c2V0dGluZ3NfdGV4dCcsICR0aGlzLT5sYW5nKCdjb250ZW50c2V0dGluZ3MnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmZXVhY2Nlc3NfdGV4dCcsICR0aGlzLT5sYW5nKCdmcm9udGVuZGFjY2VzcycpKTsKCQkkZmV1QWNjZXNzID0gYXJyYXkoJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEpOwoJCSRmZXVBY2Nlc3MgPSBhcnJheV9tZXJnZSgkZmV1QWNjZXNzLCRmZXVzZXJzLT5HZXRHcm91cExpc3QoKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmZXVhY2Nlc3NfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdmZXVfYWNjZXNzJywnJykuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCdmZXVfYWNjZXNzW10nLCRmZXVBY2Nlc3MsCgkJCQkkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjY2VzcycpKSksCgkJCWNvdW50KCRmZXVBY2Nlc3MpLCcnLDEpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cGFnZV90ZXh0JywgJHRoaXMtPmxhbmcoJ3JlZGlyZWN0cGFnZScpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlZGlyZWN0cGFnZV9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVSZWRpcmVjdERyb3Bkb3duKCRpZCwncmVkaXJlY3RfcGFnZScsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFnZScpKSk7CgkJCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdyZWRpcmVjdHBhcmFtc190ZXh0JywgJHRoaXMtPmxhbmcoJ3JlZGlyZWN0cGFyYW1zJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigncmVkaXJlY3RwYXJhbXNfaW5wdXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3JlZGlyZWN0X3BhcmFtcycsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVkaXJlY3RfcGFyYW1zJyksIDMyLCAxMjgpKTsKCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2V2YWx1YXRlc21hcnR5X3RleHQnLCAkdGhpcy0+bGFuZygnZXZhbHVhdGVzbWFydHknKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdldmFsdWF0ZXNtYXJ0eV9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2V2YWx1YXRlX3NtYXJ0eScsJzAnKSAuCgkJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2V2YWx1YXRlX3NtYXJ0eScsICcxJywKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdldmFsdWF0ZV9zbWFydHknKSkpOwoJCQoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmV1YWN0aW9uX3RleHQnLCAkdGhpcy0+bGFuZygnc2hvd2xvZ2luZm9ybScpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZldWFjdGlvbl9pbnB1dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmV1X2FjdGlvbicsCgkJCQlhcnJheSgkdGhpcy0+bGFuZygnbm8nKT0+JycsCgkJCQkJJHRoaXMtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEsCgkJCQkJJHRoaXMtPmxhbmcoJ3llcycpPT4xKSwKCQkJCTAsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZldV9hY3Rpb24nKSkpOwoJfQoJIy0tLQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfcHJlZnMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X3ByZWZzJywKCQlsYW5nKCdzdWJtaXQnKSwnb25jbGljaz0icmV0dXJuIEFkdmFuY2VkQ29udGVudC5zdWJtaXRGb3JtKHRoaXMsXCdBZHZhbmNlZENvbnRlbnRSZXN1bHRcJykiJykpOwoJCgkkdGFic1sncHJlZnMnXVsndGFiY29udGVudCddID0gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcmVmc1RhYi50cGwnKSAuCgkJJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykpCnsKCSR0YWJzWydtdWx0aV9pbnB1dCddWyd0YWJoZWFkZXInXSA9ICR0aGlzLT5TZXRUYWJIZWFkZXIoJ211bHRpX2lucHV0JywKCQkkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXQnKSwKCQkoJGFjdGl2ZV90YWI9PSdtdWx0aV9pbnB1dCc/dHJ1ZTonJykpOwoJCgkkbXVsdGlfaW5wdXRzID0gYXJyYXkoKTsKCWZvcmVhY2goJHRoaXMtPkdldE11bHRpSW5wdXRMaXN0KCkgYXMgJG11bHRpX2lucHV0KQoJewoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnZWRpdF9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCdpbnB1dF9pZCc9PiRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSkpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnbmFtZV9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwgJG11bHRpX2lucHV0WydpbnB1dF9pZCddLCBhcnJheSgnaW5wdXRfaWQnPT4kbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRzWyRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXV1bJ3RlbXBsYXRlJ10gPSBzdWJzdHIoJG11bHRpX2lucHV0Wyd0cGxfbmFtZSddLHN0cmxlbignbXVsdGlfaW5wdXRfJykpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnZGVsZXRlX2xpbmsnXSA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZU11bHRpSW5wdXQnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCWFycmF5KCdpbnB1dF9pZCc9PiRtdWx0aV9pbnB1dFsnaW5wdXRfaWQnXSksJHRoaXMtPmxhbmcoJ2NvbmZpcm1fZGVsZXRlJykpOwoJCQoJCSRtdWx0aV9pbnB1dHNbJG11bHRpX2lucHV0WydpbnB1dF9pZCddXVsnY2hlY2tib3gnXSA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwKCQkJIm11bHRpX2lucHV0LSIuJG11bHRpX2lucHV0WydpbnB1dF9pZCddLCAkbXVsdGlfaW5wdXRbJ2lucHV0X2lkJ10sICcnKTsKCX0KCSR0aGlzLT5zbWFydHktPmFzc2lnbignc2VsZWN0YWxsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ211bHRpX2lucHV0Jyx0cnVlLGZhbHNlLCAnaWQ9IicuJGlkLidtdWx0aV9pbnB1dCIgb25jbGljaz0iQWR2YW5jZWRDb250ZW50LnNlbGVjdEFsbCh0aGlzKSInKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ211bHRpX2lucHV0X2FycmF5JywkbXVsdGlfaW5wdXRzKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX211bHRpX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRNdWx0aUlucHV0JywgJHJldHVybmlkLAoJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpIC4KCQkJJyZuYnNwOycgLiAkdGhpcy0+bGFuZygnYWRkX211bHRpX2lucHV0JykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJCSdkZWxldGVNdWx0aUlucHV0JywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0X2J1bGthY3Rpb24nLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0X2J1bGthY3Rpb24nLCR0aGlzLT5sYW5nKCdkZWxldGVfc2VsZWN0ZWQnKSwnJywnJywkdGhpcy0+bGFuZygnY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnKSkpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pZF90ZXh0JywgJHRoaXMtPmxhbmcoJ2lucHV0X2lkJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV90ZXh0JywgbGFuZygndGVtcGxhdGUnKSk7CgkkdGFic1snbXVsdGlfaW5wdXQnXVsndGFiY29udGVudCddID0gJHRoaXMtPlN0YXJ0VGFiKCdtdWx0aV9pbnB1dCcpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdtdWx0aUlucHV0VGFiLnRwbCcpIC4KCQkkdGhpcy0+RW5kVGFiKCk7Cn0KCmlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKSkKewoJJHRhYnNbJ211bHRpX2lucHV0X3RwbCddWyd0YWJoZWFkZXInXSA9ICR0aGlzLT5TZXRUYWJIZWFkZXIoJ211bHRpX2lucHV0X3RwbCcsCgkJJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbCcpLAoJCSgkYWN0aXZlX3RhYj09J211bHRpX2lucHV0X3RwbCc/dHJ1ZTonJykpOwoJCgkkbXVsdGlfaW5wdXRfdHBscyA9IGFycmF5KCk7Cglmb3JlYWNoKCR0aGlzLT5HZXRUZW1wbGF0ZXMoJ211bHRpX2lucHV0JykgYXMgJHRwbCkKCXsKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ2VkaXRfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsCgkJCSRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpLAoJCQlhcnJheSgndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10pKTsKCQkKCQkkbXVsdGlfaW5wdXRfdHBsc1skdHBsWyd0cGxfaWQnXV1bJ25hbWVfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsCgkJCSR0cGxbJ3RwbF9uYW1lJ10sCgkJCWFycmF5KCd0cGxfaWQnPT4kdHBsWyd0cGxfaWQnXSkpOwoJCQoJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnZGVsZXRlX2xpbmsnXSA9ICcmbmJzcDsnOwoJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnY2hlY2tib3gnXSA9ICcmbmJzcCc7CgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKSAhPSAkdHBsWyd0cGxfaWQnXSAmJiAhJHRwbFsnaXNfdXNlZCddKQoJCXsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydkZWxldGVfbGluayddID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLAoJCQkJJ2RlbGV0ZU11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCQlhcnJheSgndHBsX2lkJz0+JHRwbFsndHBsX2lkJ10pLCR0aGlzLT5sYW5nKCdjb25maXJtX2RlbGV0ZScpKTsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydjaGVja2JveCddID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLAoJCQkJIm11bHRpX2lucHV0X3RwbC0iLiR0cGxbJ3RwbF9pZCddLCAkdHBsWyd0cGxfaWQnXSwgJycpOwoJCX0KCQkKCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpICE9ICR0cGxbJ3RwbF9pZCddKQoJCXsKCQkJJG11bHRpX2lucHV0X3RwbHNbJHRwbFsndHBsX2lkJ11dWydzZXRfZGVmYXVsdF9saW5rJ10gPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzYXZlUHJlZnMnLCAkcmV0dXJuaWQsCgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyksCgkJCQlhcnJheSgnc2V0X2RlZmF1bHQnPT4nbXVsdGlfaW5wdXQnLCd0cGxfaWQnPT4kdHBsWyd0cGxfaWQnXSwnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dF90cGwnKSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRtdWx0aV9pbnB1dF90cGxzWyR0cGxbJ3RwbF9pZCddXVsnc2V0X2RlZmF1bHRfbGluayddID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyk7CgkJfQoJCQoJfQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzZWxlY3RhbGwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwnbXVsdGlfaW5wdXRfdHBsJyx0cnVlLGZhbHNlLCAnaWQ9IicuJGlkLidtdWx0aV9pbnB1dF90cGwiIG9uY2xpY2s9IkFkdmFuY2VkQ29udGVudC5zZWxlY3RBbGwodGhpcykiJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtdWx0aV9pbnB1dF90cGxfYXJyYXknLCRtdWx0aV9pbnB1dF90cGxzKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX211bHRpX2lucHV0X3RwbCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkTXVsdGlJbnB1dFRwbCcsICRyZXR1cm5pZCwKCQkJJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJycsJycsJycsJ3N5c3RlbWljb24nKSAuCgkJCScmbmJzcDsnIC4gJHRoaXMtPmxhbmcoJ2FkZF9tdWx0aV9pbnB1dF90cGwnKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9idWxrYWN0aW9uJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdF9idWxrYWN0aW9uJywkdGhpcy0+bGFuZygnZGVsZXRlX3NlbGVjdGVkJyksJycsJycsJHRoaXMtPmxhbmcoJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJykpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfbmFtZV90ZXh0JywgbGFuZygndGVtcGxhdGUnKSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLAoJCSdkZWxldGVNdWx0aUlucHV0VHBsJywgJHJldHVybmlkLCdwb3N0JywnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJJHRhYnNbJ211bHRpX2lucHV0X3RwbCddWyd0YWJjb250ZW50J10gPSAkdGhpcy0+U3RhcnRUYWIoJ211bHRpX2lucHV0X3RwbCcpIC4KCQkkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdtdWx0aUlucHV0VHBsVGFiLnRwbCcpIC4KCQkkdGhpcy0+RW5kVGFiKCk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3RhYnMnLCR0YWJzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJoZWFkZXJzJywkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWJoZWFkZXJzJywkdGhpcy0+RW5kVGFiSGVhZGVycygpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF90YWJjb250ZW50JywkdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWJjb250ZW50JywkdGhpcy0+RW5kVGFiQ29udGVudCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZUlkJywgJGlkKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignbWVzc2FnZScsICR0aGlzLT5sYW5nKCRwYXJhbXNbJ21lc3NhZ2UnXSwgKGlzc2V0KCRwYXJhbXNbJ29sZF90eXBlJ10pICYmIGlzc2V0KCRwYXJhbXNbJ25ld190eXBlJ10pID8gJHRoaXMtPmxhbmcoJHBhcmFtc1snb2xkX3R5cGUnXSkgLiAnLCcgLiAkdGhpcy0+bGFuZygkcGFyYW1zWyduZXdfdHlwZSddKSA6ICcnKSkpOwp9CgppZihpc3NldCgkcGFyYW1zWydlcnJvcm1lc3NhZ2UnXSkpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3JtZXNzYWdlJywgJHRoaXMtPmxhbmcoJHBhcmFtc1snZXJyb3JtZXNzYWdlJ10sIChpc3NldCgkcGFyYW1zWydvbGRfdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWyduZXdfdHlwZSddKSA/ICR0aGlzLT5sYW5nKCRwYXJhbXNbJ29sZF90eXBlJ10pIC4gJywnIC4gJHRoaXMtPmxhbmcoJHBhcmFtc1snbmV3X3R5cGUnXSkgOiAnJykpKTsKfQoKZWNobyAkdGhpcy0+X3BwIC4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRwbCcpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IGFjdGlvbi5lZGl0TXVsdGlJbnB1dC5waHAKIyBQdXJwb3NlOiBlZGl0cyBhIG11bHRpIGlucHV0IGJsb2NrdHlwZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKSkKewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dCcpKTsKfQoKJGVycm9yID0gZmFsc2U7CiRlcnJvcm1lc3NhZ2UgPSAnJzsKCiRpbnB1dF9pZCA9ICcnOwppZihpc3NldCgkcGFyYW1zWydpbnB1dF9pZCddKSAmJiAhZW1wdHkoJHBhcmFtc1snaW5wdXRfaWQnXSkpCnsKCSRpbnB1dF9pZCA9IHByZWdfcmVwbGFjZSgnLy0rLycsJ18nLG11bmdlX3N0cmluZ190b191cmwodHJpbSgkcGFyYW1zWydpbnB1dF9pZCddKSkpOwp9CgokbXVsdGlfaW5wdXQgPSAkdGhpcy0+R2V0TXVsdGlJbnB1dEZ1bGwoJGlucHV0X2lkKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZpZWxkcyddKSkKewoJJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddID0gdHJpbSgkcGFyYW1zWydpbnB1dF9maWVsZHMnXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3RwbCddKSkKewoJJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10gPSAkcGFyYW1zWydpbnB1dF90cGwnXTsKfQoKIyMjIGRvIGFjdGlvbiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSAmJiAkcGFyYW1zWydzdWJtaXQnXT09dHJ1ZSkKewoJaWYoJGlucHV0X2lkID09ICcnKQoJewoJCSRlcnJvciA9IHRydWU7CgkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5wdXRfaWQnKS4nPGJyIC8+JzsKCX0KCWlmKCRtdWx0aV9pbnB1dFskaW5wdXRfaWRdWydpbnB1dF9maWVsZHMnXSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2lucHV0X2ZpZWxkcycpLic8YnIgLz4nOwoJfQoKCWlmKCRlcnJvcj09ZmFsc2UpCgl7CgkJaWYoISR0aGlzLT5VcGRhdGVNdWx0aUlucHV0KCRpbnB1dF9pZCwkbXVsdGlfaW5wdXRbJGlucHV0X2lkXVsnaW5wdXRfZmllbGRzJ10pKQoJCXsKCQkJJGVycm9yID0gdHJ1ZTsKCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfdXBkYXRpbmdfbXVsdGlfaW5wdXQnKS4nPGJyIC8+JzsKCQl9CgkJZWxzZSBpZighJHRoaXMtPlVwZGF0ZVRwbEFzc29jKCdtdWx0aV9pbnB1dCcsJGlucHV0X2lkLCRtdWx0aV9pbnB1dFskaW5wdXRfaWRdWyd0cGxfbmFtZSddKSkKCQl7CgkJCSRlcnJvciA9IHRydWU7CgkJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3VwZGF0aW5nX211bHRpX2lucHV0X2Fzc29jcycpLic8YnIgLz4nOwoJCX0KCQllbHNlCgkJewoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWVzc2FnZSc9PidtdWx0aV9pbnB1dF91cGRhdGVkJywKCQkJCSdhY3RpdmVfdGFiJz0+J211bHRpX2lucHV0Jywnc3VibWl0Jz0+dHJ1ZSkpOwoJCX0KCX0KCn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIHNtYXJ0eSBzdHVmZgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2Zvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwKCSdlZGl0TXVsdGlJbnB1dCcsICRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7JHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywKCWxhbmcoJ3N1Ym1pdCcpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsJywKCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsbGFuZygnY2FuY2VsJykpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaWRfdGV4dCcsJHRoaXMtPmxhbmcoJ2lucHV0X2lkJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2lkX2lucHV0JywkaW5wdXRfaWQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90cGxfdGV4dCcsJHRoaXMtPmxhbmcoJ211bHRpX2lucHV0X3RwbCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90cGxfaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2lucHV0X3RwbCcsICR0aGlzLT5HZXRUcGxMaXN0KCdtdWx0aV9pbnB1dCcpLCAnJywgJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ3RwbF9uYW1lJ10pKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX3RleHQnLCR0aGlzLT5sYW5nKCdpbnB1dF9maWVsZHMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmllbGRzX2lucHV0JywKCSR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwkaWQsJG11bHRpX2lucHV0WyRpbnB1dF9pZF1bJ2lucHV0X2ZpZWxkcyddLCdpbnB1dF9maWVsZHMnLCcnLCdpbnB1dF9maWVsZHMnKS4KCSR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF9pZCcsJGlucHV0X2lkKSk7CgppZigkZXJyb3JtZXNzYWdlIT0nJykKewoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlcnJvcm1lc3NhZ2UnLCRlcnJvcm1lc3NhZ2UpOwp9CgojIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5fcHAuJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkTXVsdGlJbnB1dC50cGwnKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.editMultiInputTpl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IGFjdGlvbi5hZGRNdWx0aUlucHV0VHBsLnBocAojIFB1cnBvc2U6IGVkaXRzIGEgdGVtcGxhdGUgZm9yIG11bHRpIGlucHV0IGJsb2NrdHlwZQojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZighaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKSkKewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9ucycpKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYic9PidtdWx0aV9pbnB1dF90cGwnKSk7Cn0KCiRlcnJvciA9IGZhbHNlOwokZXJyb3JtZXNzYWdlID0gJyc7CgppZighaXNzZXQoJHBhcmFtc1sndHBsX2lkJ10pKQp7CglyZXR1cm47ICMgVG9EbzogZXJyb3JtZXNzYWdlPwp9CgokdHBsX2lkID0gJHBhcmFtc1sndHBsX2lkJ107CgokdGVtcGxhdGUgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7Cn0KZWxzZQp7CgkkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRwbF9pZCk7Cn0KCiMjIyBkbyBhY3Rpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYgJHBhcmFtc1snc3VibWl0J109PXRydWUpCnsKCWlmKCR0ZW1wbGF0ZSA9PSAnJykKCXsKCQkkZXJyb3IgPSB0cnVlOwoJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX3RlbXBsYXRlJykuJzxiciAvPic7Cgl9CglpZigkZXJyb3I9PWZhbHNlKQoJewoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHBsX2lkLCAkdGVtcGxhdGUpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJz0+J211bHRpX2lucHV0X3RwbF91cGRhdGVkJywKCQkJJ2FjdGl2ZV90YWInPT4nbXVsdGlfaW5wdXRfdHBsJywnc3VibWl0Jz0+dHJ1ZSkpOwoJfQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBzbWFydHkgc3R1ZmYKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9mb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsCgknZWRpdE11bHRpSW5wdXRUcGwnLCAkcmV0dXJuaWQsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOyR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsCglsYW5nKCdzdWJtaXQnKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLGxhbmcoJ2NhbmNlbCcpKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RwbF9uYW1lX3RleHQnLCR0aGlzLT5sYW5nKCd0cGxfbmFtZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0cGxfbmFtZV9pbnB1dCcsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0cGxfaWQnLCAkdHBsX2lkKSAuIHN1YnN0cigkdHBsX2lkLHN0cmxlbignbXVsdGlfaW5wdXRfJykpLCA2NCwgMTI4KTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfdGV4dCcsbGFuZygndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVfaW5wdXQnLAoJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkdGVtcGxhdGUsJ3RlbXBsYXRlJywnJywndGVtcGxhdGUnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaGVscF90ZXh0JywkdGhpcy0+bGFuZygnaGVscF90cGxfdmFycycpKTsKaWYoJGVycm9ybWVzc2FnZSE9JycpCnsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignZXJyb3JtZXNzYWdlJywkZXJyb3JtZXNzYWdlKTsKfQoKIyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+X3BwLiR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZE11bHRpSW5wdXRUcGwudHBsJyk7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.savePrefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjMKIyBGaWxlICAgOiBhY3Rpb24uc2F2ZVByZWZzLnBocAojIFB1cnBvc2U6IHNhdmVzIHRoZSBwcmVmZXJlbmNlcyBpbiB0aGUgZGF0YWJhc2UKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydzdWJtaXRfcHJlZnMnXSkpCnsKCWlmKGlzc2V0KCRwYXJhbXNbJ3VuaW5zdGFsbF9hY3Rpb24nXSkpCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nLCAkcGFyYW1zWyd1bmluc3RhbGxfYWN0aW9uJ10pOwoJCglpZihpc3NldCgkcGFyYW1zWydmZXVfYWNjZXNzJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJywgaW1wbG9kZSgnOycsJHRoaXMtPkNsZWFuQXJyYXkoJHBhcmFtc1snZmV1X2FjY2VzcyddKSkpOwoJCglpZihpc3NldCgkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYWdlJywgJHBhcmFtc1sncmVkaXJlY3RfcGFnZSddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1sncmVkaXJlY3RfcGFyYW1zJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZWRpcmVjdF9wYXJhbXMnLCAkcGFyYW1zWydyZWRpcmVjdF9wYXJhbXMnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2V2YWx1YXRlX3NtYXJ0eSddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZXZhbHVhdGVfc21hcnR5JywgJHBhcmFtc1snZXZhbHVhdGVfc21hcnR5J10pOwoJCglpZihpc3NldCgkcGFyYW1zWydmZXVfYWN0aW9uJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXVfYWN0aW9uJywgJHBhcmFtc1snZmV1X2FjdGlvbiddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1snYmxvY2tfZGlzcGxheV9zZXR0aW5ncyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnYmxvY2tfZGlzcGxheV9zZXR0aW5ncycsICRwYXJhbXNbJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJywgJHBhcmFtc1snbWVzc2FnZV9kaXNwbGF5X3NldHRpbmdzJ10pOwoJCglpZihpc3NldCgkcGFyYW1zWydncm91cF9kaXNwbGF5X3NldHRpbmdzJ10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdncm91cF9kaXNwbGF5X3NldHRpbmdzJywgJHBhcmFtc1snZ3JvdXBfZGlzcGxheV9zZXR0aW5ncyddKTsKCQoJaWYoaXNzZXQoJHBhcmFtc1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddKSkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucycsICRwYXJhbXNbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSk7CgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnXSkpCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLCAkcGFyYW1zWydjb2xsYXBzZV9ncm91cF9kZWZhdWx0J10pOwoJCglpZihpc3NldCgkcGFyYW1zWydjb2xsYXBzZV9ibG9ja19kZWZhdWx0J10pKQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywgJHBhcmFtc1snY29sbGFwc2VfYmxvY2tfZGVmYXVsdCddKTsKCQp9CmlmKGlzc2V0KCRwYXJhbXNbJ2l0ZW1fdHlwZSddKSAmJiBpc3NldCgkcGFyYW1zWydpdGVtX2Rpc3BsYXknXSkpCnsKCSR0aGlzLT5TZXRJdGVtRGlzcGxheSgkcGFyYW1zWydpdGVtX3R5cGUnXSwgJHBhcmFtc1snaXRlbV9pZCddLCAkcGFyYW1zWydjb250ZW50X2lkJ10sICRwYXJhbXNbJ3RlbXBsYXRlX2lkJ10sICRwYXJhbXNbJ2l0ZW1fZGlzcGxheSddKTsKfQppZihpc3NldCgkcGFyYW1zWydzZXRfZGVmYXVsdCddKSkKewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfJy4kcGFyYW1zWydzZXRfZGVmYXVsdCddLidfdHBsJywgJHBhcmFtc1sndHBsX2lkJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ2FqYXgnXSkpCnsKCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj48cCBjbGFzcz0icGFnZW1lc3NhZ2UiPicuJHRoaXMtPmxhbmcoJ3ByZWZzdXBkYXRlZCcpLic8L3A+PC9kaXY+JzsKCWV4aXQ7Cn0KZWxzZQp7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWVzc2FnZScgPT4gJ3ByZWZzdXBkYXRlZCcsICdzdWJtaXQnID0+IHRydWUpKTsKfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/AdvancedContent.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjMKIyBGaWxlICAgOiBBZHZhbmNlZENvbnRlbnQubW9kdWxlLnBocAojIFB1cnBvc2U6IGluaXRpYWwgbW9kdWxlIGNsYXNzLiB0aGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIE1vZHVsZSBBUEkKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgQWR2YW5jZWRDb250ZW50IGV4dGVuZHMgQ01TTW9kdWxlCnsKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgJF9kaXNwbGF5U2V0dGluZ3MgPSBhcnJheSgpOwoJcHJpdmF0ZSAkX2ZldUdyb3VwcyAgICAgICA9IGZhbHNlOwoJcHJvdGVjdGVkICRfcHAgPSAnPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxmb3JtIGFjdGlvbj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjciIgbWV0aG9kPSJwb3N0Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIiAvPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJob3N0ZWRfYnV0dG9uX2lkIiB2YWx1ZT0iRkEyRDNGUExTVEFLSiIgLz4KPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZW5fR0IvaS9idG4vYnRuX2RvbmF0ZV9MRy5naWYiIGJvcmRlcj0iMCIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4KPGltZyBhbHQ9IiIgYm9yZGVyPSIwIiBzcmM9Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vZGVfREUvaS9zY3IvcGl4ZWwuZ2lmIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiAvPgo8L2Zvcm0+PC9kaXY+JzsKCQoJZnVuY3Rpb24gQWR2YW5jZWRDb250ZW50KCkKCXsKCQlwYXJlbnQ6OkNNU01vZHVsZSgpOwoJCSR0aGlzLT5SZWdpc3RlckNvbnRlbnRUeXBlKCdDb250ZW50MicsIGRpcm5hbWUoX19GSUxFX18pIC4KCQkJRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjb250ZW50dHlwZS5Db250ZW50Mi5waHAnLCAnQWR2YW5jZWRDb250ZW50Jyk7Cgl9CgkKCWZ1bmN0aW9uIEdldE5hbWUoKQoJewoJCXJldHVybiAnQWR2YW5jZWRDb250ZW50JzsKCX0KCQoJZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ0FkdmFuY2VkQ29udGVudCcpOwoJfQoJCglmdW5jdGlvbiBHZXRWZXJzaW9uKCkKCXsKCQlyZXR1cm4gJzAuNi4zJzsKCX0KCQoJZnVuY3Rpb24gR2V0SGVscCgpCgl7CgkJcmV0dXJuICR0aGlzLT5fcHAuJHRoaXMtPmxhbmcoJ2hlbHAnKTsKCX0KCQoJZnVuY3Rpb24gR2V0QXV0aG9yKCkKCXsKCQlyZXR1cm4gJ0dlb3JnIEJ1c2NoIChOYU4pJzsKCX0KCQoJZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQoJewoJCXJldHVybjsKCX0KCQoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPl9wcC4kdGhpcy0+bGFuZygnY2hhbmdlbG9nJyk7Cgl9CgkKCWZ1bmN0aW9uIEhhc0NvbnRlbnRUeXBlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQoJewoJCXJldHVybiB0cnVlOwoJfQoJCglmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgkKCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCgl7CgkJcmV0dXJuICdleHRlbnNpb25zJzsKCX0KCQoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgl7CgkJcmV0dXJuICR0aGlzLT5sYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7Cgl9CgkKCWZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCgl7CgkJcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKSB8fCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXRzJykgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycpOwoJfQoJCglmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjYuOSI7Cgl9CgkKCWZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkKCXsKCQlyZXR1cm4gIjEuOC4zIjsKCX0KCQoJZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJywgJHRoaXMtPkdldFZlcnNpb24oKSk7Cgl9CgkKCWZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnLCAkdGhpcy0+R2V0VmVyc2lvbigpKTsKCX0KCQoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdjb25maXJtdW5pbnN0YWxsJyk7Cgl9CgkKCWZ1bmN0aW9uIEhhbmRsZXNFdmVudHMoKQoJewoJCXJldHVybiB0cnVlOwoJfQoJCglmdW5jdGlvbiBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCA9ICcnKQoJewoJCXN3aXRjaCgkYWN0aW9uKSB7CgkJCQoJCQljYXNlICdpbXBvcnRwYWdlcyc6CgkJCQkKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ29sZF90eXBlJ10pICYmIGlzc2V0KCRwYXJhbXNbJ25ld190eXBlJ10pCgkJCQkmJiAkcGFyYW1zWydvbGRfdHlwZSddICE9ICcnICYmICRwYXJhbXNbJ25ld190eXBlJ10gIT0gJycKCQkJCSYmICRwYXJhbXNbJ25ld190eXBlJ10gIT0gJHBhcmFtc1snb2xkX3R5cGUnXQoJCQkJJiYgKCRwYXJhbXNbJ25ld190eXBlJ10gPT0gJ2NvbnRlbnQnIHx8ICRwYXJhbXNbJ25ld190eXBlJ10gPT0gJ2NvbnRlbnQyJykKCQkJCSYmICgkcGFyYW1zWydvbGRfdHlwZSddID09ICdjb250ZW50JyB8fCAkcGFyYW1zWydvbGRfdHlwZSddID09ICdjb250ZW50MicpKQoJCQkJewoJCQkJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQkJCQkkcXVlcnkgICAgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFNFVCB0eXBlID0gPyBXSEVSRSB0eXBlID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1snbmV3X3R5cGUnXSwkcGFyYW1zWydvbGRfdHlwZSddKSk7CgkJCQkJaWYoJGRicmVzdWx0KQoJCQkJCXsKCQkJCQkJJG1lc3NhZ2UgPSAkdGhpcy0+bGFuZygnc3VjY2Vzc19pbXBvcnRwYWdlcycsJHRoaXMtPmxhbmcoJHBhcmFtc1snb2xkX3R5cGUnXSksICR0aGlzLT5sYW5nKCRwYXJhbXNbJ25ld190eXBlJ10pKTsKCQkJCQkJJF9wYXJhbXMgID0gYXJyYXkoCgkJCQkJCQknbmV3X3R5cGUnID0+ICRwYXJhbXNbJ25ld190eXBlJ10sCgkJCQkJCQknb2xkX3R5cGUnID0+ICRwYXJhbXNbJ29sZF90eXBlJ10sCgkJCQkJCQknbWVzc2FnZScgID0+ICdzdWNjZXNzX2ltcG9ydHBhZ2VzJyk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRfcGFyYW1zID0gYXJyYXkoCgkJCQkJCQknbmV3X3R5cGUnICAgICA9PiAkcGFyYW1zWyduZXdfdHlwZSddLAoJCQkJCQkJJ29sZF90eXBlJyAgICAgPT4gJHBhcmFtc1snb2xkX3R5cGUnXSwKCQkJCQkJCSdlcnJvcm1lc3NhZ2UnID0+ICdlcnJvcl9pbXBvcnRwYWdlcycpOwoJCQkJCQkkZXJyb3JtZXNzYWdlID0gJHRoaXMtPmxhbmcoJ2Vycm9yX2ltcG9ydHBhZ2VzJywkdGhpcy0+bGFuZygkcGFyYW1zWydvbGRfdHlwZSddKSwgJHRoaXMtPmxhbmcoJHBhcmFtc1snbmV3X3R5cGUnXSkpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkX3BhcmFtcyAgICAgID0gYXJyYXkoJ2Vycm9ybWVzc2FnZScgPT4gJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJCQkJCSRlcnJvcm1lc3NhZ2UgPSAkdGhpcy0+bGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJywgJ25ld190eXBlLCBvbGRfdHlwZScpOwoJCQkJfQoJCQkJCgkJCQlpZihpc3NldCgkcGFyYW1zWydhamF4J10pKQoJCQkJewoJCQkJCUBvYl9lbmRfY2xlYW4oKTsKCQkJCQlAb2Jfc3RhcnQoKTsKCQkJCQlpZihpc3NldCgkZXJyb3JtZXNzYWdlKSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+PHVsIGNsYXNzPSJwYWdlZXJyb3IiPjxsaT4nLiAkZXJyb3JtZXNzYWdlIC4gJzwvbGk+PC91bD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlpZihpc3NldCgkbWVzc2FnZSkpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+PHAgY2xhc3M9InBhZ2VtZXNzYWdlIj4nLiRtZXNzYWdlLic8L3A+PC9kaXY+JzsKCQkJCQl9CgkJCQkJb2JfZW5kX2ZsdXNoKCk7CgkJCQkJZXhpdDsKCQkJCX0KCQkJCSRfcGFyYW1zWydzdWJtaXQnXSA9IHRydWU7CgkJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkX3BhcmFtcyk7CgkJCQlicmVhazsKCQkJCgkJCWNhc2UgJ2RlbGV0ZU11bHRpSW5wdXQnOgoJCQkJJGl0ZW1zICAgICAgICA9IGFycmF5KCk7CgkJCQkkX3BhcmFtcyAgICAgID0gYXJyYXkoKTsKCQkJCSRtZXNzYWdlICAgICAgPSAnJzsKCQkJCSRlcnJvcm1lc3NhZ2UgPSAnJzsKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2lkJ10pKQoJCQkJewoJCQkJCSRpdGVtc1tdID0gJHBhcmFtc1snaW5wdXRfaWQnXTsKCQkJCX0KCQkJCWVsc2UgaWYoaXNzZXQoJHBhcmFtc1snc3VibWl0X2J1bGthY3Rpb24nXSkpCgkJCQl7CgkJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRwYXJhbV9uYW1lID0+ICRwYXJhbV92YWx1ZSkKCQkJCQl7CgkJCQkJCWlmKHN0YXJ0c3dpdGgoJHBhcmFtX25hbWUsJ211bHRpX2lucHV0LScpKQoJCQkJCQl7CgkJCQkJCQkkaXRlbXNbXSA9ICRwYXJhbV92YWx1ZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWlmKCR0aGlzLT5EZWxldGVNdWx0aUlucHV0KCRpdGVtcykpCgkJCQl7CgkJCQkJJF9wYXJhbXNbJ21lc3NhZ2UnXSA9ICdtdWx0aV9pbnB1dF9kZWxldGVkJzsKCQkJCQkkbWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfZGVsZXRlZCcpIC4gIjxiciAvPiI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJF9wYXJhbXNbJ2Vycm9ybWVzc2FnZSddID0gJ2Vycm9yX2RlbGV0ZV9tdWx0aV9pbnB1dCc7CgkJCQkJJGVycm9ybWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnZXJyb3JfZGVsZXRlX211bHRpX2lucHV0JykgLiAiPGJyIC8+IjsKCQkJCX0KCQkJCWlmKCEkdGhpcy0+RGVsZXRlVHBsQXNzb2MoJ211bHRpX2lucHV0JywkaXRlbXMpKQoJCQkJewoJCQkJCSRfcGFyYW1zWydtZXNzYWdlJ10gPSAnZXJyb3JfZGVsZXRlX211bHRpX2lucHV0X3RwbF9hc3NvY3MnOwoJCQkJCSRlcnJvcm1lc3NhZ2UgLj0gJHRoaXMtPmxhbmcoJ2Vycm9yX2RlbGV0ZV9tdWx0aV9pbnB1dF90cGxfYXNzb2NzJykuICI8YnIgLz4iOwoJCQkJfQoJCQkJJF9wYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdtdWx0aV9pbnB1dCc7CgkJCQkKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ2FqYXgnXSkpCgkJCQl7CgkJCQkJQG9iX2VuZF9jbGVhbigpOwoJCQkJCUBvYl9zdGFydCgpOwoJCQkJCWlmKCRlcnJvcm1lc3NhZ2UpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPjx1bCBjbGFzcz0icGFnZWVycm9yIj48bGk+Jy4gJGVycm9ybWVzc2FnZSAuICc8L2xpPjwvdWw+PC9kaXY+JzsKCQkJCQl9CgkJCQkJaWYoJG1lc3NhZ2UpCgkJCQkJewoJCQkJCQllY2hvICc8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+PHAgY2xhc3M9InBhZ2VtZXNzYWdlIj4nLiRtZXNzYWdlLic8L3A+PC9kaXY+JzsKCQkJCQl9CgkJCQkJb2JfZW5kX2ZsdXNoKCk7CgkJCQkJZXhpdDsKCQkJCX0KCQkJCQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJF9wYXJhbXMpOwoJCQkJYnJlYWs7CgkJCQoJCQljYXNlICdkZWxldGVNdWx0aUlucHV0VHBsJzoKCQkJCSRfcGFyYW1zID0gYXJyYXkoKTsKCQkJCSRtZXNzYWdlICAgICAgPSAnJzsKCQkJCSRlcnJvcm1lc3NhZ2UgPSAnJzsKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ3RwbF9pZCddKSkKCQkJCXsKCQkJCQkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sndHBsX2lkJ10pOwoJCQkJCSRfcGFyYW1zWydtZXNzYWdlJ10gPSAnbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnOwoJCQkJCSRtZXNzYWdlIC49ICR0aGlzLT5sYW5nKCdtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCcpIC4gIjxiciAvPiI7CgkJCQl9CgkJCQllbHNlIGlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9idWxrYWN0aW9uJ10pKQoJCQkJewoJCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAkcGFyYW1fbmFtZSA9PiAkcGFyYW1fdmFsdWUpCgkJCQkJewoJCQkJCQlpZihzdGFydHN3aXRoKCRwYXJhbV9uYW1lLCdtdWx0aV9pbnB1dF90cGwtJykpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1fdmFsdWUpOwoJCQkJCQkJJF9wYXJhbXNbJ21lc3NhZ2UnXSA9ICdtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCc7CgkJCQkJCQkkbWVzc2FnZSAuPSAkdGhpcy0+bGFuZygnbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnKSAuICI8YnIgLz4iOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJJF9wYXJhbXNbJ2FjdGl2ZV90YWInXSA9ICdtdWx0aV9pbnB1dF90cGwnOwoJCQkJaWYoaXNzZXQoJHBhcmFtc1snYWpheCddKSkKCQkJCXsKCQkJCQlAb2JfZW5kX2NsZWFuKCk7CgkJCQkJQG9iX3N0YXJ0KCk7CgkJCQkJaWYoJGVycm9ybWVzc2FnZSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VlcnJvcmNvbnRhaW5lciI+PHVsIGNsYXNzPSJwYWdlZXJyb3IiPjxsaT4nLiAkZXJyb3JtZXNzYWdlIC4gJzwvbGk+PC91bD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlpZigkbWVzc2FnZSkKCQkJCQl7CgkJCQkJCWVjaG8gJzxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj48cCBjbGFzcz0icGFnZW1lc3NhZ2UiPicuJG1lc3NhZ2UuJzwvcD48L2Rpdj4nOwoJCQkJCX0KCQkJCQlvYl9lbmRfZmx1c2goKTsKCQkJCQlleGl0OwoJCQkJfQoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJF9wYXJhbXMpOwoJCQkJYnJlYWs7CgkJCQkKCQkJY2FzZSAnZGVmYXVsdCc6CgkJCWNhc2UgJ3NhdmVQcmVmcyc6CgkJCWNhc2UgJ2RlZmF1bHRhZG1pbic6CgkJCWNhc2UgJ2FkZE11bHRpSW5wdXQnOgoJCQljYXNlICdlZGl0TXVsdGlJbnB1dCc6CgkJCWNhc2UgJ2FkZE11bHRpSW5wdXRUcGwnOgoJCQljYXNlICdlZGl0TXVsdGlJbnB1dFRwbCc6CgkJCQlwYXJlbnQ6OkRvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OiBicmVhazsKCQl9Cgl9CgkKCWZ1bmN0aW9uIERvRXZlbnQoJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICYkcGFyYW1zKQoJewoJCWlmKCRldmVudG5hbWUgPT0gJ0NvbnRlbnRFZGl0UG9zdCcgJiYgYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pID09ICdjb3B5Y29udGVudC5waHAnICYmIGlzc2V0KCRwYXJhbXNbJ2NvbnRlbnQnXSkgJiYgaXNfb2JqZWN0KCRwYXJhbXNbJ2NvbnRlbnQnXSkgJiYgJHBhcmFtc1snY29udGVudCddLT5UeXBlKCkgPT0gJ2NvbnRlbnQyJykKCQl7CgkJCWlmKGlzc2V0KCRfR0VUWydjb250ZW50X2lkJ10pKQoJCQl7CgkJCQkkb2xkX2NvbnRlbnRfaWQgPSAkX0dFVFsnY29udGVudF9pZCddOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJG9sZF9jb250ZW50X2lkID0gJHBhcmFtc1snY29udGVudCddLT5JZCgpOwoJCQl9CgkJCWZvcmVhY2goJHBhcmFtc1snY29udGVudCddLT5nZXRfY29udGVudF9ibG9ja3MoKSBhcyAkYmxvY2tJbmZvKQoJCQl7CgkJCQkkdGhpcy0+U2V0SXRlbURpc3BsYXkoJ2Jsb2NrJywgJGJsb2NrSW5mb1snaWQnXSwgJHBhcmFtc1snY29udGVudCddLT5JZCgpLCAkcGFyYW1zWydjb250ZW50J10tPlRlbXBsYXRlSWQoKSwKCQkJCQkkdGhpcy0+R2V0SXRlbURpc3BsYXkoJ2Jsb2NrJywgJGJsb2NrSW5mb1snaWQnXSwgJG9sZF9jb250ZW50X2lkLCAkcGFyYW1zWydjb250ZW50J10tPlRlbXBsYXRlSWQoKSwgISRibG9ja0luZm9bJ2NvbGxhcHNlJ10pKTsKCQkJfQoJCQlmb3JlYWNoKCRwYXJhbXNbJ2NvbnRlbnQnXS0+Z2V0X2Jsb2NrX2dyb3VwcygpIGFzICRncm91cEluZm8pCgkJCXsKCQkJCSR0aGlzLT5TZXRJdGVtRGlzcGxheSgnZ3JvdXAnLCAkZ3JvdXBJbmZvWydncm91cF9pZCddLCAkcGFyYW1zWydjb250ZW50J10tPklkKCksICRwYXJhbXNbJ2NvbnRlbnQnXS0+VGVtcGxhdGVJZCgpLAoJCQkJCSR0aGlzLT5HZXRJdGVtRGlzcGxheSgnZ3JvdXAnLCAkZ3JvdXBJbmZvWydncm91cF9pZCddLCAkb2xkX2NvbnRlbnRfaWQsICRwYXJhbXNbJ2NvbnRlbnQnXS0+VGVtcGxhdGVJZCgpLCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLDEpKSk7CgkJCX0KCQl9CgkJZWxzZSBpZiAoJGV2ZW50bmFtZSA9PSAnQ29udGVudFBvc3RSZW5kZXInKQoJCXsKCQkJZ2xvYmFsICRnQ21zOwoJCQkkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJCQkkcmVkaXJlY3QgPSBmYWxzZTsKCQkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCQkjIGdldCBhbGwgY29udGVudCBvZiB0eXBlIGFkdmFuY2VkIHRoYXQgbmVlZCB0byBiZSBzZXQgdG8gYWN0aXZlL2luYWN0aXZlCgkJCSRxdWVyeSA9ICJTRUxFQ1QgQy5jb250ZW50X2lkLCBDLmFjdGl2ZQoJCQkJRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnQgQwoJCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBVU0VfRVhQCgkJCQkJT04gVVNFX0VYUC5jb250ZW50X2lkID0gQy5jb250ZW50X2lkCgkJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50X3Byb3BzIFNUQVJUX0RBVEUKCQkJCQlPTiBTVEFSVF9EQVRFLmNvbnRlbnRfaWQgPSBDLmNvbnRlbnRfaWQKCQkJCUxFRlQgSk9JTiAiIC4gY21zX2RiX3ByZWZpeCgpIC4gImNvbnRlbnRfcHJvcHMgRU5EX0RBVEUKCQkJCQlPTiBFTkRfREFURS5jb250ZW50X2lkID0gQy5jb250ZW50X2lkCgkJCQlXSEVSRQoJCQkJCUMudHlwZSA9ID8gQU5ECgkJCQkJVVNFX0VYUC5wcm9wX25hbWUgPSA/IEFORAoJCQkJCVVTRV9FWFAuY29udGVudCA9ID8gQU5EICgKCQkJCQkJKAoJCQkJCQkJU1RBUlRfREFURS5wcm9wX25hbWUgPSA/IEFORAoJCQkJCQkJU1RBUlRfREFURS5jb250ZW50IDw9ID8gQU5ECgkJCQkJCQlFTkRfREFURS5wcm9wX25hbWUgPSA/IEFORAoJCQkJCQkJRU5EX0RBVEUuY29udGVudCA+ID8gQU5ECgkJCQkJCQlDLmFjdGl2ZSA9ID8KCQkJCQkJKQoJCQkJCQlPUgoJCQkJCQkoCgkJCQkJCQlFTkRfREFURS5wcm9wX25hbWUgPSA/IEFORAoJCQkJCQkJRU5EX0RBVEUuY29udGVudCA8PSA/IEFORAoJCQkJCQkJQy5hY3RpdmUgPSA/CgkJCQkJCSkKCQkJCQkpCgkJCQkiOwoJCQkJCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50MicsICd1c2VfZXhwaXJlX2RhdGUnLAoJCQkJJzEnLCAnc3RhcnRfZGF0ZScsIHRpbWUoKSwgJ2VuZF9kYXRlJywgdGltZSgpLCAwLCAnZW5kX2RhdGUnLAoJCQkJdGltZSgpLCAxKSk7CgkJCQoJCQkkY29udGVudHMgPSBhcnJheSgpOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJewoJCQkJaWYoJHJvd1snYWN0aXZlJ10pCgkJCQl7CgkJCQkJJGNvbnRlbnRzWyRyb3dbJ2NvbnRlbnRfaWQnXV0gPSAwOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRjb250ZW50c1skcm93Wydjb250ZW50X2lkJ11dID0gMTsKCQkJCX0KCQkJfQoJCQlpZihjb3VudCgkY29udGVudHMpKQoJCQl7CgkJCQkkZ0Ntcy0+R2V0U21hcnR5KCktPmNsZWFyX2FsbF9jYWNoZSgpOwoJCQkJZm9yZWFjaCgkY29udGVudHMgYXMgJGNvbnRlbnRJZD0+JGFjdGl2ZSkKCQkJCXsKCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50CgkJCQkJCVNFVCBhY3RpdmUgPSA/IFdIRVJFIGNvbnRlbnRfaWQgPSA/IjsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWN0aXZlLCAkY29udGVudElkKSk7CgkJCQkJaWYoJGNvbnRlbnRJZCA9PSAkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X2lkKQoJCQkJCXsKCQkJCQkJJHJlZGlyZWN0ID0gJGNvbnRlbnRJZDsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJaWYoJHJlZGlyZWN0KQoJCQl7CgkJCQkkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZWRpcmVjdCk7CgkJCX0KCQl9Cgl9CgkKCS8qKgoJICogQHRvZG86IHRlc3QgcGFyYW1ldGVybGlzdAoJICovCglmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCkKCXsKCQkkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCQkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3VuaW5zdGFsbF9hY3Rpb24nLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JlZGlyZWN0X3BhZ2UnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JlZGlyZWN0X3BhcmFtcycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXZhbHVhdGVfc21hcnR5JyxDTEVBTl9JTlQpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpdGVtX2Rpc3BsYXknLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2l0ZW1fdHlwZScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaXRlbV9pZCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYmxvY2tfaWQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2dyb3VwX2lkJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0ZW1wbGF0ZV9pZCcsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29udGVudF9pZCcsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWpheCcsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZmV1X2FjdGlvbicsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZmV1X2FjY2VzcycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZHJvcGRvd24nLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RlZmF1bHRfbW9kZScsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbWVzc2FnZScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXJyb3JtZXNzYWdlJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzdWJtaXQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Vycm9ybWVzc2FnZScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW1wb3J0cGFnZXMnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Fzc2lnbicsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGV4dCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGl0bGUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FyZWEnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JldHVybmlkJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsYWJlbCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2xhc3MnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lkJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCduYW1lJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3aWR0aCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGVpZ2h0JyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbHQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Jsb2NrJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzbWFydHknLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3R5cGUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Jsb2NrX3R5cGUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RlZmF1bHQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0eWxlJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaXplJyxDTEVBTl9JTlQpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdibG9ja190YWInLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhZ2VfdGFiJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtYXhsZW5ndGgnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3d5c2l3eWcnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ29uZWxpbmUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZGUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0YXJ0X3RpbWUnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VuZF90aW1lJyxDTEVBTl9JTlQpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX2Zvcm1hdCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3RhcnRfaG91cicsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW5kX2hvdXInLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0YXJ0X21pbnV0ZScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW5kX21pbnV0ZScsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3RhcnRfc2Vjb25kcycsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW5kX3NlY29uZHMnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Nob3dfY2xvY2snLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0ZXBfaG91cnMnLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N0ZXBfbWludXRlcycsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3RlcF9zZWNvbmRzJyxDTEVBTl9JTlQpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93MjRoJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbGxvd19ub25lJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZWxpbWl0ZXInLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2l0ZW1zJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd2YWx1ZXMnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZHVsZScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndXJsb25seScsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZWRpdG9yX2dyb3VwcycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZWRpdG9yX3VzZXJzJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3RpdmUnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RyYW5zbGF0ZV9sYWJlbHMnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RyYW5zbGF0ZV92YWx1ZXMnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Jsb2NrX2Rpc3BsYXlfc2V0dGluZ3MnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21lc3NhZ2VfZGlzcGxheV9zZXR0aW5ncycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZ3JvdXBfZGlzcGxheV9zZXR0aW5ncycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucycsQ0xFQU5fSU5UKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfaWQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X2ZpZWxkcycsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3VibWl0X2J1bGthY3Rpb24nLENMRUFOX0lOVCk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Rlc2NyaXB0aW9uJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbnB1dHMnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X2RlbGltaXRlcicsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndmFsdWVfZGVsaW1pdGVyJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdibG9ja19ncm91cCcsQ0xFQU5fU1RSSU5HKTsKCQkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGlyJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd1cGxvYWQnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NvcnRhYmxlJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmZXVfYWNjZXNzJyxDTEVBTl9TVFJJTkcpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmZXVfYWN0aW9uJyxDTEVBTl9JTlQpOwoJCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwcmVmaXgnLENMRUFOX1NUUklORyk7CgkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2V4Y2x1ZGUnLENMRUFOX0lOVCk7Cgl9CgkKCS8qKgoJICogQGxpbmsgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGlkb2MvQ01TL0NNU01vZHVsZS5odG1sI0dldEhlYWRlckhUTUwKCSAqIEBpZ25vcmUKCSAqLwoJZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpCgl7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfaWQnLCAnbTFfJyk7CgkJcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlYWRlci50cGwnKTsKCX0KCQovKioKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogTm90IHBhcnQgb2YgdGhlIENNU21zIG1vZHVsZSBBUEkKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBJc1ZhckVtcHR5KCR2YXIsICR0cmltLCAkdW5zZXRFbXB0eUluZGV4ZXMpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogY2hlY2tzIGlmIGEgdmFyIGlzIGVtcHR5LiBpZiB2YXIgaXMgYW4gYXJyYXkgaXQgcmVjdXJzaXZsZXkgY2hlY2tzIGFsbCBlbGVtZW50cwoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFyIC0gdGhlIHZhciB0byBjaGVjayBmb3IgZW1wdHkgdmFsdWUocykKCSAqIEBwYXJhbSBib29sZWFuICR0cmltIC0gdHJ1ZSB0byB0cmltIG9mZiBzcGFjZXMKCSAqIEBwYXJhbSBib29sZWFuICR1bnNldEVtcHR5SW5kZXhlcyAtIHRydWUgdG8gZGVsZXRlIGVtcHR5IGVsZW1lbnRzIGZyb20gYXJyYXkKCSAqIEByZXR1cm4gYm9vbGVhbiAtIHRydWUgaWYgZW1wdHksIGZhbHNlIGlmIG5vdAoJICovCglmdW5jdGlvbiBJc1ZhckVtcHR5KCYkdmFyLCAkdHJpbSA9IHRydWUsICR1bnNldEVtcHR5SW5kZXhlcyA9IGZhbHNlKQoJewoJCWlmIChpc19hcnJheSgkdmFyKSkKCQl7CgkJCWZvcmVhY2ggKCR2YXIgYXMgJGs9PiR2KQoJCQl7CgkJCQlpZiAoISR0aGlzLT5Jc1ZhckVtcHR5KCR2KSkKCQkJCXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJaWYoJHVuc2V0RW1wdHlJbmRleGVzKQoJCQkJCQl1bnNldCgkdmFyWyRrXSk7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQl9CgkJZWxzZSBpZigkdHJpbSAmJiB0cmltKCR2YXIpID09ICcnKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWVsc2UgaWYoJHZhciA9PSAnJykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBDbGVhbkFycmF5KCRhcnJheSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiByZW1vdmVzIGVtcHR5IGVsZW1lbnRzIGZyb20gYW4gYXJyYXkKCSAqIChjYW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgZnVuY3Rpb24gZXhwbG9kZSB0byBjcmVhdGUgdGhlIGFycmF5IG9mIGEgY3N2KQoJICoKCSAqIEBwYXJhbSBhcnJheSAkYXJyYXkgLSB0aGUgYXJyYXkgdG8gY2xlYW4gdXAKCSAqIEByZXR1cm4gYXJyYXkgLSBhbiBhcnJheSB3aXRob3V0IGVtcHR5IGVsZW1lbnRzIG9yIGFuIGVtcHR5IGFycmF5CgkgKi8KCWZ1bmN0aW9uIENsZWFuQXJyYXkoJGFycmF5KQoJewoJCWlmIChpc19hcnJheSgkYXJyYXkpKQoJCXsKCQkJZm9yZWFjaCAoJGFycmF5IGFzICRrPT4kdikKCQkJewoJCQkJaWYgKCR0aGlzLT5Jc1ZhckVtcHR5KCR2LHRydWUsdHJ1ZSkpCgkJCQl7CgkJCQkJdW5zZXQoJGFycmF5WyRrXSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJaWYoaXNfYXJyYXkoJHYpKQoJCQkJCXsKCQkJCQkJJHYgPSAkdGhpcy0+Q2xlYW5BcnJheSgkdik7CgkJCQkJCWlmKCR0aGlzLT5Jc1ZhckVtcHR5KCR2LHRydWUsdHJ1ZSkpCgkJCQkJCQl1bnNldCgkYXJyYXlbJGtdKTsKCQkJCQkJZWxzZQoJCQkJCQkJJGFycmF5WyRrXSA9ICR2OwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlyZXR1cm4gJGFycmF5OwoJCX0KCQlyZXR1cm4gYXJyYXkoKTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIEdldFBhZ2VzKCkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBnZXRzIGFsbCBwYWdlcyB0byBsaXN0IGluIGEgZHJvcGRvd24KCSAqCgkgKiBAcmV0dXJuIGFycmF5IC0gYSBzZXQgb2YgcGFnZXMKCSAqLwoJZnVuY3Rpb24gR2V0UGFnZXMoKQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiU0VMRUNUIEMuYWN0aXZlLCBDLnR5cGUsIEMuY29udGVudF9pZCwgQy5oaWVyYXJjaHksIEMubWVudV90ZXh0LCBDUC5jb250ZW50IEZST00gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50IEMKCQkJTEVGVCBKT0lOICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBDUCBPTiBDUC5jb250ZW50X2lkID0gQy5jb250ZW50X2lkIEFORCBDUC5wcm9wX25hbWUgPSA/CgkJCU9SREVSIEJZIGhpZXJhcmNoeSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2ZldV9hY2Nlc3MnKSk7CgkJaWYoISRwYWdlcyA9ICRkYnJlc3VsdC0+R2V0QXJyYXkoKSkKCQkJcmV0dXJuIGFycmF5KCk7CgkJcmV0dXJuICRwYWdlczsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIENyZWF0ZVJlZGlyZWN0RHJvcGRvd24oKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIHRoaXMgY3JlYXRlcyBhIGRyb3Bkb3duIG9mIHBhZ2VzIGluY2x1ZGluZyBvbmx5IHBhZ2VzIG9mIHR5cGUgY29udGVudCBidXQKCSAqIGV4Y2x1ZGluZyB0aGUgY3VycmVudCBwYWdlIGFuZCBwYWdlcyB0aGF0IG1heSBvbmx5IGJlIGFjY2Vzc2VkIGJ5IGZyb250ZW5kIHVzZXJzCgkgKgoJICogQHJldHVybiBzdHJpbmcgLSBIVE1MIHNlbGVjdCBlbGVtZW50IHdpdGggb3B0aW9ucwoJICovCglmdW5jdGlvbiBDcmVhdGVSZWRpcmVjdERyb3Bkb3duKCRpZCA9ICcnLCAkbmFtZSA9ICdyZWRpcmVjdF9wYWdlJywgJHNlbGVjdGVkUGFnZSA9ICcnLCAkY3VycmVudFBhZ2UgPSAnJykKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJHBhZ2VzICAgICAgPSAkdGhpcy0+R2V0UGFnZXMoKTsKCQkkZHJvcGRvd24gICA9ICc8c2VsZWN0IG5hbWU9IicuJGlkLiRuYW1lLiciID4nOwoJCSRkcm9wZG93biAgLj0gJzxvcHRpb24gdmFsdWU9IiInIC4gKCRzZWxlY3RlZFBhZ2UgPT0gJyc/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykgLiAnPicgLiBsYW5nKCdub25lJykgLiAnPC9vcHRpb24+JzsKCQkkZHJvcGRvd24gIC49ICc8b3B0aW9uIHZhbHVlPSItMSInIC4gKCRzZWxlY3RlZFBhZ2UgPT0gJy0xJz8nIHNlbGVjdGVkPSJzZWxlY3RlZCInOicnKSAuICc+JyAuICR0aGlzLT5sYW5nKCdpbmhlcml0X2Zyb21fcGFyZW50JykgLiAnPC9vcHRpb24+JzsKCQkkY29udGVudG9wcyA9JiAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCQlmb3JlYWNoKCRwYWdlcyBhcyAkcGFnZSkKCQl7CgkJCSRkaXNhYmxlZCA9ICcnOwoJCQkjIGRvbid0IHJlZGlyZWN0IHRvIHBhZ2VzIHdpdGggbm8gcHVibGljIGFjY2VzcywgaW52YWxpZCBjb250ZW50IHR5cGUsIGluYWN0aXZlIG9yIHNhbWUgY29udGVudCBpZAoJCQlpZigkcGFnZVsnYWN0aXZlJ10gIT0gMSB8fCAkcGFnZVsnY29udGVudCddPjAgfHwgJHBhZ2VbJ2NvbnRlbnRfaWQnXSA9PSAkY3VycmVudFBhZ2UgfHwgKCRwYWdlWyd0eXBlJ10gIT0gJ2NvbnRlbnQnICYmICRwYWdlWyd0eXBlJ10gIT0gJ2NvbnRlbnQyJykpCgkJCQkkZGlzYWJsZWQgPSAnIGRpc2FibGVkPSJkaXNhYmxlZCInOwoJCQkKCQkJJGRyb3Bkb3duIC49ICc8b3B0aW9uJy4gJGRpc2FibGVkIC4nIHZhbHVlPSInIC4gJHBhZ2VbJ2NvbnRlbnRfaWQnXSAuICciICcgLgoJCQkJKCRzZWxlY3RlZFBhZ2UgPT0gJHBhZ2VbJ2NvbnRlbnRfaWQnXSAmJiAkZGlzYWJsZWQgPT0gJyc/J3NlbGVjdGVkPSJzZWxlY3RlZCInOicnKSAuICc+JyAuCgkJCQkkY29udGVudG9wcy0+Q3JlYXRlRnJpZW5kbHlIaWVyYXJjaHlQb3NpdGlvbigkcGFnZVsnaGllcmFyY2h5J10pIC4KCQkJCScgLSAnIC4gJHBhZ2VbJ21lbnVfdGV4dCddIC4gKCRkaXNhYmxlZCAhPSAnJz8nICgnIC4gJHRoaXMtPmxhbmcoJ2ludmFsaWQnKSAuICcpJzonJykgLiAnPC9vcHRpb24+JzsKCQl9CgkJJGRyb3Bkb3duIC49ICc8L3NlbGVjdD4nOwoJCXJldHVybiAkZHJvcGRvd247Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBJc1RydWUoJHZhbHVlKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGNoZWNrcyBpZiBhIHZhbHVlIGlzIGxpdGVyYWxseSAidHJ1ZSIKCSAqIGNhbiBiZSB1c2VmdWxsIHdoZW4gY2hlY2tpbmcgc21hcnR5IHBhcmFtcyBmb3IgdGhlIHZhbHVlIHRydWUKCSAqCgkgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIC0gdGhlIHZhbHVlIHRvIGNoZWNrCgkgKiBAcmV0dXJuIGJvb2wKCSAqLwoJZnVuY3Rpb24gSXNUcnVlKCR2YWx1ZSkKCXsKCQlyZXR1cm4gKHN0cnRvbG93ZXIoJHZhbHVlKSA9PT0gJ3RydWUnIHx8ICR2YWx1ZSA9PT0gMSB8fCAkdmFsdWUgPT09ICcxJyB8fCAkdmFsdWUgPT09IHRydWUpOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gSXNGYWxzZSgkdmFsdWUpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogY2hlY2tzIGlmIGEgdmFsdWUgaXMgbGl0ZXJhbGx5ICJmYWxzZSIKCSAqIGNhbiBiZSB1c2VmdWxsIHdoZW4gY2hlY2tpbmcgc21hcnR5IHBhcmFtcyBmb3IgdGhlIHZhbHVlIGZhbHNlCgkgKgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAtIHRoZSB2YWx1ZSB0byBjaGVjawoJICogQHJldHVybiBib29sCgkgKi8KCWZ1bmN0aW9uIElzRmFsc2UoJHZhbHVlKQoJewoJCXJldHVybiAoc3RydG9sb3dlcigkdmFsdWUpID09PSAnZmFsc2UnIHx8ICR2YWx1ZSA9PT0gJzAnIHx8ICR2YWx1ZSA9PT0gMCB8fCAkdmFsdWUgPT09IGZhbHNlIHx8ICR2YWx1ZSA9PT0gJycpOwoJfQoJCgkKCS8qKgoJICogc2F2ZXMgdGhlIGRpc3BsYXkgc3RhdHVzIG9mIGNvbnRlbnQgYmxvY2tzLCBjb250ZW50IGJsb2NrcyBtZXNzYWdlcyBhbmQgYmxvY2sgZ3JvdXBzCgkgKgoJICogQHBhcmFtIGludCAkY29udGVudF9pZCAtIHRoZSBpZCBvZiB0aGUgY29udGVudCB3aGVyZSB0byBzZXQgdGhlIGRpc3BsYXkgc3RhdHVzCgkgKiBAcGFyYW0gaW50ICR0ZW1wbGF0ZV9pZCAtIHRoZSBpZCBvZiB0aGUgdGVtcGxhdGUgd2hlcmUgdG8gc2V0IHRoZSBkaXNwbGF5IHN0YXR1cwoJICogQHBhcmFtIHN0cmluZyAkYmxvY2tfaWQgLSB0aGUgY29udGVudCBibG9jayB0byB0b2dnbGUgdGhlIGJsb2NrIGl0c2VsZiBvciB0aGUgbWVzc2FnZS9ncm91cAoJICogQHBhcmFtIGludCAkZGlzcGxheSAtIDAgdG8gaGlkZSwgMSB0byBzaG93CgkgKgoJICovCglmdW5jdGlvbiBTZXRJdGVtRGlzcGxheSgkaXRlbV90eXBlLCAkaXRlbV9pZCwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCwgJGRpc3BsYXkpCgl7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgaXRlbV9kaXNwbGF5IEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kaXRlbV90eXBlLiJkaXNwbGF5CgkJCVdIRVJFIHVzZXJfaWQgPSA/IEFORCBpdGVtX2lkID0gPyBBTkQgIjsKCQkKCQkkcSA9IGFycmF5KCk7CgkJJHAgPSBhcnJheShnZXRfdXNlcmlkKCksICRpdGVtX2lkKTsKCQkKCQlpZigkY29udGVudF9pZAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnY29udGVudCcKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkcVtdID0gImNvbnRlbnRfaWQgPSA/IjsKCQkJJHBbXSA9ICRjb250ZW50X2lkOwoJCX0KCQkKCQlpZigkdGVtcGxhdGVfaWQgPiAwCgkJJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICd0ZW1wbGF0ZScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkcVtdID0gInRlbXBsYXRlX2lkID0gPyI7CgkJCSRwW10gPSAkdGVtcGxhdGVfaWQ7CgkJfQoJCQoJCWlmKCFjb3VudCgkcSkpIHsKCQkJcmV0dXJuOwoJCX0KCQkKCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBPUiAiLCRxKSAuICIpIjsKCQl9CgkJZWxzZSBpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBBTkQgIiwkcSkgLiAiKSI7CgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSAuPSAkcVswXTsKCQl9CgkJCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7CgkJCWVjaG8gJGRpc3BsYXk7CgkJCWFycmF5X3Vuc2hpZnQoJHAsJGRpc3BsYXkpOwoJCQkkcXVlcnkgPSAiVVBEQVRFICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50XyIuJGl0ZW1fdHlwZS4iZGlzcGxheQoJCQkJU0VUIGl0ZW1fZGlzcGxheSA9ID8gV0hFUkUgdXNlcl9pZCA9ID8gQU5EIGl0ZW1faWQgPSA/IEFORCAiLmltcGxvZGUoJyBBTkQgJywkcSk7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuIGNtc19kYl9wcmVmaXgoKSAuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kaXRlbV90eXBlLiJkaXNwbGF5CgkJCQkodXNlcl9pZCwgY29udGVudF9pZCwgdGVtcGxhdGVfaWQsIGl0ZW1faWQsIGl0ZW1fZGlzcGxheSkgVkFMVUVTICg/LD8sPyw/LD8pIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoZ2V0X3VzZXJpZCgpLCAkY29udGVudF9pZCwgJHRlbXBsYXRlX2lkLCAkaXRlbV9pZCwgJGRpc3BsYXkpKTsKCQl9CgkJJHRoaXMtPl9kaXNwbGF5U2V0dGluZ3NbJGl0ZW1fdHlwZV1baW1wbG9kZSgnXycsYXJyYXkoJGNvbnRlbnRfaWQsJHRlbXBsYXRlX2lkKSldWyRpdGVtX2lkXSA9ICRkaXNwbGF5OwoJfQoJCgkKCS8qKgoJICogZ2V0cyB0aGUgZGlzcGxheSBzdGF0dXMgb2YgY29udGVudCBibG9ja3MsIGNvbnRlbnQgYmxvY2tzIG1lc3NhZ2VzIG9yIGJsb2NrIGdyb3VwcwoJICoKCSAqIEBwYXJhbSBpbnQgJGl0ZW1fdHlwZSAtIHRoZSBpZCBvZiB0aGUgY29udGVudC90ZW1wbGF0ZSB0byBnZXQgdGhlIGRpc3BsYXkgc3RhdHVzIGZyb20KCSAqIEBwYXJhbSBpbnQgJHRwbF9vcl9jb250ZW50X2lkIC0gdGhlIGlkIG9mIHRoZSBjb250ZW50L3RlbXBsYXRlIHRvIGdldCB0aGUgZGlzcGxheSBzdGF0dXMgZnJvbQoJICogQHBhcmFtIHN0cmluZyAkYmxvY2tfaWQgLSB0aGUgY29udGVudCBibG9jayB0byBnZXQgdGhlIGRpc3BsYXkgc3RhdHVzIGZyb20KCSAqIEBwYXJhbSBpbnQgJGRlZmF1bHRfdmFsdWUgLSB0aGUgZGVmYXVsdCBzdGF0dXMgaWYgbm90aGluZyBpcyBmb3VuZAoJICoKCSAqIEByZXR1cm4gYm9vbGVhbiAtIDAgPSBoaWRkZW4sIDEgPSBzaG93bgoJICovCglmdW5jdGlvbiBHZXRJdGVtRGlzcGxheSgkaXRlbV90eXBlLCAkaXRlbV9pZCwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCwgJGRlZmF1bHRfdmFsdWUgPSAxKQoJewoJCSRpZHMgPSBhcnJheSgpOwoJCQoJCWlmKCRjb250ZW50X2lkCgkJJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdjb250ZW50JwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKSkKCQl7CgkJCSRpZHNbXSA9ICRjb250ZW50X2lkOwoJCX0KCQkKCQlpZigkdGVtcGxhdGVfaWQgPiAwCgkJJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICd0ZW1wbGF0ZScKCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgyJykpCgkJewoJCQkkaWRzW10gPSAkdGVtcGxhdGVfaWQ7CgkJfQoJCQoJCWlmKCFjb3VudCgkaWRzKSkKCQl7CgkJCXJldHVybiAkZGVmYXVsdF92YWx1ZTsKCQl9CgkJCgkJaWYoIWlzc2V0KCR0aGlzLT5fZGlzcGxheVNldHRpbmdzWyRpdGVtX3R5cGVdW2ltcGxvZGUoJ18nLCRpZHMpXSkpCgkJewoJCQkkdGhpcy0+R2V0QWxsSXRlbXNEaXNwbGF5KCRpdGVtX3R5cGUsICRjb250ZW50X2lkLCAkdGVtcGxhdGVfaWQpOwoJCX0KCQlpZighaXNzZXQoJHRoaXMtPl9kaXNwbGF5U2V0dGluZ3NbJGl0ZW1fdHlwZV1baW1wbG9kZSgnXycsJGlkcyldWyRpdGVtX2lkXSkpCgkJewoJCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVtpbXBsb2RlKCdfJywkaWRzKV1bJGl0ZW1faWRdID0gJGRlZmF1bHRfdmFsdWU7CgkJfQoJCXJldHVybiAkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVtpbXBsb2RlKCdfJywkaWRzKV1bJGl0ZW1faWRdOwoJfQoJCgkKCS8qKgoJICogZ2V0cyB0aGUgZGlzcGxheSBzdGF0dXMgb2YgYWxsIGNvbnRlbnQgYmxvY2tzLCBjb250ZW50IGJsb2NrcyBtZXNzYWdlcyBvciBibG9jayBncm91cHMgb2YgYSBnaXZlbiB0ZW1wbGF0ZSBvciBjb250ZW50IGlkCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBpZ25vcmUKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBHZXRBbGxJdGVtc0Rpc3BsYXkoJGl0ZW1fdHlwZSwgJGNvbnRlbnRfaWQsICR0ZW1wbGF0ZV9pZCkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kaXRlbV90eXBlLiJkaXNwbGF5CgkJCVdIRVJFIHVzZXJfaWQgPSA/IEFORCAiOwoJCQoJCSRxID0gYXJyYXkoKTsKCQkkcCA9IGFycmF5KGdldF91c2VyaWQoKSk7CgkJCgkJaWYoJGNvbnRlbnRfaWQKCQkmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2NvbnRlbnQnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJjb250ZW50X2lkID0gPyI7CgkJCSRwW10gPSAkY29udGVudF9pZDsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlX2lkID4gMAoJCSYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAndGVtcGxhdGUnCgkJfHwgJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCXx8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpID09ICdib3RoMicpKQoJCXsKCQkJJHFbXSA9ICJ0ZW1wbGF0ZV9pZCA9ID8iOwoJCQkkcFtdID0gJHRlbXBsYXRlX2lkOwoJCX0KCQkKCQlpZighY291bnQoJHEpKQoJCXsKCQkJcmV0dXJuOwoJCX0KCQkKCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDEnKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBPUiAiLCRxKSAuICIpIjsKCQl9CgkJZWxzZSBpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKQoJCXsKCQkJJHF1ZXJ5IC49ICIoIiAuIGltcGxvZGUoIiBBTkQgIiwkcSkgLiAiKSI7CgkJfQoJCWVsc2UKCQl7CgkJCSRxdWVyeSAuPSAkcVswXTsKCQl9CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJGl0ZW1fdHlwZS4nX2Rpc3BsYXlfc2V0dGluZ3MnLCdjb250ZW50JykgPT0gJ2JvdGgxJwoJCQl8fCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgkaXRlbV90eXBlLidfZGlzcGxheV9zZXR0aW5ncycsJ2NvbnRlbnQnKSA9PSAnYm90aDInKQoJCQl7CgkJCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVskcm93Wydjb250ZW50X2lkJ10gLiAnXycgLiAkcm93Wyd0ZW1wbGF0ZV9pZCddXVskcm93WydpdGVtX2lkJ11dID0gJHJvd1snaXRlbV9kaXNwbGF5J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+X2Rpc3BsYXlTZXR0aW5nc1skaXRlbV90eXBlXVskcm93WyR0aGlzLT5HZXRQcmVmZXJlbmNlKCRpdGVtX3R5cGUuJ19kaXNwbGF5X3NldHRpbmdzJywnY29udGVudCcpLidfaWQnXV1bJHJvd1snaXRlbV9pZCddXSA9ICRyb3dbJ2l0ZW1fZGlzcGxheSddOwoJCQl9CgkJfQoJfQoJCglmdW5jdGlvbiBHZXRNdWx0aUlucHV0RnVsbCgkaW5wdXRzID0gYXJyYXkoKSkKCXsKCQlpZighaXNfYXJyYXkoJGlucHV0cykpCgkJewoJCQkkaW5wdXRzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsJGlucHV0cykpOwoJCX0KCQkkZGIgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gIlNFTEVDVCBNVUxUSV9JTlBVVC4qLCBUUExfQVNTT0NTLnRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIE1VTFRJX0lOUFVUCgkJCUxFRlQgT1VURVIgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dF90cGxfYXNzb2NzIFRQTF9BU1NPQ1MKCQkJT04gTVVMVElfSU5QVVQuaW5wdXRfaWQgPSBUUExfQVNTT0NTLmlucHV0X2lkIjsKCQkKCQkkcSAgICAgPSBhcnJheSgpOwoJCSRwICAgICA9IGFycmF5KCk7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW5wdXRzIGFzICRpbnB1dF9pZCkKCQl7CgkJCSRxWyRpbnB1dF9pZF0gPSAiTVVMVElfSU5QVVQuaW5wdXRfaWQgPSA/IjsKCQkJJHBbJGlucHV0X2lkXSA9ICRpbnB1dF9pZDsKCQl9CgkJaWYoY291bnQoJHApKQoJCXsKCQkJJHF1ZXJ5IC49ICIgV0hFUkUgIiAuIGltcGxvZGUoIiBPUiAiLCAkcSk7CgkJfQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1snaW5wdXRfaWQnXV0gPSAkcm93OwoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gR2V0TXVsdGlJbnB1dCgkaW5wdXRfaWQpCgl7CgkJJGRiICAgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgICA9ICJTRUxFQ1QgaW5wdXRfZmllbGRzIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIFdIRVJFIGlucHV0X2lkID0gPyBMSU1JVCAxIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaW5wdXRfaWQpKTsKCQlpZigkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCXJldHVybiAkcm93WydpbnB1dF9maWVsZHMnXTsKCQl9Cgl9CgkKCWZ1bmN0aW9uIEdldE11bHRpSW5wdXRMaXN0KCkKCXsKCQkkZGIgICAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBBLmlucHV0X2lkLCBCLnRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIEEKCQkJTEVGVCBKT0lOICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MgQgoJCQlPTiBBLmlucHV0X2lkID0gQi5pbnB1dF9pZCI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkcmV0dXJuX2FycmF5W10gPSAkcm93OwoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gQWRkTXVsdGlJbnB1dCgkaW5wdXRfaWQsICRpbnB1dF9maWVsZHMpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgaW5wdXRfaWQgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMKCQkJV0hFUkUgaW5wdXRfaWQgPSA/IExJTUlUIDEiOwoJCQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9pZCkpOwoJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4gY21zX2RiX3ByZWZpeCgpIC4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMKCQkJKGlucHV0X2lkLCBpbnB1dF9maWVsZHMpIFZBTFVFUyAoPyw/KSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlucHV0X2lkLCAkaW5wdXRfZmllbGRzKSk7CgkJcmV0dXJuICRkYnJlc3VsdDsKCX0KCQoJZnVuY3Rpb24gVXBkYXRlTXVsdGlJbnB1dCgkaW5wdXRfaWQsICRpbnB1dF9maWVsZHMpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzCgkJCVNFVCBpbnB1dF9maWVsZHMgPSA/IFdIRVJFIGlucHV0X2lkID0gPyAiOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRpbnB1dF9maWVsZHMsICRpbnB1dF9pZCkpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIFVwZGF0ZVRwbEFzc29jKCR0cGxfdHlwZSwgJGlucHV0X2lkLCAkdHBsX25hbWUpCgl7CgkJJGRiICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSA9ICJVUERBVEUgIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kdHBsX3R5cGUuIl90cGxfYXNzb2NzCgkJCVNFVCB0cGxfbmFtZSA9ID8gV0hFUkUgaW5wdXRfaWQgPSA/ICI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRwbF9uYW1lLCAkaW5wdXRfaWQpKTsKCQlyZXR1cm4gJGRicmVzdWx0OwoJfQoJCglmdW5jdGlvbiBBZGRUcGxBc3NvYygkdHBsX3R5cGUsICRpbnB1dF9pZCwgJHRwbF9uYW1lKQoJewoJCSRkYiAgICA9JiAkdGhpcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi4gY21zX2RiX3ByZWZpeCgpIC4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF8iLiR0cGxfdHlwZS4iX3RwbF9hc3NvY3MKCQkJKGlucHV0X2lkLCB0cGxfbmFtZSkgVkFMVUVTICg/LD8pIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaW5wdXRfaWQsICR0cGxfbmFtZSkpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIERlbGV0ZVRwbEFzc29jKCR0cGxfdHlwZSwkaW5wdXRfaWRzID0gYXJyYXkoKSkKCXsKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJaWYoIWlzX2FycmF5KCRpbnB1dF9pZHMpKQoJCXsKCQkJJGlucHV0X2lkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoIiwiLCRpbnB1dF9pZHMpKTsKCQl9CgkJaWYoIWNvdW50KCRpbnB1dF9pZHMpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kdHBsX3R5cGUuIl90cGxfYXNzb2NzIFdIRVJFICI7CgkJJHEgPSBhcnJheSgpOwoJCWZvcmVhY2goJGlucHV0X2lkcyBhcyAkX2lkKQoJCXsKCQkJJHFbXSA9ICJpbnB1dF9pZCA9ID8iOwoJCX0KCQkkcXVlcnkgICAuPSAgaW1wbG9kZSgiIE9SICIsICRxKTsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkaW5wdXRfaWRzKTsKCQlyZXR1cm4gJGRicmVzdWx0OwoJfQoJCglmdW5jdGlvbiBEZWxldGVNdWx0aUlucHV0KCRpbnB1dF9pZHMgPSBhcnJheSgpKQoJewoJCSRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCQlpZighaXNfYXJyYXkoJGlucHV0X2lkcykpCgkJewoJCQkkaW5wdXRfaWRzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsJGlucHV0X2lkcykpOwoJCX0KCQlpZighY291bnQoJGlucHV0X2lkcykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tdWx0aV9pbnB1dHMgV0hFUkUgIjsKCQkkcSA9IGFycmF5KCk7CgkJZm9yZWFjaCgkaW5wdXRfaWRzIGFzICRfaWQpCgkJewoJCQkkcVtdID0gImlucHV0X2lkID0gPyI7CgkJfQoJCQoJCSRxdWVyeSAgIC49ICBpbXBsb2RlKCIgT1IgIiwgJHEpOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRpbnB1dF9pZHMpOwoJCXJldHVybiAkZGJyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIEdldFRlbXBsYXRlcygkcHJlZml4KQoJewoJCSRkYiAgICAgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ICA9ICJTRUxFQ1QgVFBMLnRlbXBsYXRlX25hbWUsIFRQTF9BU1NPQ1MuKiBGUk9NICIuIGNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfdGVtcGxhdGVzIFRQTAoJCQlMRUZUIE9VVEVSIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kcHJlZml4LiJfdHBsX2Fzc29jcyBUUExfQVNTT0NTCgkJCU9OIFRQTC50ZW1wbGF0ZV9uYW1lID0gVFBMX0FTU09DUy50cGxfbmFtZQoJCQlXSEVSRSBUUEwubW9kdWxlX25hbWUgPSA/IEFORCBUUEwudGVtcGxhdGVfbmFtZSBMSUtFID8gIjsKCQkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQkkZGJyZXN1bHQgICAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPkdldE5hbWUoKSwkcHJlZml4LidfJScpKTsKCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCWlmKCFpc3NldCgkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV0pKQoJCQl7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV0gPSBhcnJheSgpOwoJCQl9CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX25hbWUnXSA9IHN1YnN0cigkcm93Wyd0ZW1wbGF0ZV9uYW1lJ10sc3RybGVuKCRwcmVmaXguJ18nKSk7CgkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX2lkJ10gICA9ICRyb3dbJ3RlbXBsYXRlX25hbWUnXTsKCQkJaWYoIWlzc2V0KCRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsndHBsX2Fzc29jcyddKSkKCQkJewoJCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWyd0cGxfYXNzb2NzJ10gPSBhcnJheSgpOwoJCQkJJHJldHVybl9hcnJheVskcm93Wyd0ZW1wbGF0ZV9uYW1lJ11dWydpc191c2VkJ10gPSBmYWxzZTsKCQkJfQoJCQlpZigkcm93WydpbnB1dF9pZCddKQoJCQl7CgkJCQkkcmV0dXJuX2FycmF5WyRyb3dbJ3RlbXBsYXRlX25hbWUnXV1bJ3RwbF9hc3NvY3MnXVtdID0gJHJvd1snaW5wdXRfaWQnXTsKCQkJCSRyZXR1cm5fYXJyYXlbJHJvd1sndGVtcGxhdGVfbmFtZSddXVsnaXNfdXNlZCddID0gdHJ1ZTsKCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybl9hcnJheTsKCX0KCQoJZnVuY3Rpb24gR2V0VHBsTGlzdCgkcHJlZml4KQoJewoJCSRwcmVmaXggPSB0cmltKCRwcmVmaXgsJ18nKSAuICdfJzsKCQkkZGIgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgPSAiU0VMRUNUIHRlbXBsYXRlX25hbWUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkgLiAibW9kdWxlX3RlbXBsYXRlcwoJCQlXSEVSRSBtb2R1bGVfbmFtZSA9ID8gQU5EIHRlbXBsYXRlX25hbWUgTElLRSA/ICI7CgkJJHJldHVybl9hcnJheSA9IGFycmF5KCk7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPkdldE5hbWUoKSwkcHJlZml4LiclJykpOwoJCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJHRwbF9uYW1lID0gc3Vic3RyKCRyb3dbJ3RlbXBsYXRlX25hbWUnXSxzdHJsZW4oJHByZWZpeCkpOwoJCQkkcmV0dXJuX2FycmF5WyR0cGxfbmFtZV0gPSAkcm93Wyd0ZW1wbGF0ZV9uYW1lJ107CgkJfQoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfQoJCglmdW5jdGlvbiBJc1RwbFVzZWQoJHRwbF9uYW1lLCAkYXNzb2NfdHlwZSkKCXsKCQkkZGIgICAgID0mICR0aGlzLT5HZXREYigpOwoJCSRxdWVyeSAgPSAiU0VMRUNUIHRwbF9uYW1lIEZST00gIi4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfIi4kYXNzb2NfdHlwZS4iX3RwbF9hc3NvY3MKCQkJV0hFUkUgdGVtcGxhdGVfbmFtZSA9ID8gIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHBsX25hbWUpKTsKCQlpZighJGRicmVzdWx0IHx8ICEkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlyZXR1cm4gdHJ1ZTsKCX0KfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/contenttype.Content2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvCiMgICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGNtc21hZGVzaW1wbGUub3JnCiMgVmVyc2lvbjogMC42LjMKIyBGaWxlICAgOiBjb250ZW50dHlwZS5Db250ZW50Mi5waHAKIyAgICAgICAgICBUaGlzIGZpbGUgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICJDb250ZW50IgojIFB1cnBvc2U6IHRoZSBjb250ZW50IG9iamVjdAojIExpY2Vuc2U6IEdQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8qKgogKiB0aGlzIGlzIGp1c3QgYSBkdW1teSBjbGFzcyB0byBhY2Nlc3MgdGhlIG1vZHVsZSB3aXRob3V0IHVzaW5nIENNU21zIGludGVybmFscwogKi8KY2xhc3MgQWR2YW5jZWRDb250ZW50TW9kdWxlIGV4dGVuZHMgQWR2YW5jZWRDb250ZW50CnsKCWZ1bmN0aW9uIEFkdmFuY2VkQ29udGVudE1vZHVsZSgpCgl7CgkJcGFyZW50OjpBZHZhbmNlZENvbnRlbnQoKTsKCX0KfQoKY2xhc3MgQ29udGVudDIgZXh0ZW5kcyBDTVNNb2R1bGVDb250ZW50VHlwZQp7CgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRfc3R5bGVzaGVldDsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfY29udGVudEJsb2NrczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbGVhbgoJICovCgl2YXIgJF9jb250ZW50QmxvY2tzTG9hZGVkOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF90YWJJZHM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX3BhZ2VUYWJzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9ibG9ja1RhYnM7CgkKCS8qKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkX2Jsb2NrR3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF91c2VyR3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9kYXRlQmxvY2tzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9tdWx0aUlucHV0czsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbGVhbgoJICovCgl2YXIgJF9pc0FkbWluOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkX2ZldUFjdGlvbjsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfZmV1R3JvdXBzOwoJCgkvKioKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJF9hbGxVc2VyczsKCQoJLyoqCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRfYWxsR3JvdXBzOwoJCgkvKioKCSAqIE1MRSBzdXBwb3J0CgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBib29sZWFuCgkgKi8KCXZhciAkbWxlID0gZmFsc2U7CgkKCS8qKgoJICogTUxFIHN1cHBvcnQKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGxhbmc7CgkKCS8qKgoJICogTUxFIHN1cHBvcnQKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGJsb2NrTGFuZzsKCQoJLyoqCgkgKiBNTEUgc3VwcG9ydAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZGVmYXVsdEJsb2NrTGFuZzsKCQoJCgkvKioKCSAqIENvbnN0cnVjdG9yCgkgKi8KCWZ1bmN0aW9uIENvbnRlbnQyKCkKCXsKCQlwYXJlbnQ6OkNvbnRlbnRCYXNlKCk7CgkJJHRoaXMtPl9jb250ZW50QmxvY2tzICAgICAgID0gYXJyYXkoKTsKCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQgPSBmYWxzZTsKCQkkdGhpcy0+X2ZldUFjdGlvbiAgICAgICAgICAgPSBmYWxzZTsKCQkkdGhpcy0+X2ZldUdyb3VwcyAgICAgICAgICAgPSBmYWxzZTsKCQkkdGhpcy0+X211bHRpSW5wdXRzICAgICAgICAgPSBhcnJheSgpOwoJCWdsb2JhbCAkZ0NtcywkQ01TX0FETUlOX1BBR0U7CgkJaWYoaXNzZXQoJENNU19BRE1JTl9QQUdFKSAmJiAkQ01TX0FETUlOX1BBR0UgPT0gMSkKCQl7CgkJCSRBZHZhbmNlZENvbnRlbnQgICAgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCSR0aGlzLT5fdGFiSWRzICAgICAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2RhdGVCbG9ja3MgID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9ibG9ja1RhYnMgICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fYmxvY2tHcm91cHMgPSBhcnJheSgpOwoJCQkKCQkJJHRoaXMtPl9wYWdlVGFicyA9IGFycmF5KAoJCQkJJ21haW4nID0+IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ21haW4nLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnbWFpbicpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKSk7CgkJCSR0aGlzLT5fdGFiSWRzW10gPSAnbWFpbic7CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWxsIENvbnRlbnQnKSApCgkJCXsKCQkJCSR0aGlzLT5fcGFnZVRhYnNbJ29wdGlvbnMnXSA9IGFycmF5KAoJCQkJCSd0YWJfaWQnICAgICAgICAgPT4gJ29wdGlvbnMnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gbGFuZygnb3B0aW9ucycpLAoJCQkJCSdibG9ja190YWJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYmxvY2tfZ3JvdXBzJyAgID0+IGFycmF5KCksCgkJCQkJJ2NvbnRlbnRfYmxvY2tzJyA9PiBhcnJheSgpKTsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAnb3B0aW9ucyc7CgkJCX0KCQkJCgkJCWlmKCBjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnLDEpICkKCQkJewoJCQkJJHRoaXMtPl9wYWdlVGFic1snQWR2YW5jZWRDb250ZW50J10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdBZHZhbmNlZENvbnRlbnQnLAoJCQkJCSd0YWJfbmFtZScgICAgICAgPT4gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ0FkdmFuY2VkQ29udGVudCc7CgkJCX0KCQkJCgkJCSR0aGlzLT5fdXNlckdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cHMoKTsKCQkJJHRoaXMtPl9pc0FkbWluICAgID0gJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCktPlVzZXJJbkdyb3VwKGdldF91c2VyaWQoKSwxKTsKCQkJJHVzZXJvcHMgICAgICAgICAgPSYgJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCk7CgkJCSRncm91cG9wcyAgICAgICAgID0mICRnQ21zLT5HZXRHcm91cE9wZXJhdGlvbnMoKTsKCQkJJHRoaXMtPl9hbGxVc2VycyAgPSYgJHVzZXJvcHMtPkxvYWRVc2VycygpOwoJCQkkdGhpcy0+X2FsbEdyb3VwcyA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOwoJCX0KCQkKCQkjIE1MRSBzdXBwb3J0CgkJZ2xvYmFsICRobHMsICRtbGVibG9jaywgJG1sZWJsb2NrZmFsbGJhY2s7CgkJaWYoaXNzZXQoJGhscykpCgkJewoJCQkkdGhpcy0+bWxlICAgICAgICAgICAgICA9IHRydWU7CgkJCSR0aGlzLT5sYW5nICAgICAgICAgICAgID0gJGhsczsKCQkJJHRoaXMtPmJsb2NrTGFuZyAgICAgICAgPSAkbWxlYmxvY2s7CgkJCSR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nID0gJG1sZWJsb2NrZmFsbGJhY2s7CgkJfQoJCSMtLS0KCX0KCQoJZnVuY3Rpb24gTW9kdWxlTmFtZSgpCgl7CgkJcmV0dXJuICdBZHZhbmNlZENvbnRlbnQnOwoJfQoJCglmdW5jdGlvbiBJc0RlZmF1bHRQb3NzaWJsZSgpCgl7CgkJcmV0dXJuIFRSVUU7Cgl9CgkKCWZ1bmN0aW9uIElzQ29weWFibGUoKQoJewoJCXJldHVybiBUUlVFOwoJfQoJCglmdW5jdGlvbiBGcmllbmRseU5hbWUoKQoJewoJCWlmKGJhc2VuYW1lKCRfU0VSVkVSWydQSFBfU0VMRiddKSA9PSAnbGlzdGNvbnRlbnQucGhwJykKCQl7CgkJCSRhZGRUeHQgPSBhcnJheSgpOwoJCQlpZigkdGhpcy0+bUNhY2hhYmxlKQoJCQl7CgkJCQkkYWRkVHh0W10gPSAnLSZuYnNwOycubGFuZygnY2FjaGFibGUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdub25jYWNoYWJsZScpOwoJCQl9CgkJCWlmKGlzc2V0KCR0aGlzLT5tU2VjdXJlKSAmJiAkdGhpcy0+bVNlY3VyZSkKCQkJewoJCQkJJGFkZFR4dFtdID0gJy0mbmJzcDtTU0wnOwoJCQl9CgkJCWlmKCEkdGhpcy0+bVNob3dJbk1lbnUpCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdoaWRlZnJvbW1lbnUnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy5sYW5nKCdzaG93aW5tZW51Jyk7CgkJCX0KCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQl7CgkJCQlpZihzdHJwb3MoJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJCXsKCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSkpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCQl9CgkJCQlpZihjb3VudCgkc2VsZWN0ZWRHcm91cHMpKQoJCQkJewoJCQkJCSRhZGRUeHRbXSA9ICctJm5ic3A7Jy4kdGhpcy0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKS4nOiA8dWw+PGxpPicgLiBpbXBsb2RlKCc8L2xpPjxsaT4nLGFycmF5X2tleXMoYXJyYXlfaW50ZXJzZWN0KCRmZXVzZXJzLT5HZXRHcm91cExpc3QoKSwgJHNlbGVjdGVkR3JvdXBzKSkpLic8L2xpPjwvdWw+JzsKCQkJCX0KCQkJfQoJCQlpZihjb3VudCgkYWRkVHh0KSkKCQkJewoJCQkJcmV0dXJuICc8c3BhbiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjdXJzb3I6cG9pbnRlciIgb25tb3VzZW92ZXI9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnJy4kdGhpcy0+bUlkLidfaW5mb1wnKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnOyIgb25tb3VzZW91dD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCcnLiR0aGlzLT5tSWQuJ19pbmZvXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsiPicgLiAkdGhpcy0+bGFuZygnQWR2YW5jZWRDb250ZW50JykgLiAnPHNwYW4gaWQ9IicuJHRoaXMtPm1JZC4nX2luZm8iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6NXB4O2Rpc3BsYXk6bm9uZTstbW96LWJveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7LXdlYmtpdC1ib3gtc2hhZG93OjFweCAxcHggMTBweCAjNjY2NjY2O2JveC1zaGFkb3c6MXB4IDFweCAxMHB4ICM2NjY2NjY7Ij4nIC4gaW1wbG9kZSgnPGJyIC8+JywkYWRkVHh0KSAuICc8L3NwYW4+PC9zcGFuPic7CgkJCX0KCQl9CgkJcmV0dXJuICR0aGlzLT5sYW5nKCdBZHZhbmNlZENvbnRlbnQnKTsKCX0KCQoJZnVuY3Rpb24gZ2V0X2NvbnRlbnRfYmxvY2tzKCkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQlyZXR1cm4gJHRoaXMtPl9jb250ZW50QmxvY2tzOwoJfQoJCglmdW5jdGlvbiBnZXRfYmxvY2tfZ3JvdXBzKCkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQlyZXR1cm4gJHRoaXMtPl9ibG9ja0dyb3VwczsKCX0KCQoJZnVuY3Rpb24gZ2V0X211bHRpX2lucHV0cygpCgl7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJcmV0dXJuICR0aGlzLT5fbXVsdGlJbnB1dHM7Cgl9CgkKCWZ1bmN0aW9uIF9nZXRfYmxvY2tfaW5mbygkd2hvbGV0YWcpCgl7CgkJJHBhdHRlcm4gICA9ICcvKFtcd10rKT0oWyJdW14iXSpbIl18W1wnXVteXCddKltcJ118W15cJyJcc10qKS8nOwoJCSRibG9ja0luZm8gPSBhcnJheSgpOwoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCgkJIyBnZXQgdGhlIGFyZ3VtZW50cy4KCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJJHJlc3VsdCAgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHdob2xldGFnLCAkbWF0Y2hlcyk7CgkJCgkJJGtleXZhbCA9IGFycmF5KCk7CgkJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG1hdGNoZXNbMV0pOyAkaSsrKQoJCXsKCQkJaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJ1wnJykpCgkJCXsKCQkJCSRtYXRjaGVzWzJdWyRpXSA9IHRyaW0oJG1hdGNoZXNbMl1bJGldLCdcJycpOwoJCQl9CgkJCWVsc2UgaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJyInKSkKCQkJewoJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJyInKTsKCQkJfQoJCQkKCQkJJGtleXZhbFtzdHJ0b2xvd2VyKCRtYXRjaGVzWzFdWyRpXSldID0gJG1hdGNoZXNbMl1bJGldOwoJCX0KCQkKCQkjIGJsb2NrID0gYWN0aXZlPwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2FjdGl2ZSddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydhY3RpdmUnXSkpCgkJewoJCQlyZXR1cm4gZmFsc2U7ICMgZG9uJ3QgcHJvY2VzcyBpbmFjdGl2ZSBibG9ja3MKCQl9CgkJCgkJIyBhZGRpdGlvbmFsIGVkaXRvcnMKCQkkYmxvY2tJbmZvWydlZGl0b3JfZ3JvdXBzJ10gPSAnJzsKCQlpZihpc3NldCgka2V5dmFsWydlZGl0b3JfZ3JvdXBzJ10pICYmICRrZXl2YWxbJ2VkaXRvcl9ncm91cHMnXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSA9IHRyaW0oJGtleXZhbFsnZWRpdG9yX2dyb3VwcyddKTsKCQl9CgkJJGJsb2NrSW5mb1snZWRpdG9yX3VzZXJzJ10gPSAnJzsKCQlpZihpc3NldCgka2V5dmFsWydlZGl0b3JfdXNlcnMnXSkgJiYgJGtleXZhbFsnZWRpdG9yX3VzZXJzJ10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydlZGl0b3JfdXNlcnMnXSA9IHRyaW0oJGtleXZhbFsnZWRpdG9yX3VzZXJzJ10pOwoJCX0KCQkKCQkjIGJsb2NrbmFtZQoJCSRibG9ja0luZm9bJ25hbWUnXSA9ICdjb250ZW50X2VuJzsKCQkjIE1MRSBzdXBwb3J0CgkJaWYoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snbmFtZSddID0gJ2NvbnRlbnQnLiR0aGlzLT5ibG9ja0xhbmc7CgkJfQoJCSMtLS0KCQkKCQlpZihpc3NldCgka2V5dmFsWydibG9jayddKSAmJiAka2V5dmFsWydibG9jayddICE9ICcnKQoJCXsKCQkJJGJsb2NrSW5mb1snbmFtZSddID0gdHJpbSgka2V5dmFsWydibG9jayddKTsKCQl9CgkJCgkJIyBibG9jayBpZAoJCSRibG9ja0luZm9bJ2lkJ10gPSBwcmVnX3JlcGxhY2UoJy8tKy8nLCdfJyxtdW5nZV9zdHJpbmdfdG9fdXJsKCRibG9ja0luZm9bJ25hbWUnXSkpOwoJCQoJCWdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CgkJaWYoaXNzZXQoJENNU19BRE1JTl9QQUdFKSAmJiAkQ01TX0FETUlOX1BBR0UgPT0gMSAmJiAhJHRoaXMtPkNoZWNrQmxvY2tQZXJtaXNzaW9uKCYkYmxvY2tJbmZvKSkKCQl7CgkJCXJldHVybiBmYWxzZTsgIyBkb24ndCBwcm9jZXNzIGJsb2NrcyB3aXRob3V0IHBlcm1pc3Npb24gdG8gZWRpdAoJCX0KCQkKCQkkYmxvY2tJbmZvWydtdWx0aXBsZSddICA9IGZhbHNlOwoJCSRibG9ja0luZm9bJ25ld19ibG9jayddID0gZmFsc2U7CgkJCgkJIyBibG9ja3R5cGUKCQkkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPSAkYmxvY2tJbmZvWyd0eXBlJ10gPSAndGV4dCc7CgkJaWYoc3RhcnRzd2l0aCgkd2hvbGV0YWcsICdjb250ZW50X2ltYWdlJykpCgkJewoJCQkkYmxvY2tJbmZvWydibG9ja190eXBlJ10gPSAkYmxvY2tJbmZvWyd0eXBlJ10gPSAnaW1hZ2UnOwoJCX0KCQllbHNlaWYoc3RhcnRzd2l0aCgkd2hvbGV0YWcsICdjb250ZW50X21vZHVsZScpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID0gJGJsb2NrSW5mb1sndHlwZSddID0gJ21vZHVsZSc7CgkJfQoJCWVsc2VpZihpc3NldCgka2V5dmFsWydibG9ja190eXBlJ10pICYmICRrZXl2YWxbJ2Jsb2NrX3R5cGUnXSAhPSAnJykKCQl7CgkJCSRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9ICRibG9ja0luZm9bJ3R5cGUnXSA9IHN0cnRvbG93ZXIoJGtleXZhbFsnYmxvY2tfdHlwZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snc21hcnR5J10gPSBmYWxzZTsKCQlpZihpc3NldCgka2V5dmFsWydzbWFydHknXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydzbWFydHknXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzbWFydHknXSA9IHRydWU7CgkJfQoJCQoJCSRibG9ja0luZm9bJ3RyYW5zbGF0ZV9sYWJlbHMnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3RyYW5zbGF0ZV9sYWJlbHMnXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWyd0cmFuc2xhdGVfbGFiZWxzJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1sndHJhbnNsYXRlX2xhYmVscyddID0gdHJ1ZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sndHJhbnNsYXRlX3ZhbHVlcyddID0gZmFsc2U7CgkJaWYoaXNzZXQoJGtleXZhbFsndHJhbnNsYXRlX3ZhbHVlcyddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3RyYW5zbGF0ZV92YWx1ZXMnXSkpCgkJewoJCQkkYmxvY2tJbmZvWyd0cmFuc2xhdGVfdmFsdWVzJ10gPSB0cnVlOwoJCX0KCQkKCQkkYmxvY2tJbmZvWydsYWJlbCddID0gdWN3b3JkcygkYmxvY2tJbmZvWyduYW1lJ10pOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2xhYmVsJ10pICYmICRrZXl2YWxbJ2xhYmVsJ10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydsYWJlbCddID0gdHJpbSgka2V5dmFsWydsYWJlbCddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sncmVxdWlyZWQnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3JlcXVpcmVkJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsncmVxdWlyZWQnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydyZXF1aXJlZCddID0gdHJ1ZTsKCQl9CgkJCgkJIyBkZWZhdWx0IGNvbnRlbnQvdmFsdWUKCQkkYmxvY2tJbmZvWydkZWZhdWx0J10gCT0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnZGVmYXVsdCddKSAmJiAka2V5dmFsWydkZWZhdWx0J10gIT0gJycpCgkJewoJCQkkYmxvY2tJbmZvWydkZWZhdWx0J10gPSAka2V5dmFsWydkZWZhdWx0J107CgkJfQoJCQoJCSMgYmFja2VuZCBzdHlsZSAoZS5nLiB0byBtYXJrIHJlcXVpcmVkIGZpZWxkcy4uLikKCQkjIGRlcHJlY2F0ZWQKCQkkYmxvY2tJbmZvWydzdHlsZSddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnc3R5bGUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzdHlsZSddID0gJGtleXZhbFsnc3R5bGUnXTsKCQl9CgkJCgkJIyBzaXplIG9mIHRoZSBpbnB1dCBmaWVsZAoJCSRibG9ja0luZm9bJ3NpemUnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ3NpemUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydzaXplJ10gPSBpbnR2YWwoJGtleXZhbFsnc2l6ZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1sncGFnZV90YWInXSA9ICdtYWluJzsKCQlpZihpc3NldCgka2V5dmFsWydwYWdlX3RhYiddKSAmJiB0cmltKCRrZXl2YWxbJ3BhZ2VfdGFiJ10gIT0gJycpKQoJCXsKCQkJJGJsb2NrSW5mb1sncGFnZV90YWInXSA9IHRyaW0oJGtleXZhbFsncGFnZV90YWInXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2Jsb2NrX3RhYiddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnYmxvY2tfdGFiJ10pICYmIHRyaW0oJGtleXZhbFsnYmxvY2tfdGFiJ10gIT0gJycpKQoJCXsKCQkJJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10gPSB0cmltKCRrZXl2YWxbJ2Jsb2NrX3RhYiddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Jsb2NrX2dyb3VwJ10pICYmIHRyaW0oJGtleXZhbFsnYmxvY2tfZ3JvdXAnXSAhPSAnJykpCgkJewoJCQkkYmxvY2tJbmZvWydibG9ja19ncm91cCddID0gdHJpbSgka2V5dmFsWydibG9ja19ncm91cCddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snYWxsb3dfbm9uZSddID0gdHJ1ZTsKCQlpZihpc3NldCgka2V5dmFsWydhbGxvd19ub25lJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ2FsbG93X25vbmUnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydhbGxvd19ub25lJ10gPSBmYWxzZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZGVzY3JpcHRpb24nXSA9ICcnOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ2Rlc2NyaXB0aW9uJ10pKQoJCXsKCQkJJGJsb2NrSW5mb1snZGVzY3JpcHRpb24nXSA9IHRyaW0oJGtleXZhbFsnZGVzY3JpcHRpb24nXSk7CgkJfQoJCQoJCSRibG9ja0luZm9bJ2NvbGxhcHNlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdjb2xsYXBzZV9ibG9ja19kZWZhdWx0JywxKTsKCQlpZihpc3NldCgka2V5dmFsWydjb2xsYXBzZSddKSAmJiAoJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydjb2xsYXBzZSddKSB8fCAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydjb2xsYXBzZSddKSkpCgkJewoJCQkkYmxvY2tJbmZvWydjb2xsYXBzZSddID0gJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydjb2xsYXBzZSddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snbm9fY29sbGFwc2UnXSA9IGZhbHNlOwoJCWlmKGlzc2V0KCRrZXl2YWxbJ25vX2NvbGxhcHNlJ10pICYmICR0aGlzLT5Jc1RydWUoJGtleXZhbFsnbm9fY29sbGFwc2UnXSkpCgkJewoJCQkkYmxvY2tJbmZvWydub19jb2xsYXBzZSddID0gdHJ1ZTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZmV1X2FjY2VzcyddID0gJyc7CgkJaWYoaXNzZXQoJGtleXZhbFsnZmV1X2FjY2VzcyddKSkKCQl7CgkJCSRibG9ja0luZm9bJ2ZldV9hY2Nlc3MnXSA9IHRyaW0oJGtleXZhbFsnZmV1X2FjY2VzcyddKTsKCQl9CgkJCgkJJGJsb2NrSW5mb1snZmV1X2FjdGlvbiddID0gZmFsc2U7CgkJaWYoaXNzZXQoJGtleXZhbFsnZmV1X2FjdGlvbiddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ2ZldV9hY3Rpb24nXSkpCgkJewoJCQkkYmxvY2tJbmZvWydmZXVfYWN0aW9uJ10gPSB0cnVlOwoJCX0KCQkKCQlpZigkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ3RleHQnKQoJCXsKCQkJJGJsb2NrSW5mb1snbWF4bGVuZ3RoJ10gPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnbWF4bGVuZ3RoJ10pKQoJCQl7CgkJCQkkYmxvY2tJbmZvWydtYXhsZW5ndGgnXSA9ICRrZXl2YWxbJ21heGxlbmd0aCddOwoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWyd1c2V3eXNpd3lnJ10gPSB0cnVlOwoJCQlpZihpc3NldCgka2V5dmFsWyd3eXNpd3lnJ10pICYmICR0aGlzLT5Jc0ZhbHNlKCRrZXl2YWxbJ3d5c2l3eWcnXSkpCgkJCXsKCQkJCSRibG9ja0luZm9bJ3VzZXd5c2l3eWcnXSA9IGZhbHNlOwoJCQl9CgkJCQoJCQkkYmxvY2tJbmZvWydvbmVsaW5lJ10gPSBmYWxzZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnb25lbGluZSddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ29uZWxpbmUnXSkpCgkJCXsKCQkJCSRibG9ja0luZm9bJ29uZWxpbmUnXSA9IHRydWU7CgkJCX0KCQl9CgkJZWxzZSBpZiAoJGJsb2NrSW5mb1sndHlwZSddID09ICdkYXRlJykKCQl7CgkJCSR0aGlzLT5fZGF0ZUJsb2Nrc1tdID0gJGJsb2NrSW5mb1sndHlwZSddOwoJCQkKCQkJJHNob3dDbG9jayA9IHRydWU7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3Nob3dfY2xvY2snXSkgJiYgJHRoaXMtPklzVEZhbHNlKCRrZXl2YWxbJ3Nob3dfY2xvY2snXSkpCgkJCXsKCQkJCSRzaG93Q2xvY2sgPSBmYWxzZTsKCQkJfQoJCQkKCQkJJG1vZGUgPSAnY2FsZW5kYXInOwoJCQlpZihpc3NldCgka2V5dmFsWydtb2RlJ10pICYmIHN0cnRvbG93ZXIoJGtleXZhbFsnbW9kZSddKSA9PSAnZHJvcGRvd24nKQoJCQl7CgkJCQkkbW9kZSA9ICdkcm9wZG93bic7CgkJCX0KCQkJCgkJCSRzaG93MjRoID0gdHJ1ZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc2hvdzI0aCddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydzaG93MjRoJ10pKQoJCQl7CgkJCQkkc2hvdzI0aCA9IGZhbHNlOwoJCQl9CgkJCQoJCQkkc3RhcnRIb3VyID0gMDsKCQkJJGVuZEhvdXIgICA9IDIzOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGFydF9ob3VyJ10pKQoJCQl7CgkJCQlpZihlbmRzd2l0aCgka2V5dmFsWydzdGFydF9ob3VyJ10sJ3BtJykpCgkJCQl7CgkJCQkJJGtleXZhbFsnc3RhcnRfaG91ciddID0gdHJpbShzdHJfaXJlcGxhY2UoJ3BtJywnJywka2V5dmFsWydzdGFydF9ob3VyJ10pKSArIDEyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRrZXl2YWxbJ3N0YXJ0X2hvdXInXSA9IHRyaW0oc3RyX2lyZXBsYWNlKGFycmF5KCdhbScsJ3BtJyksJycsJGtleXZhbFsnc3RhcnRfaG91ciddKSk7CgkJCQl9CgkJCQlpZigka2V5dmFsWydzdGFydF9ob3VyJ10gPiAwICYmICRrZXl2YWxbJ3N0YXJ0X2hvdXInXSA8PSAkZW5kSG91cikKCQkJCXsKCQkJCQkkc3RhcnRIb3VyID0gdHJpbSgka2V5dmFsWydzdGFydF9ob3VyJ10pOwoJCQkJfQoJCQl9CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2VuZF9ob3VyJ10pKQoJCQl7CgkJCQlpZihlbmRzd2l0aCgka2V5dmFsWydlbmRfaG91ciddLCdwbScpKQoJCQkJewoJCQkJCSRrZXl2YWxbJ2VuZF9ob3VyJ10gPSB0cmltKHN0cl9pcmVwbGFjZSgncG0nLCcnLCRrZXl2YWxbJ2VuZF9ob3VyJ10pKSArIDEyOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRrZXl2YWxbJ2VuZF9ob3VyJ10gPSB0cmltKHN0cl9pcmVwbGFjZShhcnJheSgnYW0nLCdwbScpLCcnLCRrZXl2YWxbJ2VuZF9ob3VyJ10pKTsKCQkJCX0KCQkJCWlmKCRrZXl2YWxbJ2VuZF9ob3VyJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfaG91ciddIDwgJGVuZEhvdXIpCgkJCQl7CgkJCQkJJGVuZEhvdXIgPSB0cmltKCRrZXl2YWxbJ2VuZF9ob3VyJ10pOwoJCQkJfQoJCQl9CgkJCWlmKCRlbmRIb3VyIDwgJHN0YXJ0SG91cikKCQkJewoJCQkJJGVuZEhvdXIgPSAkc3RhcnRIb3VyOwoJCQl9CgkJCSRzdGFydE1pbnV0ZSA9IDA7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0YXJ0X21pbnV0ZSddKSAmJiAka2V5dmFsWydzdGFydF9taW51dGUnXSA+IDAgJiYgJGtleXZhbFsnc3RhcnRfbWludXRlJ10gPD0gNTkpCgkJCXsKCQkJCSRzdGFydE1pbnV0ZSA9IHRyaW0oJGtleXZhbFsnc3RhcnRfbWludXRlJ10pOwoJCQl9CgkJCSRlbmRNaW51dGUgPSA1OTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZW5kX21pbnV0ZSddKSAmJiAka2V5dmFsWydlbmRfbWludXRlJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfbWludXRlJ10gPCA1OSkKCQkJewoJCQkJJGVuZE1pbnV0ZSA9IHRyaW0oJGtleXZhbFsnZW5kX21pbnV0ZSddKTsKCQkJfQoJCQlpZigkZW5kTWludXRlIDwgJHN0YXJ0TWludXRlKQoJCQl7CgkJCQkkZW5kTWludXRlID0gJHN0YXJ0TWludXRlOwoJCQl9CgkJCSRzdGFydFNlY29uZCA9IDA7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3N0YXJ0X3NlY29uZCddKSAmJiAka2V5dmFsWydzdGFydF9zZWNvbmQnXSA+IDAgJiYgJGtleXZhbFsnc3RhcnRfc2Vjb25kJ10gPD0gNTkpCgkJCXsKCQkJCSRzdGFydFNlY29uZCA9IHRyaW0oJGtleXZhbFsnc3RhcnRfc2Vjb25kJ10pOwoJCQl9CgkJCSRlbmRTZWNvbmQgPSA1OTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZW5kX3NlY29uZCddKSAmJiAka2V5dmFsWydlbmRfc2Vjb25kJ10gPj0gMCAmJiAka2V5dmFsWydlbmRfc2Vjb25kJ10gPCA1OSkKCQkJewoJCQkJJGVuZFNlY29uZCA9IHRyaW0oJGtleXZhbFsnZW5kX3NlY29uZCddKTsKCQkJfQoJCQlpZigkZW5kU2Vjb25kIDwgJHN0YXJ0U2Vjb25kKQoJCQl7CgkJCQkkZW5kU2Vjb25kID0gJHN0YXJ0U2Vjb25kOwoJCQl9CgkJCSRzdGVwSG91cnMgPSAxOwoJCQlpZihpc3NldCgka2V5dmFsWydzdGVwX2hvdXJzJ10pICYmICRrZXl2YWxbJ3N0ZXBfaG91cnMnXSA+IDAgJiYgJGtleXZhbFsnc3RlcF9ob3VycyddIDw9ICgkZW5kSG91ci0kc3RhcnRIb3VyKSkKCQkJewoJCQkJJHN0ZXBIb3VycyA9IHRyaW0oJGtleXZhbFsnc3RlcF9ob3VycyddKTsKCQkJfQoJCQllbHNlIGlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfaG91cnMnXSkgJiYgJGtleXZhbFsnc3RlcF9ob3VycyddID4gMCAmJiAka2V5dmFsWydzdGVwX2hvdXJzJ10gPj0gKCRlbmRIb3VyLSRzdGFydEhvdXIpKQoJCQl7CgkJCQkkc3RlcEhvdXJzID0gJGVuZEhvdXItJHN0YXJ0SG91cjsKCQkJfQoJCQkkc3RlcE1pbnV0ZXMgPSAxMDsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9taW51dGVzJ10pICYmICRrZXl2YWxbJ3N0ZXBfbWludXRlcyddID4gMCAmJiAka2V5dmFsWydzdGVwX21pbnV0ZXMnXSA8PSAoJGVuZE1pbnV0ZS0kc3RhcnRNaW51dGUpKQoJCQl7CgkJCQkkc3RlcE1pbnV0ZXMgPSB0cmltKCRrZXl2YWxbJ3N0ZXBfbWludXRlcyddKTsKCQkJfQoJCQllbHNlIGlmKGlzc2V0KCRrZXl2YWxbJ3N0ZXBfbWludXRlcyddKSAmJiAka2V5dmFsWydzdGVwX21pbnV0ZXMnXSA+IDAgJiYgJGtleXZhbFsnc3RlcF9taW51dGVzJ10gPj0gKCRlbmRNaW51dGUtJHN0YXJ0TWludXRlKSkKCQkJewoJCQkJJHN0ZXBNaW51dGVzID0gJGVuZE1pbnV0ZS0kc3RhcnRNaW51dGU7CgkJCX0KCQkJJHN0ZXBTZWNvbmRzID0gMTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10pICYmICRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddID4gMCAmJiAka2V5dmFsWydzdGVwX3NlY29uZHMnXSA8PSAoJGVuZFNlY29uZC0kc3RhcnRTZWNvbmRzKSkKCQkJewoJCQkJJHN0ZXBTZWNvbmRzID0gdHJpbSgka2V5dmFsWydzdGVwX3NlY29uZHMnXSk7CgkJCX0KCQkJZWxzZSBpZihpc3NldCgka2V5dmFsWydzdGVwX3NlY29uZHMnXSkgJiYgJGtleXZhbFsnc3RlcF9zZWNvbmRzJ10gPiAwICYmICRrZXl2YWxbJ3N0ZXBfc2Vjb25kcyddID49ICgkZW5kU2Vjb25kLSRzdGFydFNlY29uZHMpKQoJCQl7CgkJCQkkc3RlcFNlY29uZHMgPSAkZW5kU2Vjb25kLSRzdGFydFNlY29uZHM7CgkJCX0KCQkJJGJsb2NrSW5mb1snc2hvdzI0aCddICAgICAgPSAkc2hvdzI0aDsKCQkJJGJsb2NrSW5mb1snbW9kZSddICAgICAgICAgPSAkbW9kZTsKCQkJJGJsb2NrSW5mb1snc3RhcnRfaG91ciddICAgPSAkc3RhcnRIb3VyOwoJCQkkYmxvY2tJbmZvWydlbmRfaG91ciddICAgICA9ICRlbmRIb3VyOwoJCQkkYmxvY2tJbmZvWydzdGFydF9taW51dGUnXSA9ICRzdGFydE1pbnV0ZTsKCQkJJGJsb2NrSW5mb1snZW5kX21pbnV0ZSddICAgPSAkZW5kTWludXRlOwoJCQkkYmxvY2tJbmZvWydzdGFydF9zZWNvbmQnXSA9ICRzdGFydFNlY29uZDsKCQkJJGJsb2NrSW5mb1snZW5kX3NlY29uZCddICAgPSAkZW5kU2Vjb25kOwoJCQkkYmxvY2tJbmZvWydzdGVwX2hvdXJzJ10gICA9ICRzdGVwSG91cnM7CgkJCSRibG9ja0luZm9bJ3N0ZXBfbWludXRlcyddID0gJHN0ZXBNaW51dGVzOwoJCQkkYmxvY2tJbmZvWydzdGVwX3NlY29uZHMnXSA9ICRzdGVwU2Vjb25kczsKCQkJJGJsb2NrSW5mb1snc2hvd19jbG9jayddICAgPSAkc2hvd0Nsb2NrOwoJCX0KCQllbHNlIGlmKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnZHJvcGRvd24nIHx8ICRibG9ja0luZm9bJ3R5cGUnXSA9PSAnc2VsZWN0X211bHRpcGxlJykKCQl7CgkJCWlmKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnc2VsZWN0X211bHRpcGxlJykKCQkJewoJCQkJJGJsb2NrSW5mb1snc29ydGFibGUnXSA9IGZhbHNlOwoJCQkJIyBkZXByZWNhdGVkCgkJCQlpZihpc3NldCgka2V5dmFsWydzb3J0YWJsZV9pdGVtcyddKSAmJiAkdGhpcy0+SXNUcnVlKCRrZXl2YWxbJ3NvcnRhYmxlX2l0ZW1zJ10pKQoJCQkJewoJCQkJCSRibG9ja0luZm9bJ3NvcnRhYmxlJ10gPSB0cnVlOwoJCQkJfQoJCQkJaWYoaXNzZXQoJGtleXZhbFsnc29ydGFibGUnXSkgJiYgJHRoaXMtPklzVHJ1ZSgka2V5dmFsWydzb3J0YWJsZSddKSkKCQkJCXsKCQkJCQkkYmxvY2tJbmZvWydzb3J0YWJsZSddID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCQkKCQkJJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10gPSAnfCc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2RlbGltaXRlciddKSAmJiAka2V5dmFsWydkZWxpbWl0ZXInXSAhPSAnJykKCQkJewoJCQkJJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10gPSAka2V5dmFsWydkZWxpbWl0ZXInXTsKCQkJfQoJCQkkYmxvY2tJbmZvWydpdGVtcyddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ2l0ZW1zJ10pICYmICRrZXl2YWxbJ2l0ZW1zJ10gIT0gJycpCgkJCXsKCQkJCSRibG9ja0luZm9bJ2l0ZW1zJ10gPSB0cmltKCRrZXl2YWxbJ2l0ZW1zJ10pOwoJCQl9CgkJCSRibG9ja0luZm9bJ3ZhbHVlcyddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3ZhbHVlcyddKSAmJiAka2V5dmFsWyd2YWx1ZXMnXSAhPSAnJykKCQkJewoJCQkJJGJsb2NrSW5mb1sndmFsdWVzJ10gPSB0cmltKCRrZXl2YWxbJ3ZhbHVlcyddKTsKCQkJfQoJCX0KCQllbHNlIGlmKCRibG9ja0luZm9bJ3R5cGUnXSA9PSAnbW9kdWxlJykKCQl7CgkJCSRibG9ja0luZm9bJ21vZHVsZSddID0gJyc7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ21vZHVsZSddKSkKCQkJewoJCQkJJGJsb2NrSW5mb1snbW9kdWxlJ10gPSB0cmltKCRrZXl2YWxbJ21vZHVsZSddKTsKCQkJfQoJCQkkYmxvY2tJbmZvWydwYXJhbXMnXSA9ICRrZXl2YWw7CgkJfQoJCWVsc2UgaWYoJGJsb2NrSW5mb1sndHlwZSddID09ICdpbWFnZScpCgkJewoJCQkkYmxvY2tJbmZvWydwcmVmaXgnXSA9ICd0aHVtYl8nOwoJCQlpZihpc3NldCgka2V5dmFsWydwcmVmaXgnXSkpIHsKCQkJCSRibG9ja0luZm9bJ3ByZWZpeCddID0gJGtleXZhbFsncHJlZml4J107CgkJCX0KCQkJJGJsb2NrSW5mb1snZXhjbHVkZSddID0gdHJ1ZTsKCQkJaWYoaXNzZXQoJGtleXZhbFsnZXhjbHVkZSddKSAmJiAkdGhpcy0+SXNGYWxzZSgka2V5dmFsWydleGNsdWRlJ10pKSB7CgkJCQkkYmxvY2tJbmZvWydleGNsdWRlJ10gPSBmYWxzZTsKCQkJfQoJCQkkYmxvY2tJbmZvWydkaXInXSA9ICcnOwoJCQlpZihpc3NldCgka2V5dmFsWydkaXInXSkpIHsKCQkJCSRibG9ja0luZm9bJ2RpciddID0gJGtleXZhbFsnZGlyJ107CgkJCX0KCQl9CgkJZWxzZSBpZigkYmxvY2tJbmZvWyd0eXBlJ10gPT0gJ211bHRpX2lucHV0JykKCQl7CgkJCSRpbnB1dHMgPSAnJzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnaW5wdXRzJ10pKQoJCQl7CgkJCQkkaW5wdXRzID0gdHJpbSgka2V5dmFsWydpbnB1dHMnXSk7CgkJCX0KCQkJCgkJCSR2YWx1ZURlbGltID0gJzwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPic7CgkJCWlmKGlzc2V0KCRrZXl2YWxbJ3ZhbHVlX2RlbGltaXRlciddKSkKCQkJewoJCQkJJHZhbHVlRGVsaW0gPSB0cmltKCRrZXl2YWxbJ3ZhbHVlX2RlbGltaXRlciddKTsKCQkJfQoJCQkKCQkJJGlucHV0RGVsaW0gPSAnPCEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0+JzsKCQkJaWYoaXNzZXQoJGtleXZhbFsnaW5wdXRfZGVsaW1pdGVyJ10pKQoJCQl7CgkJCQkkaW1wdXREZWxpbSA9IHRyaW0oJGtleXZhbFsnaW5wdXRfZGVsaW1pdGVyJ10pOwoJCQl9CgkJCSRibG9ja0luZm9bJ2lucHV0cyddICAgICAgICAgID0gJGlucHV0czsKCQkJJGJsb2NrSW5mb1sndmFsdWVfZGVsaW1pdGVyJ10gPSAkdmFsdWVEZWxpbTsKCQkJJGJsb2NrSW5mb1snaW5wdXRfZGVsaW1pdGVyJ10gPSAkaW5wdXREZWxpbTsKCQl9CgkJcmV0dXJuIGFycmF5X21lcmdlKCRrZXl2YWwsJGJsb2NrSW5mbyk7Cgl9CgkKCWZ1bmN0aW9uIHBhcnNlX2NvbnRlbnRfYmxvY2tzKCkKCXsKCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJCgkJaWYoJHRoaXMtPm1UeXBlICE9ICdjb250ZW50MicgJiYgJHRoaXMtPm1UeXBlICE9ICdjb250ZW50JykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQkKCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3MgPSBhcnJheSgpOwoJCSRBZHZhbmNlZENvbnRlbnQgICAgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJZ2xvYmFsICRnQ21zLCRDTVNfQURNSU5fUEFHRTsKCQlpZihpc3NldCgkQ01TX0FETUlOX1BBR0UpICYmICRDTVNfQURNSU5fUEFHRSA9PSAxKQoJCXsKCQkJJHRoaXMtPl90YWJJZHMgICAgICA9IGFycmF5KCk7CgkJCSR0aGlzLT5fZGF0ZUJsb2NrcyAgPSBhcnJheSgpOwoJCQkkdGhpcy0+X2Jsb2NrVGFicyAgID0gYXJyYXkoKTsKCQkJJHRoaXMtPl9ibG9ja0dyb3VwcyA9IGFycmF5KCk7CgkJCSMkdGhpcy0+X211bHRpSW5wdXRzID0gYXJyYXkoKTsKCQkJCgkJCSR0aGlzLT5fcGFnZVRhYnMgPSBhcnJheSgKCQkJCSdtYWluJyA9PiBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdtYWluJywKCQkJCQkndGFiX25hbWUnICAgICAgID0+IGxhbmcoJ21haW4nKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSkpOwoJCQkkdGhpcy0+X3RhYklkc1tdID0gJ21haW4nOwoJCQkKCQkJaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykgKQoJCQl7CgkJCQkkdGhpcy0+X3BhZ2VUYWJzWydvcHRpb25zJ10gPSBhcnJheSgKCQkJCQkndGFiX2lkJyAgICAgICAgID0+ICdvcHRpb25zJywKCQkJCQkndGFiX25hbWUnICAgICAgID0+IGxhbmcoJ29wdGlvbnMnKSwKCQkJCQknYmxvY2tfdGFicycgICAgID0+IGFycmF5KCksCgkJCQkJJ2Jsb2NrX2dyb3VwcycgICA9PiBhcnJheSgpLAoJCQkJCSdjb250ZW50X2Jsb2NrcycgPT4gYXJyYXkoKSk7CgkJCQkkdGhpcy0+X3RhYklkc1tdID0gJ29wdGlvbnMnOwoJCQl9CgkJCQoJCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJywxKSApCgkJCXsKCQkJCSR0aGlzLT5fcGFnZVRhYnNbJ0FkdmFuY2VkQ29udGVudCddID0gYXJyYXkoCgkJCQkJJ3RhYl9pZCcgICAgICAgICA9PiAnQWR2YW5jZWRDb250ZW50JywKCQkJCQkndGFiX25hbWUnICAgICAgID0+ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2FkdmFuY2VkY29udGVudF90YWJuYW1lJyksCgkJCQkJJ2Jsb2NrX3RhYnMnICAgICA9PiBhcnJheSgpLAoJCQkJCSdibG9ja19ncm91cHMnICAgPT4gYXJyYXkoKSwKCQkJCQknY29udGVudF9ibG9ja3MnID0+IGFycmF5KCkpOwoJCQkJJHRoaXMtPl90YWJJZHNbXSA9ICdBZHZhbmNlZENvbnRlbnQnOwoJCQl9CgkJfQoJCWVsc2UgaWYoISR0aGlzLT5DaGVja0Zyb250ZW5kUGFnZUFjY2VzcygpKQoJCXsKCQkJJGdDbXMtPkdldFNtYXJ0eSgpLT5jbGVhcl9hbGxfY2FjaGUoKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCQoJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJJHRlbXBsYXRlb3BzID0mICRnQ21zLT5HZXRUZW1wbGF0ZU9wZXJhdGlvbnMoKTsKCQkKCQlpZiAoJHRoaXMtPm1UZW1wbGF0ZUlkICYmICR0aGlzLT5tVGVtcGxhdGVJZCA+IC0xKQoJCXsKCQkJJHRlbXBsYXRlID0gJHRlbXBsYXRlb3BzLT5Mb2FkVGVtcGxhdGVCeUlEKCR0aGlzLT5tVGVtcGxhdGVJZCk7CgkJCSR0aGlzLT5fc3R5bGVzaGVldCA9ICcuLi9zdHlsZXNoZWV0LnBocD90ZW1wbGF0ZWlkPScuJHRoaXMtPm1UZW1wbGF0ZUlkOwoJCX0KCQllbHNlCgkJewoJCQkkdGVtcGxhdGUgPSAkdGVtcGxhdGVvcHMtPkxvYWREZWZhdWx0VGVtcGxhdGUoKTsKCQl9CgkJCgkJaWYoJHRlbXBsYXRlICE9PSBmYWxzZSkKCQl7CgkJCSMgcmVhZCBjb250ZW50IGJsb2NrcwoJCQkjIHRoaXMgd2lsbCBzZWFyY2ggZm9yIHtjb250ZW50fSB7Y29udGVudF9pbWFnZX0ge2NvbnRlbnRfbW9kdWxlfSBhbmQge0FkdmFuY2VkQ29udGVudH0gd2l0aCBvciB3aXRob3V0IHBhcmFtcyAoY2FzZSBpbnNlbnNpdGl2ZSkKCQkJJHBhdHRlcm4gPSAnL3soKEFkdmFuY2VkQ29udGVudHxjb250ZW50KF9pbWFnZXxfbW9kdWxlKT8pKCg/IV8pW159XSopKX0vaSc7CgkJCQoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCSMgZ2V0IGFsbCB0aGUgdGFncwoJCQkkcmVzdWx0ID0gcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICR0ZW1wbGF0ZS0+Y29udGVudCwgJG1hdGNoZXMpOwoJCQkKCQkJaWYgKCRyZXN1bHQgJiYgY291bnQoJG1hdGNoZXNbMV0pID4gMCkKCQkJewoJCQkJCgkJCQkjIGdldCB0aGUgYmFzaWMgY29udGVudCBwcm9wZXJ0aWVzCgkJCQkkYmFzaWNBdHRyaWJzID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goICR0aGlzLT5fYXR0cmlidXRlcyBhcyAkb25lQXR0cmliICkKCQkJCXsKCQkJCQkkYmFzaWNBdHRyaWJzW10gPSAkb25lQXR0cmliWzBdOwoJCQkJfQoJCQkJCgkJCQkkaiA9IDA7CgkJCQkjIGZvcmVhY2ggdGFnCgkJCQlmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAka2V5PT4kd2hvbGV0YWcpCgkJCQl7CgkJCQkJJGorKzsKCQkJCQkKCQkJCQlpZighJGJsb2NrSW5mbyA9ICR0aGlzLT5fZ2V0X2Jsb2NrX2luZm8oJHdob2xldGFnKSkKCQkJCQl7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQkKCQkJCQkjIGJsb2NrID0gYWN0aXZlPwoJCQkJCWlmKGlzc2V0KCRibG9ja0luZm9bJ2FjdGl2ZSddKSAmJiAkdGhpcy0+SXNGYWxzZSgkYmxvY2tJbmZvWydhY3RpdmUnXSkpCgkJCQkJewoJCQkJCQljb250aW51ZTsgIyBkb24ndCBwcm9jZXNzIGluYWN0aXZlIGJsb2NrcwoJCQkJCX0KCQkJCQkKCQkJCQlpZihpc3NldCgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSW5mb1snaWQnXV0pKQoJCQkJCXsKCQkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0luZm9bJ2lkJ11dWydtdWx0aXBsZSddID0gdHJ1ZTsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCQoJCQkJCSMgaWYgdGhpcyBibG9jayBoYXMgYmVlbiBhZGRlZCB0byB0aGUgdGVtcGxhdGUgYWZ0ZXIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkCgkJCQkJaWYoIWluX2FycmF5KCRibG9ja0luZm9bJ2lkJ10sJHRoaXMtPm1Qcm9wZXJ0aWVzLT5tUHJvcGVydHlOYW1lcykpCgkJCQkJewoJCQkJCQkkYmxvY2tJbmZvWyduZXdfYmxvY2snXSA9IHRydWU7CgkJCQkJfQoJCQkJCQoJCQkJCSRwYWdlVGFiID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1sncGFnZV90YWInXSkpKSk7CgkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWyd0YWJfaWQnXSAgICAgICA9ICRwYWdlVGFiOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsndGFiX25hbWUnXSAgICAgPSAkYmxvY2tJbmZvWydwYWdlX3RhYiddOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfdGFicyddICAgPSBhcnJheSgpOwoJCQkJCQkkdGhpcy0+X3BhZ2VUYWJzWyRwYWdlVGFiXVsnYmxvY2tfZ3JvdXBzJ10gPSBhcnJheSgpOwoJCQkJCQkkYmxvY2tJbmZvWydwYWdlX3RhYiddID0gJHBhZ2VUYWI7CgkJCQkJfQoJCQkJCSR0aGlzLT5fcGFnZVRhYnNbJHBhZ2VUYWJdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkKCQkJCQkkYmxvY2tUYWIgPSAnJzsKCQkJCQlpZigkYmxvY2tJbmZvWydibG9ja190YWInXSAhPSAnJykKCQkJCQl7CgkJCQkJCSRibG9ja1RhYiA9ICRwYWdlVGFiIC4gJ18nIC4gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10pKSkpOwoJCQkJCQlpZighaXNzZXQoJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXSkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ3RhYl9pZCddICAgICAgID0gJGJsb2NrVGFiOwoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsndGFiX25hbWUnXSAgICAgPSAkYmxvY2tJbmZvWydibG9ja190YWInXTsKCQkJCQkJCSR0aGlzLT5fYmxvY2tUYWJzWyRibG9ja1RhYl1bJ2Jsb2NrX2dyb3VwcyddID0gYXJyYXkoKTsKCQkJCQkJfQoJCQkJCQkkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ2Jsb2NrX3RhYnMnXVskYmxvY2tUYWJdICAgICAgICAgICAgICA9ICRibG9ja1RhYjsKCQkJCQkJJGJsb2NrSW5mb1snYmxvY2tfdGFiJ10gPSAkYmxvY2tUYWI7CgkJCQkJfQoJCQkJCQoJCQkJCSRibG9ja0dyb3VwID0gJyc7CgkJCQkJaWYoJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSAhPSAnJykKCQkJCQl7CgkJCQkJCSRibG9ja0dyb3VwID0gKCRibG9ja1RhYj8kYmxvY2tUYWI6JHBhZ2VUYWIpIC4gJ18nIC4gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybChzdHJ0b2xvd2VyKHRyaW0oJGJsb2NrSW5mb1snYmxvY2tfZ3JvdXAnXSkpKSk7CgkJCQkJCWlmKCFpc3NldCgkdGhpcy0+X2Jsb2NrR3JvdXBzWyRibG9ja0dyb3VwXSkpCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydncm91cF9pZCddICAgPSAkYmxvY2tHcm91cDsKCQkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydncm91cF9uYW1lJ10gPSAkYmxvY2tJbmZvWydibG9ja19ncm91cCddOwoJCQkJCQkJJHRoaXMtPl9wYWdlVGFic1skcGFnZVRhYl1bJ2Jsb2NrX2dyb3VwcyddWyRibG9ja0dyb3VwXSA9ICRibG9ja0dyb3VwOwoJCQkJCQl9CgkJCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydjb250ZW50X2Jsb2NrcyddWyRibG9ja0luZm9bJ2lkJ11dID0gJGJsb2NrSW5mb1snaWQnXTsKCQkJCQkJdW5zZXQoJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsnY29udGVudF9ibG9ja3MnXVskYmxvY2tJbmZvWydpZCddXSk7CgkJCQkJCWlmKCRibG9ja1RhYikKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9ibG9ja1RhYnNbJGJsb2NrVGFiXVsnYmxvY2tfZ3JvdXBzJ11bJGJsb2NrR3JvdXBdID0gJGJsb2NrR3JvdXA7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQl1bnNldCgkdGhpcy0+X2Jsb2NrVGFic1skYmxvY2tUYWJdWydibG9ja19ncm91cHMnXVskYmxvY2tHcm91cF0pOwoJCQkJCQl9CgkJCQkJCSRibG9ja0luZm9bJ2Jsb2NrX2dyb3VwJ10gPSAkYmxvY2tHcm91cDsKCQkJCQl9CgkJCQkJCgkJCQkJIyB0aGlzIHdpbGwgY3JlYXRlIGFuIGludmFsaWQgYmxvY2sgdHlwZSB0byBwcmludCBvdXQgYQoJCQkJCSMgbWVzc2FnZSB3aGVuIHVzaW5nIGEgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBhcyBibG9jayBuYW1lCgkJCQkJaWYoaW5fYXJyYXkoJGJsb2NrSW5mb1snaWQnXSwgJGJhc2ljQXR0cmlicykKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICRibG9ja0luZm9bJ2lkJ10gLiAnX2ZldV9hY3Rpb24nCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19mZXVfYWN0aW9uW10nCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19mZXVfYWNjZXNzJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJGJsb2NrSW5mb1snaWQnXSAuICdfZmV1X2FjY2Vzc1tdJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICdBZHZhbmNlZENvbnRlbnRFbmREYXRlJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ0FkdmFuY2VkQ29udGVudFN0YXJ0VGltZScKCQkJCQl8fCAkYmxvY2tJbmZvWydpZCddID09ICdBZHZhbmNlZENvbnRlbnRFbmRUaW1lJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJ3N0YXJ0X2RhdGUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAnZW5kX2RhdGUnCgkJCQkJfHwgJGJsb2NrSW5mb1snaWQnXSA9PSAkYmxvY2tJbmZvWydpZCddIC4gJ19BZHZhbmNlZENvbnRlbnRUaW1lJwoJCQkJCXx8ICRibG9ja0luZm9bJ2lkJ10gPT0gJGJsb2NrSW5mb1snaWQnXSAuICdfQWR2YW5jZWRDb250ZW50RGF0ZScpCgkJCQkJewoJCQkJCQkkYmxvY2tJbmZvWydpZCddID0gbWQ1KCRibG9ja0luZm9bJ2lkJ10gLiAkaik7CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXSA9ICRibG9ja0luZm87CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXVsnYmxvY2tfdHlwZSddICAgID0gJyc7CgkJCQkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJbmZvWydpZCddXVsnZGVmYXVsdF92YWx1ZSddID0gJHRoaXMtPmxhbmcoJ2Vycm9yX2Jhc2ljYXR0cmliJywgJGJsb2NrSW5mb1snbmFtZSddKTsKCQkJCQkJCgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQkKCQkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSW5mb1snaWQnXV0gPSAkYmxvY2tJbmZvOwoJCQkJCSR0aGlzLT5BZGRFeHRyYVByb3BlcnR5KCRibG9ja0luZm9bJ2lkJ10pOwoJCQkJCQoJCQkJCWlmKCRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnICYmICRibG9ja0luZm9bJ2lucHV0cyddKQoJCQkJCXsKCQkJCQkJIyBnZXQgbXVsdGkgaW5wdXRzCgkJCQkJCSRtdWx0aV9pbnB1dF9pZHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkYmxvY2tJbmZvWydpbnB1dHMnXSkpOwoJCQkJCQlmb3JlYWNoKCRtdWx0aV9pbnB1dF9pZHMgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJCQkJCXsKCQkJCQkJCWlmKCFpc3NldCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF0pKQoJCQkJCQkJewoJCQkJCQkJCSR0aGlzLT5fbXVsdGlJbnB1dHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+X211bHRpSW5wdXRzLCAkQWR2YW5jZWRDb250ZW50LT5HZXRNdWx0aUlucHV0RnVsbCgkbXVsdGlfaW5wdXRfaWRzKSk7CgkJCQkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXSkpCgkJCQkJCQkJewoJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQl9CgkJCQkJCQkJIyR0aGlzLT5fbXVsdGlJbnB1dHNbJGlucHV0X2lkXVsndGVtcGxhdGUnXSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldFRlbXBsYXRlKCR0aGlzLT5fbXVsdGlJbnB1dHNbJGlucHV0X2lkXVsndHBsX25hbWUnXSk7CgkJCQkJCQkJJHBhdHRlcm4gPSAnL3soKEFkdmFuY2VkQ29udGVudHxjb250ZW50KF9pbWFnZXxfbW9kdWxlKT8pKCg/IV8pW159XSopKX0vaSc7CgkJCQkJCQkJJG1hdGNoZXMgPSBhcnJheSgpOwoJCQkJCQkJCSMgZ2V0IGFsbCB0aGUgdGFncwoJCQkJCQkJCSRyZXN1bHQgPSBwcmVnX21hdGNoX2FsbCgkcGF0dGVybiwgJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWydpbnB1dF9maWVsZHMnXSwgJG1hdGNoZXMpOwoJCQkJCQkJCQoJCQkJCQkJCWlmICgkcmVzdWx0ICYmIGNvdW50KCRtYXRjaGVzWzFdKSA+IDApCgkJCQkJCQkJewoJCQkJCQkJCQkjIGZvcmVhY2ggdGFnCgkJCQkJCQkJCWZvcmVhY2ggKCRtYXRjaGVzWzFdIGFzICRrMj0+JHdob2xldGFnKQoJCQkJCQkJCQl7CgkJCQkJCQkJCQlpZighJGlucHV0SW5mbyA9ICR0aGlzLT5fZ2V0X2Jsb2NrX2luZm8oJHdob2xldGFnKSkKCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCWlmKCRpbnB1dEluZm9bJ2Jsb2NrX3R5cGUnXSA9PSAnbXVsdGlfaW5wdXQnKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCWNvbnRpbnVlOyAjIFRvRG86IGRpc3BsYXkgbWVzc2FnZT8KCQkJCQkJCQkJCX0KCQkJCQkJCQkJCSMkX2lucHV0X2lkID0gJGlucHV0SW5mb1snaWQnXTsKCQkJCQkJCQkJCSMkaW5wdXRJbmZvWydpZCddID0gJ211bHRpSW5wdXQtJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnLScgLiAkbXVsdGlfaW5wdXRfaWQgLiAnLScgLiAkazEgLiAnLScgLiAkaW5wdXRJbmZvWydpZCddOwoJCQkJCQkJCQkJJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWydlbGVtZW50cyddWyRrMl0gPSAkaW5wdXRJbmZvOwoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJCSMgZm9yY2UgYSBsb2FkCgkJCSR0aGlzLT5tUHJvcGVydGllcy0+TG9hZCgkdGhpcy0+bUlkKTsKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkID0gdHJ1ZTsKCQl9CgkJcmV0dXJuICR0aGlzLT5fY29udGVudEJsb2Nrc0xvYWRlZDsKCX0KCQoJZnVuY3Rpb24gZGlzcGxheV9jb250ZW50X2Jsb2NrKCRibG9ja05hbWUsJiRibG9ja0luZm8sJHZhbHVlLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQlpZihtZXRob2RfZXhpc3RzKCR0aGlzLCdfZGlzcGxheV8nLiRibG9ja0luZm9bJ2Jsb2NrX3R5cGUnXS4nX2Jsb2NrJykpCgkJewoJCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMsJ19kaXNwbGF5XycuJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddLidfYmxvY2snKSwgJiRibG9ja0luZm8sICR2YWx1ZSwgJGFkZGluZyk7CgkJfQoJfQoJCglmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKCXsKCQlwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKCQkKCQkkdGhpcy0+QWRkQmFzZVByb3BlcnR5KCd0ZW1wbGF0ZScsIDQsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQmFzZVByb3BlcnR5KCdwYWdlbWV0YWRhdGEnLCAyMCk7CgkJCgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnc2VhcmNoYWJsZScsIDgsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdwYWdlZGF0YScsIDI1KTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdkaXNhYmxlX3d5c2l3eWcnLCA2MCwgMCwgJ2ludCcpOwoJCQoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ2ZldV9hY2Nlc3MnLCA5OSk7CgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgncmVkaXJlY3RfcGFnZScsIDEwMCwgMCwgJ2ludCcpOwoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3JlZGlyZWN0X3BhcmFtcycsIDEwMSwgMCk7CgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZXZhbHVhdGVfc21hcnR5JywgMTAyLCAwLCAnaW50Jyk7CgkJJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnZmV1X2FjdGlvbicsIDEwMywgMCwgJ2ludCcpOwoJCQoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3VzZV9leHBpcmVfZGF0ZScsIDEwNCwgMCwgJ2ludCcpOwoJCSR0aGlzLT5BZGRDb250ZW50UHJvcGVydHkoJ3N0YXJ0X2RhdGUnLCAxMDUsIDAsICdpbnQnKTsKCQkkdGhpcy0+QWRkQ29udGVudFByb3BlcnR5KCdlbmRfZGF0ZScsIDEwNiwgMCwgJ2ludCcpOwoJCQoJCSR0aGlzLT5tUHJldmlldyA9IHRydWU7Cgl9CgkKCWZ1bmN0aW9uIFJlYWR5Rm9yRWRpdCgpCgl7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7Cgl9CgkKCWZ1bmN0aW9uIFNob3coJHBhcmFtID0gJ2NvbnRlbnRfZW4nKQoJewoJCWdsb2JhbCAkZ0NtcywgJENNU19BRE1JTl9QQUdFOwoJCWlmKCFpc3NldCgkQ01TX0FETUlOX1BBR0UpIHx8ICRDTVNfQURNSU5fUEFHRSAhPT0gMSkKCQl7CgkJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJCWlmKCEkdGhpcy0+Q2hlY2tGcm9udGVuZFBhZ2VBY2Nlc3MoKSkKCQkJewoJCQkJIyRnQ21zLT5HZXRTbWFydHkoKS0+Y2xlYXJfYWxsX2NhY2hlKCk7ICMgPz8/CgkJCQlyZXR1cm4gJHRoaXMtPkRvRnJvbnRlbmRQYWdlQWN0aW9uKCk7CgkJCX0KCQl9CgkJCgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJJHBhcmFtID0gcHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcGFyYW0pKTsKCQkKCQlpZighaXNzZXQoJENNU19BRE1JTl9QQUdFKSB8fCAkQ01TX0FETUlOX1BBR0UgIT09IDEpCgkJewoJCQlmb3JlYWNoKCR0aGlzLT5fY29udGVudEJsb2NrcyBhcyAkYmxvY2tJbmZvKQoJCQl7CgkJCQlpZigkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnQ6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykpCgkJCQl7CgkJCQkJaWYoJGJsb2NrSW5mb1snZmV1X2FjY2VzcyddICYmICEkdGhpcy0+Q2hlY2tGcm9udGVuZEFjY2VzcygkYmxvY2tJbmZvWydmZXVfYWNjZXNzJ10pKQoJCQkJCXsKCQkJCQkJaWYoJGJsb2NrSW5mb1snZmV1X2FjdGlvbiddICYmICEkdGhpcy0+X2ZldUFjdGlvbikKCQkJCQkJewoJCQkJCQkJJHRoaXMtPl9mZXVBY3Rpb24gPSB0cnVlOwoJCQkJCQkJJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoJGJsb2NrSW5mb1snaWQnXSwkZmV1c2Vycy0+RG9BY3Rpb24oJ2RlZmF1bHQnLCAnY250bnQwMScsIGFycmF5KCdmb3JtJz0+J2xvZ2luJyksICR0aGlzLT5tSWQpKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0luZm9bJ2lkJ10sJycpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJaWYoJGJsb2NrSW5mb1snYmxvY2tfdHlwZSddID09ICdkYXRlJyAmJiAkYmxvY2tJbmZvWydkYXRlX2Zvcm1hdCddICE9ICcnKQoJCQkJewoJCQkJCSR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0luZm9bJ2lkJ10sc3RyZnRpbWUoJGJsb2NrSW5mb1snZGF0ZV9mb3JtYXQnXSwkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgkYmxvY2tJbmZvWydpZCddKSkpOwoJCQkJfQoJCQl9CgkJfQoJCQoJCSMgTUxFIHN1cHBvcnQKCQlpZigkdGhpcy0+bWxlICYmICR0aGlzLT5ibG9ja0xhbmcgIT0gJycpCgkJewoJCQlpZigkcGFyYW0gPT0gJ2NvbnRlbnRfZW4nKQoJCQl7CgkJCQkkcGFyYW0gPSAnY29udGVudCcuJHRoaXMtPmJsb2NrTGFuZzsKCQkJfQoJCQllbHNlIGlmKCFlbmRzd2l0aCgkcGFyYW0sJHRoaXMtPmJsb2NrTGFuZykpCgkJCXsKCQkJCSRwYXJhbSAuPSAkdGhpcy0+YmxvY2tMYW5nOwoJCQl9CgkJCQoJCX0KCQkjLS0tCgkJCgkJJHJlc3VsdCA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRwYXJhbSk7CgkJCgkJIyBNTEUgc3VwcG9ydAoJCWlmKCR0aGlzLT5tbGUgJiYgJHRoaXMtPmJsb2NrTGFuZyAhPSAnJykKCQl7CgkJCWlmKCRyZXN1bHQgPT0gJycgJiYgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcgIT0gJycgJiYgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcgIT0gJHRoaXMtPmJsb2NrTGFuZykKCQkJewoJCQkJJHBhcmFtID0gc3RyX3JlcGxhY2UoJHRoaXMtPmJsb2NrTGFuZywgJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcsICRwYXJhbSk7CgkJCQkkcmVzdWx0ID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJHBhcmFtKTsKCQkJfQoJCX0KCQkjLS0tCgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgkKCWZ1bmN0aW9uIFRhYk5hbWVzKCkKCXsKCQkkdGFicyA9IGFycmF5KGxhbmcoJ21haW4nKSk7CgkJaWYoIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykgKQoJCXsKCQkJJHRhYnNbXSA9IGxhbmcoJ29wdGlvbnMnKTsKCQl9CgkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQlpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJywxKSkKCQl7CgkJCSR0YWJzW10gPSAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdhZHZhbmNlZGNvbnRlbnRfdGFibmFtZScpOwoJCX0KCQkKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQkKCQlmb3JlYWNoKCR0aGlzLT5fcGFnZVRhYnMgYXMgJHRhYikKCQl7CgkJCWlmKCFpbl9hcnJheSgkdGFiWyd0YWJfbmFtZSddLCAkdGFicykpCgkJCXsKCQkJCSR0YWJzW10gPSAoJHRhYlsndGFiX2lkJ10gPT0gJ29wdGlvbnMnID8gbGFuZygnb3B0aW9ucycpIDogJHRhYlsndGFiX25hbWUnXSk7CgkJCX0KCQkJaWYoIWluX2FycmF5KCR0YWJbJ3RhYl9pZCddLCAkdGhpcy0+X3RhYklkcykpCgkJCXsKCQkJCSR0aGlzLT5fdGFiSWRzW10gPSAkdGFiWyd0YWJfaWQnXTsKCQkJfQoJCX0KCQlyZXR1cm4gJHRhYnM7Cgl9CgkKCWZ1bmN0aW9uIEZpbGxQYXJhbXMoJHBhcmFtcykKCXsKCQlpZihpc3NldCgkcGFyYW1zWydjb250ZW50X3R5cGUnXSkpCgkJewoJCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCQkKCQkJJHBhcmFtZXRlcnMgPSBhcnJheSgncGFnZWRhdGEnLCAnc2VhcmNoYWJsZScsICdkaXNhYmxlX3d5c2l3eWcnLCAnZmV1X2FjY2VzcycsICdyZWRpcmVjdF9wYWdlJywgJ3JlZGlyZWN0X3BhcmFtcycsICdldmFsdWF0ZV9zbWFydHknLCAnZmV1X2FjdGlvbicsICdzdGFydF9kYXRlJywgJ2VuZF9kYXRlJywgJ3VzZV9leHBpcmVfZGF0ZScpOwoJCQkKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzTG9hZGVkID0gZmFsc2U7CgkJCSNwaWNrIHVwIHRoZSB0ZW1wbGF0ZSBpZCBiZWZvcmUgd2UgZG8gcGFyYW1ldGVycwoJCQlpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfaWQnXSkpCgkJCXsKCQkJCSNpZigkdGhpcy0+bVRlbXBsYXRlSWQgIT0gJHBhcmFtc1sndGVtcGxhdGVfaWQnXSkgewoJCQkJIwkkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQgPSBmYWxzZTsKCQkJCSN9CgkJCQkkdGhpcy0+bVRlbXBsYXRlSWQgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9pZCddOwoJCQl9CgkJCSNwaWNrIHVwIHRoZSBjb250ZW50IHR5cGUgYmVmb3JlIHdlIGRvIHBhcmFtZXRlcnMKCQkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NvbnRlbnRfdHlwZSddKSkKCQkJewoJCQkJI2lmKCR0aGlzLT5tVHlwZSAhPSAkcGFyYW1zWydjb250ZW50X3R5cGUnXSkgewoJCQkJIwkkdGhpcy0+X2NvbnRlbnRCbG9ja3NMb2FkZWQgPSBmYWxzZTsKCQkJCSN9CgkJCQkkdGhpcy0+bVR5cGUgPSAkcGFyYW1zWydjb250ZW50X3R5cGUnXTsKCQkJfQoJCQkKCQkJaWYoJHRoaXMtPm1UeXBlID09ICdjb250ZW50MicgfHwgJHRoaXMtPm1UeXBlID09ICdjb250ZW50JykKCQkJewoJCQkJIyBhZGQgY29udGVudCBibG9ja3MKCQkJCSR0aGlzLT5wYXJzZV9jb250ZW50X2Jsb2NrcygpOwoJCQkJCgkJCQkjIGFkZGVkIGJ5IE5hTjoKCQkJCSRwYXJlbnRJZCA9IC0xOwoJCQkJaWYoaXNzZXQoJHBhcmFtc1sncGFyZW50X2lkJ10pKQoJCQkJewoJCQkJCSRwYXJlbnRJZCA9ICRwYXJhbXNbJ3BhcmVudF9pZCddOwoJCQkJfQoJCQkJCgkJCQlpZihjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpICYmIGlzc2V0KCRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSkpCgkJCQl7CgkJCQkJaWYoIWlzX2FycmF5KCRwYXJhbXNbJ2ZldV9hY2Nlc3MnXSkpCgkJCQkJewoJCQkJCQkkZmV1QWNjZXNzID0gYXJyYXkoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJGZldUFjY2VzcyA9ICRwYXJhbXNbJ2ZldV9hY2Nlc3MnXTsKCQkJCQl9CgkJCQkJCgkJCQkJIyBpZiBwYWdlIGhhcyBubyBwYXJlbnRzIGJ1dCB3YW50cyB0byBpbmhlcml0IC0+IHJlbW92ZSBpbmhlcml0YW5jZQoJCQkJCWlmKCRwYXJlbnRJZCA8PSAwICYmIGluX2FycmF5KCctMScsICRmZXVBY2Nlc3MpKQoJCQkJCXsKCQkJCQkJZm9yZWFjaCgkZmV1QWNjZXNzIGFzICRrPT4kdikKCQkJCQkJewoJCQkJCQkJaWYoJHYgPT0gJy0xJykKCQkJCQkJCXsKCQkJCQkJCQl1bnNldCgkZmV1QWNjZXNzWyRrXSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQkJCgkJCQkJIyBpZiB0aGVyZSBpcyBzdGlsbCBpbmhlcml0YW5jZSAtPiBjaGVjayBpZiB0aGVyZSBhY3R1YWxseSBpcyBhbnkgZmV1IGdyb3VwIHNlbGVjdGVkIGJ5IHBhcmVudHMKCQkJCQkkX2ZldUFjY2VzcyA9IGFycmF5KCk7CgkJCQkJaWYoaW5fYXJyYXkoJy0xJywgJGZldUFjY2VzcykpCgkJCQkJewoJCQkJCQkjICRfZmV1QWNjZXNzIGNvbnRhaW5zIGFsbCBmZXUgZ3JvdXBzIChvZiBjdXJyZW50IHBhZ2UgYXMgd2VsbCBhcyBvZiBhbGwgcGFyZW50IHBhZ2VzKQoJCQkJCQkkX2ZldUFjY2VzcyA9ICR0aGlzLT5Jbmhlcml0UGFyZW50UHJvcCgkcGFyZW50SWQsICdmZXVfYWNjZXNzJywgJGZldUFjY2Vzcyk7CgkJCQkJfQoJCQkJCQoJCQkJCSMgaWYgd2UgaGF2ZSBzZWxlY3RlZCBhbnkgZmV1IGdyb3VwIC0+IGRpc2FibGUgY2FjaGluZyBhbmQgc2VhcmNoCgkJCQkJaWYoY291bnQoJF9mZXVBY2Nlc3MpIHx8IChjb3VudCgkZmV1QWNjZXNzKSAmJiAhaW5fYXJyYXkoJy0xJywgJGZldUFjY2VzcykpKQoJCQkJCXsKCQkJCQkJJHBhcmFtc1snY2FjaGFibGUnXSAgID0gZmFsc2U7CgkJCQkJCSR0aGlzLT5tQ2FjaGFibGUgICAgICA9IGZhbHNlOwoJCQkJCQkkcGFyYW1zWydzZWFyY2hhYmxlJ10gPSBmYWxzZTsKCQkJCQl9CgkJCQkJCgkJCQkJJHBhcmFtc1snZmV1X2FjY2VzcyddID0gaW1wbG9kZSgnLCcsICRmZXVBY2Nlc3MpOwoJCQkJCQoJCQkJCSRyZWRpcmVjdFBhZ2UgPSAnJzsKCQkJCQlpZihpc3NldCgkcGFyYW1zWydyZWRpcmVjdF9wYWdlJ10pKQoJCQkJCXsKCQkJCQkJJHJlZGlyZWN0UGFnZSA9ICRwYXJhbXNbJ3JlZGlyZWN0X3BhZ2UnXTsKCQkJCQl9CgkJCQkJIyBpZiBwYWdlIGhhcyBubyBwYXJlbnRzIGJ1dCB3YW50cyB0byBpbmhlcml0IC0+IHJlbW92ZSBpbmhlcml0YW5jZQoJCQkJCWlmKCRwYXJlbnRJZCA8PSAwICYmICRyZWRpcmVjdFBhZ2UgPT0gLTEpCgkJCQkJewoJCQkJCQkkcmVkaXJlY3RQYWdlID0gJyc7CgkJCQkJfQoJCQkJCQoJCQkJCSRmZXVBY3Rpb24gPSAnJzsKCQkJCQlpZihpc3NldCgkcGFyYW1zWydmZXVfYWN0aW9uJ10pKQoJCQkJCXsKCQkJCQkJJGZldUFjdGlvbiA9ICRwYXJhbXNbJ2ZldV9hY3Rpb24nXTsKCQkJCQl9CgkJCQkJIyBpZiBwYWdlIGhhcyBubyBwYXJlbnRzIGJ1dCB3YW50cyB0byBpbmhlcml0IC0+IHJlbW92ZSBpbmhlcml0YW5jZQoJCQkJCWlmKCRwYXJlbnRJZCA8PSAwICYmICRmZXVBY3Rpb24gPT0gLTEpCgkJCQkJewoJCQkJCQkkZmV1QWN0aW9uID0gJyc7CgkJCQkJfQoJCQkJCSRwYXJhbXNbJ3JlZGlyZWN0X3BhZ2UnXSA9ICRyZWRpcmVjdFBhZ2U7CgkJCQkJJHBhcmFtc1snZmV1X2FjdGlvbiddICAgID0gJGZldUFjdGlvbjsKCQkJCX0KCQkJCQoJCQkJIyBkbyB0aGUgY29udGVudCBwcm9wZXJ0eSBwYXJhbWV0ZXJzCgkJCQlmb3JlYWNoICgkcGFyYW1ldGVycyBhcyAkb25lcGFyYW0pCgkJCQl7CgkJCQkJaWYoY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSAmJiAkb25lcGFyYW0gPT0gJ3N0YXJ0X2RhdGUnIHx8ICRvbmVwYXJhbSA9PSAnZW5kX2RhdGUnKQoJCQkJCXsKCQkJCQkJJF9zdHJpbmcgICAgICAgICAgID0gdWNmaXJzdChzdHJfcmVwbGFjZSgnX2RhdGUnLCcnLCRvbmVwYXJhbSkpOwoJCQkJCQkkcGFyYW1zWyRvbmVwYXJhbV0gPSAwOwoJCQkJCQlpZihpc3NldCgkcGFyYW1zWydBZHZhbmNlZENvbnRlbnQnLiRfc3RyaW5nLidUaW1lJ10pICYmIGlzc2V0KCRwYXJhbXNbJ0FkdmFuY2VkQ29udGVudCcuJF9zdHJpbmcuJ0RhdGUnXSkpCgkJCQkJCXsKCQkJCQkJCSRwYXJhbXNbJG9uZXBhcmFtXSA9ICRwYXJhbXNbJ0FkdmFuY2VkQ29udGVudCcuJF9zdHJpbmcuJ1RpbWUnXSArICRwYXJhbXNbJ0FkdmFuY2VkQ29udGVudCcuJF9zdHJpbmcuJ0RhdGUnXTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoaXNzZXQoJHBhcmFtc1skb25lcGFyYW1dKSkKCQkJCQl7CgkJCQkJCSR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRvbmVwYXJhbSwgJHBhcmFtc1skb25lcGFyYW1dKTsKCQkJCQl9CgkJCQl9CgkJCQkKCQkJCWlmKGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykgJiYgaXNzZXQoJHBhcmFtc1snc3RhcnRfZGF0ZSddKSAmJiBpc3NldCgkcGFyYW1zWyd1c2VfZXhwaXJlX2RhdGUnXSkgJiYgJHBhcmFtc1sndXNlX2V4cGlyZV9kYXRlJ10gPT0gMSAmJiAkcGFyYW1zWydzdGFydF9kYXRlJ10gPiB0aW1lKCkpCgkJCQl7CgkJCQkJJHBhcmFtc1snYWN0aXZlJ10gPSBmYWxzZTsKCQkJCQkkdGhpcy0+bUFjdGl2ZSAgICA9IGZhbHNlOwoJCQkJfQoJCQkJCgkJCQkjIG1ldGFkYXRhCgkJCQlpZiAoaXNzZXQoJHBhcmFtc1snbWV0YWRhdGEnXSkpCgkJCQl7CgkJCQkJJHRoaXMtPm1NZXRhZGF0YSA9ICRwYXJhbXNbJ21ldGFkYXRhJ107CgkJCQl9CgkJCQkKCQkJCSMgY29udGVudCBibG9ja3MKCQkJCSRpID0gMDsKCQkJCWZvcmVhY2goJHBhcmFtcyBhcyAkcGFyYW1OYW1lID0+ICRwYXJhbVZhbHVlKQoJCQkJewoJCQkJCSRwYXJhbU5hbWUgPSBzdHJfcmVwbGFjZSgnX0FkdmFuY2VkQ29udGVudERhdGUnLCAnJywgJHBhcmFtTmFtZSk7CgkJCQkJCgkJCQkJaWYoIWlzc2V0KCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXSkpCgkJCQkJewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJCgkJCQkJJGkrKzsKCQkJCQkkdmFsdWUgPSAnJzsKCQkJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2Jsb2NrX3R5cGUnXSA9PSAnc2VsZWN0X211bHRpcGxlJykKCQkJCQl7CgkJCQkJCWlmKGlzX2FycmF5KCRwYXJhbVZhbHVlKSkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gaW1wbG9kZSgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2RlbGltaXRlciddLCAkcGFyYW1WYWx1ZSk7CgkJCQkJCX0KCQkJCQkJZWxzZSBpZiAoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydzb3J0YWJsZSddKQoJCQkJCQl7CgkJCQkJCQkkaXRlbXMgPSBhcnJheSgpOwoJCQkJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRpdGVtTmFtZSA9PiAkaXRlbVZhbHVlKSAjIFRvRG86IGNyZWF0ZSBmdW5jdGlvbiB0byBsb29wIG9ubHkgdGhyb3VnaCB0aGUgaXRlbXMgbm90IHRocm91Z2ggYWxsIHBhcmFtcyEKCQkJCQkJCXsKCQkJCQkJCQlpZihzdGFydHN3aXRoKCRpdGVtTmFtZSwkcGFyYW1OYW1lLidfQWR2YW5jZWRDb250ZW50U29ydGFibGVJdGVtXycpKQoJCQkJCQkJCXsKCQkJCQkJCQkJJGl0ZW1zW10gPSAkaXRlbVZhbHVlOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCSR2YWx1ZSA9IGltcGxvZGUoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydkZWxpbWl0ZXInXSwgJGl0ZW1zKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQllbHNlIGlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnYmxvY2tfdHlwZSddID09ICdkYXRlJwoJCQkJCSYmICR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnbW9kZSddID09ICdjYWxlbmRhcicKCQkJCQkmJiBpc3NldCgkcGFyYW1zWyRwYXJhbU5hbWUgLiAnX0FkdmFuY2VkQ29udGVudERhdGUnXSkpCgkJCQkJewoJCQkJCQkkdGltZSA9IDA7CgkJCQkJCWlmKGlzc2V0KCRwYXJhbXNbJHBhcmFtTmFtZSAuICdfQWR2YW5jZWRDb250ZW50VGltZSddKSkKCQkJCQkJewoJCQkJCQkJJHRpbWUgPSAkcGFyYW1zWyRwYXJhbU5hbWUgLiAnX0FkdmFuY2VkQ29udGVudFRpbWUnXTsKCQkJCQkJfQoJCQkJCQkjJF90bXAgICAgICAgICA9IGV4cGxvZGUoJzonLCAkcGFyYW1zWyRwYXJhbU5hbWUgLiAnX0FkdmFuY2VkQ29udGVudFRpbWUnXSk7CgkJCQkJCSMkdGltZV9zZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkJCQkJIyR2YWx1ZSAgICAgICA9ICR0aW1lX3NlY29uZHMgKyAkcGFyYW1zWyRwYXJhbU5hbWUgLiAnX0FkdmFuY2VkQ29udGVudERhdGUnXTsKCQkJCQkJJHZhbHVlICAgICAgICA9ICR0aW1lICsgJHBhcmFtc1skcGFyYW1OYW1lIC4gJ19BZHZhbmNlZENvbnRlbnREYXRlJ107CgkJCQkJfQoJCQkJCWVsc2UgaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRwYXJhbU5hbWVdWydibG9ja190eXBlJ10gPT0gJ211bHRpX2lucHV0JykKCQkJCQl7CgkJCQkJCSRtdWx0aV9pbnB1dHMgPSBhcnJheSgpOwoJCQkJCQlmb3JlYWNoKCR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnaW5wdXRzJ10pKSBhcyAkazE9PiRtdWx0aV9pbnB1dF9pZCkKCQkJCQkJewoJCQkJCQkJJG11bHRpX2lucHV0X3ZhbHVlcyA9IGFycmF5KCk7CgkJCQkJCQlmb3JlYWNoKCR0aGlzLT5fbXVsdGlJbnB1dHNbJG11bHRpX2lucHV0X2lkXVsnZWxlbWVudHMnXSBhcyAkazI9PiRpbnB1dEluZm8pCgkJCQkJCQl7CgkJCQkJCQkJJGlucHV0SW5mb1snaWQnXSA9ICdtdWx0aUlucHV0LScgLiAkcGFyYW1OYW1lIC4gJy0nIC4gJG11bHRpX2lucHV0X2lkIC4gJy0nIC4gJGsxIC4gJy0nIC4gJGlucHV0SW5mb1snaWQnXTsKCQkJCQkJCQlpZihpc3NldCgkcGFyYW1zWyRpbnB1dEluZm9bJ2lkJ11dKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSRtdWx0aV9pbnB1dF92YWx1ZXNbXSA9ICRwYXJhbXNbJGlucHV0SW5mb1snaWQnXV07CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJI2lmKCEkdGhpcy0+SXNWYXJFbXB0eSgkbXVsdGlfaW5wdXRfdmFsdWVzKSkKCQkJCQkJCXsKCQkJCQkJCQkkbXVsdGlfaW5wdXRzW10gPSBpbXBsb2RlKCR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsndmFsdWVfZGVsaW1pdGVyJ10sJG11bHRpX2lucHV0X3ZhbHVlcyk7CgkJCQkJCQl9CgkJCQkJCQkjZWxzZQoJCQkJCQkJI3sKCQkJCQkJCSMJJG11bHRpX2lucHV0c1tdID0gJyc7CgkJCQkJCQkjfQoJCQkJCQl9CgkJCQkJCWlmKCEkdGhpcy0+SXNWYXJFbXB0eSgkbXVsdGlfaW5wdXRzKSkKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gaW1wbG9kZSgkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2lucHV0X2RlbGltaXRlciddLCAkbXVsdGlfaW5wdXRzKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkdmFsdWUgPSB0cmltKCRwYXJhbVZhbHVlKTsKCQkJCQl9CgkJCQkJaWYoJHZhbHVlID09ICcnICYmICEkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ2FsbG93X25vbmUnXSkKCQkJCQl7CgkJCQkJCSR2YWx1ZSA9ICR0aGlzLT5fY29udGVudEJsb2Nrc1skcGFyYW1OYW1lXVsnZGVmYXVsdF92YWx1ZSddOwoJCQkJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJHBhcmFtTmFtZV1bJ3NtYXJ0eSddKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSAkdGhpcy0+RG9TbWFydHkoJHZhbHVlKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQkKCQkJCQkjIE1MRSBzdXBwb3J0CgkJCQkJaWYoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnICYmICRwYXJhbU5hbWUgIT0gJ2NvbnRlbnQnIC4gJHRoaXMtPmJsb2NrTGFuZykKCQkJCQl7CgkJCQkJCSRwYXJhbU5hbWUgLj0gJHRoaXMtPmJsb2NrTGFuZzsKCQkJCQl9CgkJCQkJIy0tLQoJCQkJCQoJCQkJCSR0aGlzLT5BZGRFeHRyYVByb3BlcnR5KCRwYXJhbU5hbWUpOwoJCQkJCSR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKCRwYXJhbU5hbWUsICR2YWx1ZSk7CgkJCQl9CgkJCX0KCQl9CgkJcGFyZW50OjpGaWxsUGFyYW1zKCRwYXJhbXMpOwoJfQoJCglmdW5jdGlvbiBFZGl0QXNBcnJheSgkYWRkaW5nID0gZmFsc2UsICR0YWIgPSAwLCAkc2hvd2FkbWluID0gZmFsc2UpCgl7CgkJJHRoaXMtPnBhcnNlX2NvbnRlbnRfYmxvY2tzKCk7CgkJJHJldCA9IGFycmF5KCk7CgkJJHRtcCA9IGFycmF5KCk7CgkJaWYoaXNzZXQoJHRoaXMtPl90YWJJZHNbJHRhYl0pKQoJCXsKCQkJJHRhYl9pZCA9ICR0aGlzLT5fdGFiSWRzWyR0YWJdOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9CgkJaWYoJHRhYl9pZCA9PSAnbWFpbicgfHwgKCR0YWJfaWQgPT0gJ29wdGlvbnMnICYmIGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBDb250ZW50JykpKQoJCXsKCQkJJHRtcCA9ICR0aGlzLT5DbGVhbkFycmF5KCR0aGlzLT5kaXNwbGF5X2F0dHJpYnV0ZXMoJGFkZGluZywgJHRhYikpOwoJCX0KCQllbHNlIGlmKCR0YWJfaWQgPT0gJ0FkdmFuY2VkQ29udGVudCcgJiYgY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKSkKCQl7CgkJCSR0bXAgPSAkdGhpcy0+RGlzcGxheUFkdmFuY2VkT3B0aW9ucygkYWRkaW5nKTsKCQl9CgkJCgkJZm9yZWFjaCggJHRtcCBhcyAkb25lICkKCQl7CgkJCSRyZXRbXSA9ICRvbmU7CgkJfQoJCQoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJGogPSAwOwoJCWZvcmVhY2goJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnYmxvY2tfZ3JvdXBzJ10gYXMgJGJsb2NrR3JvdXApCgkJewoJCQkkdGhpcy0+X2Jsb2NrR3JvdXBzWyRibG9ja0dyb3VwXVsnZGlzcGxheSddID0gJEFkdmFuY2VkQ29udGVudC0+R2V0SXRlbURpc3BsYXkoJ2dyb3VwJywgJGJsb2NrR3JvdXAsICR0aGlzLT5tSWQsICR0aGlzLT5tVGVtcGxhdGVJZCwgISRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ2NvbGxhcHNlX2dyb3VwX2RlZmF1bHQnLDEpKTsKCQkJCSR0aGlzLT5fYmxvY2tHcm91cHNbJGJsb2NrR3JvdXBdWydwcmVmX3VybCddID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsCgkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlTGluaygnbTFfJywgJ3NhdmVQcmVmcycsICcnLCAkdGhpcy0+bGFuZygndG9nZ2xlX2dyb3VwJyksCgkJCQkJCWFycmF5KCdpdGVtX3R5cGUnPT4nZ3JvdXAnLAoJCQkJCQkJJ2Rpc2FibGVfdGhlbWUnPT50cnVlLAoJCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQkJJ2NvbnRlbnRfaWQnPT4kdGhpcy0+bUlkLAoJCQkJCQkJJ3RlbXBsYXRlX2lkJz0+JHRoaXMtPm1UZW1wbGF0ZUlkLAoJCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tHcm91cCksCgkJCQkJCScnLCB0cnVlKSk7CgkJfQoJCWZvcmVhY2goJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnY29udGVudF9ibG9ja3MnXSBhcyAkYmxvY2tJZCkKCQl7CgkJCSRqKys7CgkJCQoJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190eXBlJ10gIT0gJycgJiYgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnc21hcnR5J10pCgkJCXsKCQkJCWZvcmVhY2goJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXSBhcyAkcHJvcE5hbWU9PiRwcm9wVmFsdWUpCgkJCQl7CgkJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVskcHJvcE5hbWVdID0gJHRoaXMtPkRvU21hcnR5KCRwcm9wVmFsdWUpOwoJCQkJfQoJCQl9CgkJCSMgTUxFIHN1cHBvcnQKCQkJaWYoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnICYmICRibG9ja0lkICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCXsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0lkIC4gJHRoaXMtPmJsb2NrTGFuZyk7CgkJCX0KCQkJZWxzZSAjLS0tCgkJCXsKCQkJCSR2YWx1ZSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCRibG9ja0lkKTsKCQkJfQoJCQkjIE1MRSBzdXBwb3J0CgkJCWlmKCR0aGlzLT5tbGUgJiYgJHZhbHVlID09ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICcnICYmICR0aGlzLT5kZWZhdWx0QmxvY2tMYW5nICE9ICR0aGlzLT5ibG9ja0xhbmcpCgkJCXsKCQkJCWlmKCRibG9ja0lkICE9ICdjb250ZW50JyAuICR0aGlzLT5ibG9ja0xhbmcpCgkJCQl7CgkJCQkJJHZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrSWQgLiAkdGhpcy0+ZGVmYXVsdEJsb2NrTGFuZyk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHZhbHVlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnQnIC4gJHRoaXMtPmRlZmF1bHRCbG9ja0xhbmcpOwoJCQkJfQoJCQl9CgkJCSMtLS0KCQkJCgkJCWlmKCgkYWRkaW5nICYmICR2YWx1ZSA9PSAnJykKCQkJfHwgKCR2YWx1ZSA9PSAnJyAmJiAhJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYWxsb3dfbm9uZSddKSB8fCAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduZXdfYmxvY2snXSkKCQkJewoJCQkJJHZhbHVlID0gJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGVmYXVsdF92YWx1ZSddOwoJCQl9CgkJCQoJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydjb250ZW50J10gPSBjbXNfaHRtbGVudGl0aWVzKCR2YWx1ZSwgRU5UX05PUVVPVEVTLCBnZXRfZW5jb2RpbmcoJycpKTsKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnaW5wdXQnXSAgID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnaW52YWxpZF9ibG9ja3R5cGUnLCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX3R5cGUnXSwkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduYW1lJ10pOwoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSA9PSB1Y3dvcmRzKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ25hbWUnXSkKCQkJJiYgKCRibG9ja0lkID09IG1kNSgnY29udGVudF9lbicuJGopCgkJCXx8ICRibG9ja0lkID09ICdjb250ZW50X2VuJwoJCQl8fCAoJHRoaXMtPm1sZSAmJiAkdGhpcy0+YmxvY2tMYW5nICE9ICcnCgkJCSYmICgkYmxvY2tJZCA9PSAnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nCgkJCXx8ICRibG9ja0lkID09IG1kNSgnY29udGVudCcgLiAkdGhpcy0+YmxvY2tMYW5nLiRqKSkpKSkKCQkJewoJCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnbGFiZWwnXSA9IGxhbmcoJ2NvbnRlbnQnKTsKCQkJfQoJCQkKCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsndHJhbnNsYXRlX2xhYmVscyddKQoJCQl7CgkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydsYWJlbCddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydsYWJlbCddKTsKCQkJfQoJCQkKCQkJJGJsb2NrRGlzcGxheSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldEl0ZW1EaXNwbGF5KCdibG9jaycsICRibG9ja0lkLCAkdGhpcy0+bUlkLCAkdGhpcy0+bVRlbXBsYXRlSWQsICEkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydjb2xsYXBzZSddKTsKCQkJJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnZGlzcGxheSddICA9ICRibG9ja0Rpc3BsYXk7CgkJCSR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ3ByZWZfdXJsJ10gPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywKCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZUxpbmsoJ20xXycsICdzYXZlUHJlZnMnLCAnJywgJEFkdmFuY2VkQ29udGVudC0+bGFuZygndG9nZ2xlX2Jsb2NrJyksCgkJCQkJYXJyYXkoJ2l0ZW1fdHlwZSc9PidibG9jaycsCgkJCQkJCSdkaXNhYmxlX3RoZW1lJz0+dHJ1ZSwKCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQknY29udGVudF9pZCc9PiR0aGlzLT5tSWQsCgkJCQkJCSd0ZW1wbGF0ZV9pZCc9PiR0aGlzLT5tVGVtcGxhdGVJZCwKCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tJZCksCgkJCQkJJycsIHRydWUpKTsKCQkJCgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ211bHRpcGxlJ10gJiYgJEFkdmFuY2VkQ29udGVudC0+R2V0SXRlbURpc3BsYXkoJ21lc3NhZ2UnLCAkYmxvY2tJZCwgJHRoaXMtPm1JZCwgJHRoaXMtPm1UZW1wbGF0ZUlkKSkKCQkJewoJCQkJJGhpZGVMaW5rID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsCgkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlTGluaygnbTFfJywgJ3NhdmVQcmVmcycsICcnLCAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCd0b2dnbGVfbWVzc2FnZScpLAoJCQkJCQlhcnJheSgnaXRlbV90eXBlJz0+J21lc3NhZ2UnLAoJCQkJCQkJJ2Rpc2FibGVfdGhlbWUnPT50cnVlLAoJCQkJCQkJJ2FqYXgnPT50cnVlLAoJCQkJCQkJJ2NvbnRlbnRfaWQnPT4kdGhpcy0+bUlkLAoJCQkJCQkJJ3RlbXBsYXRlX2lkJz0+JHRoaXMtPm1UZW1wbGF0ZUlkLAoJCQkJCQkJJ2l0ZW1faWQnPT4kYmxvY2tJZCwKCQkJCQkJCSdpdGVtX2Rpc3BsYXknPT4wKSwKCQkJCQkJJycsIGZhbHNlLCcnLCdvbmNsaWNrPSJqUXVlcnkuZ2V0KHRoaXMuaHJlZik7IGpRdWVyeSh0aGlzKS5wYXJlbnQoKS50b2dnbGUoXCdmYXN0XCcpOyByZXR1cm4gZmFsc2U7IicpKTsKCQkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydkZXNjcmlwdGlvbiddID0gJzxwPicuJEFkdmFuY2VkQ29udGVudC0+bGFuZygnbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnLCAkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWyduYW1lJ10pLicgKCcuICRoaWRlTGluayAuJyk8L3A+Jy4kdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydkZXNjcmlwdGlvbiddOwoJCQl9CgkJCQoJCQlpZigkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190eXBlJ10gIT0gJycgJiYgbWV0aG9kX2V4aXN0cygkdGhpcywnX2Rpc3BsYXlfJy4kdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydibG9ja190eXBlJ10uJ19ibG9jaycpKQoJCQl7CgkJCQkkdGhpcy0+X2NvbnRlbnRCbG9ja3NbJGJsb2NrSWRdWydpbnB1dCddID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMsJ19kaXNwbGF5XycuJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdHlwZSddLidfYmxvY2snKSwgJiR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF0sICR2YWx1ZSwgJGFkZGluZyk7CgkJCX0KCQkJaWYoJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfdGFiJ10gIT0gJycgfHwgJHRoaXMtPl9jb250ZW50QmxvY2tzWyRibG9ja0lkXVsnYmxvY2tfZ3JvdXAnXSAhPSAnJykKCQkJewoJCQkJdW5zZXQoJHRoaXMtPl9wYWdlVGFic1skdGFiX2lkXVsnY29udGVudF9ibG9ja3MnXVskYmxvY2tJZF0pOwoJCQl9CgkJCWlmKCR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX3RhYiddICE9ICcnICYmICR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX2dyb3VwJ10gIT0gJycpCgkJCXsKCQkJCXVuc2V0KCR0aGlzLT5fcGFnZVRhYnNbJHRhYl9pZF1bJ2Jsb2NrX2dyb3VwcyddWyR0aGlzLT5fY29udGVudEJsb2Nrc1skYmxvY2tJZF1bJ2Jsb2NrX2dyb3VwJ11dKTsKCQkJfQoJCX0KCQkKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbignbW9kdWxlX2lkJywgJ20xXycpOwoJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZV90YWJfbnInLCAkdGFiKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2VfdGFiX2lkJywgJHRhYl9pZCk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwYWdlX3RhYnMnLCAkdGhpcy0+X3BhZ2VUYWJzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2Jsb2NrX3RhYnMnLCAkdGhpcy0+X2Jsb2NrVGFicyk7CgkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdibG9ja19ncm91cHMnLCAkdGhpcy0+X2Jsb2NrR3JvdXBzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2RhdGVfYmxvY2tzJywgJHRoaXMtPl9kYXRlQmxvY2tzKTsKCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2NvbnRlbnRfYmxvY2tzJywgJHRoaXMtPl9jb250ZW50QmxvY2tzKTsKCQkKCQlpZigkdGFiID09IDApCgkJewoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fdGFiSWRzLCdBZHZhbmNlZENvbnRlbnQgX3RhYklkcycpOwoJCQkjZGVidWdfYnVmZmVyKCR0aGlzLT5fcGFnZVRhYnMsJ0FkdmFuY2VkQ29udGVudCBfcGFnZVRhYnMnKTsKCQkJI2RlYnVnX2J1ZmZlcigkdGhpcy0+X2Jsb2NrVGFicywnQWR2YW5jZWRDb250ZW50IF9ibG9ja1RhYnMnKTsKCQkJI2RlYnVnX2J1ZmZlcigkdGhpcy0+X2Jsb2NrR3JvdXBzLCdBZHZhbmNlZENvbnRlbnQgX2Jsb2NrR3JvdXBzJyk7CgkJCSNkZWJ1Z19idWZmZXIoJHRoaXMtPl9jb250ZW50QmxvY2tzLCdBZHZhbmNlZENvbnRlbnQgX2NvbnRlbnRCbG9ja3MnKTsKCQkJCgkJCSMgdWdseSBoYWNrIQoJCQkkaGVhZGVyc19saXN0ID0gaGVhZGVyc19saXN0KCk7CgkJCSRvdXRwdXQgPSBzdHJfcmVwbGFjZSgnPC9oZWFkPicsICRBZHZhbmNlZENvbnRlbnQtPkdldEhlYWRlckhUTUwoKSAuICc8L2hlYWQ+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOwoJCQlAb2JfZW5kX2NsZWFuKCk7CgkJCUBvYl9zdGFydCgpOwoJCQlmb3JlYWNoKCRoZWFkZXJzX2xpc3QgYXMgJGhlYWRlcikKCQkJewoJCQkJaGVhZGVyKCRoZWFkZXIpOwoJCQl9CgkJCWVjaG8gJG91dHB1dDsKCQkJIy0tLSBidXQgd29ya3MgOkQKCQl9CgkJCgkJJHJldFtdID0gYXJyYXkoJycsICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZSgnY29udGVudFR5cGUudHBsJykpOwoJCXJldHVybiAkcmV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV90ZXh0X2Jsb2NrKCYkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkdXNld3lzaXd5ZyA9ICEkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZGlzYWJsZV93eXNpd3lnJyk7CgkJaWYoISR1c2V3eXNpd3lnKQoJCXsKCQkJJGJsb2NrSW5mb1sndXNld3lzaXd5ZyddID0gZmFsc2U7CgkJfQoJCWlmICgkYmxvY2tJbmZvWydvbmVsaW5lJ10gPT0gZmFsc2UpCgkJewoJCQlyZXR1cm4gY3JlYXRlX3RleHRhcmVhKCRibG9ja0luZm9bJ3VzZXd5c2l3eWcnXSwgJHZhbHVlLCAkYmxvY2tJbmZvWydpZCddLCAnJywgJGJsb2NrSW5mb1snaWQnXSwgJycsICR0aGlzLT5fc3R5bGVzaGVldCk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAnPGlucHV0IHR5cGU9InRleHQiJyAuICgkYmxvY2tJbmZvWydzdHlsZSddICE9ICcnPydzdHlsZT0iJyAuICRibG9ja0luZm9bJ3N0eWxlJ10gLiAnICInOicnKSAuICgkYmxvY2tJbmZvWydtYXhsZW5ndGgnXSAhPSAnJz8nIG1heGxlbmd0aD0iJyAuICRibG9ja0luZm9bJ21heGxlbmd0aCddIC4gJyAiJzonJykgLiAoJGJsb2NrSW5mb1snc2l6ZSddICE9ICcnPycgc2l6ZT0iJyAuICRibG9ja0luZm9bJ3NpemUnXSAuICcgIic6JycpIC4gJyBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIHZhbHVlPSInIC4gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpIC4gJyIgLz4nOwoJCX0KCX0KCQoJLyoKCSAqIHJldHVybiB0aGUgSFRNTCB0byBjcmVhdGUgYW4gaW1hZ2UgZHJvcGRvd24gaW4gdGhlIGFkbWluIGNvbnNvbGUuCgkgKiBkb2VzIG5vdCBpbmNsdWRlIGEgbGFiZWwuCgkgKiB0YWtlbiBmcm9tIGRlZmF1bHQgY29udGVudHR5cGUgKGF1dGhvcjogQ2FsZ3V5KQoJICovCglmdW5jdGlvbiBfZGlzcGxheV9pbWFnZV9ibG9jaygmJGJsb2NrSW5mbywkdmFsdWUgPSAnJywkYWRkaW5nID0gZmFsc2UpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJJGFkZGRpciA9IGdldF9zaXRlX3ByZWZlcmVuY2UoJ2NvbnRlbnRpbWFnZV9wYXRoJyk7CgkJaWYoICRibG9ja0luZm9bJ2RpciddICE9ICcnICkKCQl7CgkJCSRhZGRkaXIgPSAkYmxvY2tJbmZvWydkaXInXTsKCQl9CgkJJGRpciA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sJGFkZGRpcik7CgkJJG9wdHByZWZpeCA9ICcnOwoJCSMkb3B0cHJlZml4ID0gJ3VwbG9hZHMnOwoJCSNpZiggIWVtcHR5KCRibG9ja0luZm9bJ2RpciddKSApICRvcHRwcmVmaXggLj0gJy8nLiRibG9ja0luZm9bJ2RpciddOwoJCSRpbnB1dG5hbWUgPSAkYmxvY2tJbmZvWydpZCddOwoJCWlmKCBpc3NldCgkYmxvY2tJbmZvWydpbnB1dG5hbWUnXSkgKQoJCXsKCQkJJGlucHV0bmFtZSA9ICRibG9ja0luZm9bJ2lucHV0bmFtZSddOwoJCX0KCQkjIG1vZCBieSBOYU4gdG8gZmlsdGVyIGZpbGVzIGJ5IHByZWZpeCBhbmQgc2V0ICJhbGxvdyBub25lIgoJCSMkZHJvcGRvd24gPSBjcmVhdGVfZmlsZV9kcm9wZG93bigkaW5wdXRuYW1lLCRkaXIsJHZhbHVlLCdqcGcsanBlZyxwbmcsZ2lmJywkb3B0cHJlZml4LHRydWUpOwoJCSRkcm9wZG93biA9IGNyZWF0ZV9maWxlX2Ryb3Bkb3duKCRpbnB1dG5hbWUsJGRpciwkdmFsdWUsJ2pwZyxqcGVnLHBuZyxnaWYnLCRvcHRwcmVmaXgsJGJsb2NrSW5mb1snYWxsb3dfbm9uZSddLCcnLCRibG9ja0luZm9bJ3ByZWZpeCddLCRibG9ja0luZm9bJ2V4Y2x1ZGUnXSk7CgkJCgkJaWYoICRkcm9wZG93biA9PT0gZmFsc2UgKQoJCXsKCQkJJGRyb3Bkb3duID0gbGFuZygnZXJyb3JfcmV0cmlldmluZ19maWxlX2xpc3QnKTsKCQl9CgkJcmV0dXJuICRkcm9wZG93bjsKCX0KCQoJZnVuY3Rpb24gX2Rpc3BsYXlfbW9kdWxlX2Jsb2NrKCYkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCWlmKCRibG9ja0luZm9bJ21vZHVsZSddID09ICcnKQoJCXsKCQkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcycsJ21vZHVsZScsJGJsb2NrSW5mb1snbmFtZSddKTsKCQl9CgkJaWYoICEkbW9kdWxlID0mICRBZHZhbmNlZENvbnRlbnQtPkdldE1vZHVsZUluc3RhbmNlKCRibG9ja0luZm9bJ21vZHVsZSddKSkKCQl7CgkJCXJldHVybiAkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdlcnJvcl9sb2FkaW5nX21vZHVsZScsJGJsb2NrSW5mb1snbW9kdWxlJ10sJGJsb2NrSW5mb1snbmFtZSddKTsKCQl9CgkJaWYoICEkbW9kdWxlLT5IYXNDYXBhYmlsaXR5KCdjb250ZW50YmxvY2tzJykgKQoJCXsKCQkJcmV0dXJuICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0JywkYmxvY2tJbmZvWydtb2R1bGUnXSwkYmxvY2tJbmZvWyduYW1lJ10pOwoJCX0KCQkKCQlyZXR1cm4gJG1vZHVsZS0+R2V0Q29udGVudEJsb2NrSW5wdXQoJGJsb2NrSW5mb1snaWQnXSwkdmFsdWUsJGJsb2NrSW5mb1sncGFyYW1zJ10sJGFkZGluZyk7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X2RhdGVfYmxvY2soJiRibG9ja0luZm8sJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCWlmKCEkdmFsdWUpCgkJewoJCQkkdmFsdWUgPSB0aW1lKCk7CgkJfQoJCQoJCSRkYXRlID0gc3RyZnRpbWUoJyV4JywgaW50dmFsKCR2YWx1ZSkpOwoJCSR0aW1lID0gJzA6MCc7CgkJaWYoJGJsb2NrSW5mb1snc2hvd19jbG9jayddKQoJCXsKCQkJJHRpbWUgPSBzdHJmdGltZSgnJUg6JU0nLCBpbnR2YWwoJHZhbHVlKSk7CgkJfQoJCQoJCSRfdG1wICAgICAgICA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzonLCR0aW1lKSk7CgkJJHRpbWVTZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkkZGF0ZVNlY29uZHMgPSAkdmFsdWUgLSAkdGltZVNlY29uZHM7CgkJCgkJJGRhdGVJbnB1dCA9ICc8aW1nIGlkPSInLiRibG9ja0luZm9bJ2lkJ10uJ19BZHZhbmNlZENvbnRlbnREYXRlUGlja2VyVHJpZ2dlciIgc3JjPSIuLi9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9pbWFnZXMvY2FsZW5kYXIucG5nIiBjbGFzcz0iY2FsZW5kYXJUcmlnZ2VyIiAvPiZuYnNwOwoJCQk8c3BhbiBpZD0iJy4kYmxvY2tJbmZvWydpZCddLidfQWR2YW5jZWRDb250ZW50RGF0ZVBpY2tlckRpc3BsYXkiPicuJGRhdGUuJzwvc3Bhbj4KCQkJPGlucHV0IGlkPSInLiRibG9ja0luZm9bJ2lkJ10uJ19BZHZhbmNlZENvbnRlbnREYXRlIiB0eXBlPSJoaWRkZW4iIG5hbWU9IicuJGJsb2NrSW5mb1snaWQnXS4nX0FkdmFuY2VkQ29udGVudERhdGUiIHZhbHVlPSInLiRkYXRlU2Vjb25kcy4nIiAvPic7CgkJCQoJCSRzdWZmaXggICAgPSAnJzsKCQkkdGltZUlucHV0ID0gJyc7CgkJaWYoJGJsb2NrSW5mb1snc2hvd19jbG9jayddKQoJCXsKCQkJJHRpbWVJbnB1dCA9ICcmbmJzcDsmbmJzcDstJm5ic3A7Jm5ic3A7PHNlbGVjdCBuYW1lPSInLiRibG9ja0luZm9bJ2lkJ10uJ19BZHZhbmNlZENvbnRlbnRUaW1lIj4nOwoJCQkkX2kgICAgICAgID0gMDsKCQkJZm9yKCRpPSRibG9ja0luZm9bJ3N0YXJ0X2hvdXInXTsgJGk8PSRibG9ja0luZm9bJ2VuZF9ob3VyJ107ICRpICs9ICRibG9ja0luZm9bJ3N0ZXBfaG91cnMnXSkKCQkJewoJCQkJaWYoJGk8MTIgJiYgISRibG9ja0luZm9bJ3Nob3cyNGgnXSkKCQkJCXsKCQkJCQkkc3VmZml4ID0gJyBhbSc7CgkJCQl9CgkJCQllbHNlIGlmKCEkYmxvY2tJbmZvWydzaG93MjRoJ10pCgkJCQl7CgkJCQkJJHN1ZmZpeCA9ICcgcG0nOwoJCQkJfQoJCQkJZm9yKCRqPSRibG9ja0luZm9bJ3N0YXJ0X21pbnV0ZSddOyAkajw9JGJsb2NrSW5mb1snZW5kX21pbnV0ZSddOyAkaiArPSAkYmxvY2tJbmZvWydzdGVwX21pbnV0ZXMnXSkKCQkJCXsKCQkJCQkkdmFsdWUgPSAoJGkqMzYwMCkgKyAoJGoqNjApOwoJCQkJCWlmKCgkYmxvY2tJbmZvWydlbmRfaG91ciddIDwgMjMgJiYgJHZhbHVlIDw9ICgkYmxvY2tJbmZvWydlbmRfaG91ciddICogMzYwMCkpIHx8ICRibG9ja0luZm9bJ2VuZF9ob3VyJ10gPT0gMjMpCgkJCQkJewoJCQkJCQkkdGltZUlucHV0IC49ICc8b3B0aW9uIHZhbHVlPSInLiAkdmFsdWUgLiciJy4gKCR2YWx1ZSA9PSAkdGltZVNlY29uZHM/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4nPicuICgkaTwxMD8nMCcuJGk6KCEkYmxvY2tJbmZvWydzaG93MjRoJ10gJiYgJGk+MTI/JGktMTI6JGkpKSAuJzonLiAoJGo8MTA/JzAnLiRqOiRqKSAuICRzdWZmaXggLiAnPC9vcHRpb24+JzsKCQkJCQl9CgkJCQl9CgkJCQkkaiA9ICRibG9ja0luZm9bJ3N0YXJ0X21pbnV0ZSddOwoJCQl9CgkJCSR0aW1lSW5wdXQgLj0gJzwvc2VsZWN0Pic7CgkJfQoJCQoJCXJldHVybiAkZGF0ZUlucHV0LiR0aW1lSW5wdXQ7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X2NoZWNrYm94X2Jsb2NrKCYkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJyIgdmFsdWU9IjAiIC8+CgkJCTxpbnB1dCBjbGFzcz0icGFnZWNoZWNrYm94IicgLiAoJGJsb2NrSW5mb1snc3R5bGUnXSAhPSAnJz8nIHN0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJyInIC4gKCR2YWx1ZSA9PSAxID8gJyBjaGVja2VkPSJjaGVja2VkIic6JycpIC4gJyAvPic7Cgl9CgkKCWZ1bmN0aW9uIF9kaXNwbGF5X2Ryb3Bkb3duX2Jsb2NrKCYkYmxvY2tJbmZvLCR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCSRpdGVtcyA9IGFycmF5KCk7CgkJaWYoJGJsb2NrSW5mb1snaXRlbXMnXSAhPSAnJykKCQl7CgkJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJGJsb2NrSW5mb1snaXRlbXMnXSkgYXMgJGtleSA9PiAkdmFsKQoJCQl7CgkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSB0cmltKCR2YWwpOwoJCQkJaWYoJGJsb2NrSW5mb1sndHJhbnNsYXRlX2xhYmVscyddKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJGl0ZW1zWyRrZXldWydsYWJlbCddKTsKCQkJCX0KCQkJCQoJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddICAgID0gJGl0ZW1zWyRrZXldWydsYWJlbCddOwoJCQkJJGl0ZW1zWyRrZXldWydzZWxlY3RlZCddID0gKCR2YWx1ZSA9PT0gJHZhbCk7CgkJCX0KCQl9CgkJaWYoJGJsb2NrSW5mb1sndmFsdWVzJ10gIT0gJycpCgkJewoJCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICRibG9ja0luZm9bJ3ZhbHVlcyddKSBhcyAka2V5ID0+ICR2YWwpCgkJCXsKCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSA9IHRyaW0oJHZhbCk7CgkJCQlpZigkYmxvY2tJbmZvWyd0cmFuc2xhdGVfdmFsdWVzJ10pCgkJCQl7CgkJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkaXRlbXNbJGtleV1bJ3ZhbHVlJ10pOwoJCQkJfQoJCQkJCgkJCQkkaXRlbXNbJGtleV1bJ3NlbGVjdGVkJ10gPSAoJHZhbHVlID09PSAkaXRlbXNbJGtleV1bJ3ZhbHVlJ10pOwoJCQkJCgkJCQlpZighaXNzZXQoJGl0ZW1zWyRrZXldWydsYWJlbCddKSkKCQkJCXsKCQkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSAkaXRlbXNbJGtleV1bJ3ZhbHVlJ107CgkJCQl9CgkJCX0KCQl9CgkJCgkJJGlucHV0ID0gJzxzZWxlY3QgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiAnIC4gKCRibG9ja0luZm9bJ3N0eWxlJ10gIT0gJyc/J3N0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gJyA+JzsKCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbSkKCQl7CgkJCSRpbnB1dCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRpdGVtWyd2YWx1ZSddIC4gJyInOwoJCQlpZigkaXRlbVsnc2VsZWN0ZWQnXSkKCQkJewoJCQkJJGlucHV0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkJCX0KCQkJJGlucHV0IC49ICc+JyAuICRpdGVtWydsYWJlbCddIC4gJzwvb3B0aW9uPic7CgkJfQoJCSRpbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQlyZXR1cm4gJGlucHV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV9zZWxlY3RfbXVsdGlwbGVfYmxvY2soJiRibG9ja0luZm8sICR2YWx1ZSA9ICcnLCRhZGRpbmcgPSBmYWxzZSkKCXsKCQkkQWR2YW5jZWRDb250ZW50ID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0FkdmFuY2VkQ29udGVudCcpOwoJCSRzZWxJdGVtcyA9IGFycmF5KCk7CgkJZm9yZWFjaChleHBsb2RlKCRibG9ja0luZm9bJ2RlbGltaXRlciddLCAkdmFsdWUpIGFzICRrZXkgPT4gJHZhbCkKCQl7CgkJCSRzZWxJdGVtc1ska2V5XSA9IHRyaW0oJHZhbCk7CgkJfQoJCSRpdGVtcyA9IGFycmF5KCk7CgkJaWYoJGJsb2NrSW5mb1snaXRlbXMnXSAhPSAnJykKCQl7CgkJCWZvcmVhY2goZXhwbG9kZSgkYmxvY2tJbmZvWydkZWxpbWl0ZXInXSwgJGJsb2NrSW5mb1snaXRlbXMnXSkgYXMgJGtleSA9PiAkdmFsKQoJCQl7CgkJCQkkaXRlbXNbJGtleV1bJ2xhYmVsJ10gPSB0cmltKCR2YWwpOwoJCQkJaWYoJGJsb2NrSW5mb1sndHJhbnNsYXRlX2xhYmVscyddKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9ICRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJGl0ZW1zWyRrZXldWydsYWJlbCddKTsKCQkJCX0KCQkJCQoJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddICAgID0gJGl0ZW1zWyRrZXldWydsYWJlbCddOwoJCQkJJGl0ZW1zWyRrZXldWydzZWxlY3RlZCddID0gaW5fYXJyYXkoJGl0ZW1zWyRrZXldWydsYWJlbCddLCRzZWxJdGVtcyk7CgkJCX0KCQl9CgkJaWYoJGJsb2NrSW5mb1sndmFsdWVzJ10gIT0gJycpCgkJewoJCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snZGVsaW1pdGVyJ10sICRibG9ja0luZm9bJ3ZhbHVlcyddKSBhcyAka2V5ID0+ICR2YWwpCgkJCXsKCQkJCSRpdGVtc1ska2V5XVsndmFsdWUnXSA9IHRyaW0oJHZhbCk7CgkJCQlpZigkYmxvY2tJbmZvWyd0cmFuc2xhdGVfdmFsdWVzJ10pCgkJCQl7CgkJCQkJJGl0ZW1zWyRrZXldWyd2YWx1ZSddID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygkaXRlbXNbJGtleV1bJ3ZhbHVlJ10pOwoJCQkJfQoJCQkJCgkJCQkkaXRlbXNbJGtleV1bJ3NlbGVjdGVkJ10gPSBpbl9hcnJheSgkaXRlbXNbJGtleV1bJ3ZhbHVlJ10sJHNlbEl0ZW1zKTsKCQkJCWlmKCFpc3NldCgkaXRlbXNbJGtleV1bJ2xhYmVsJ10pKQoJCQkJewoJCQkJCSRpdGVtc1ska2V5XVsnbGFiZWwnXSA9ICRpdGVtc1ska2V5XVsndmFsdWUnXTsKCQkJCX0KCQkJfQoJCX0KCQkKCQkkaW5wdXQgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnIiAvPic7CgkJCgkJaWYoISRibG9ja0luZm9bJ3NvcnRhYmxlJ10pCgkJewoJCQkkc2l6ZSA9IGNvdW50KCRpdGVtcyk7CgkJCWlmKGlzc2V0KCRibG9ja0luZm9bJ3NpemUnXSkpCgkJCXsKCQkJCSRzaXplID0gJGJsb2NrSW5mb1snc2l6ZSddOwoJCQl9CgkJCSRpbnB1dCAuPSAnCgkJCQk8c2VsZWN0IG5hbWU9IicgLiAkYmxvY2tJbmZvWydpZCddIC4gJ1tdIicgLiAoJGJsb2NrSW5mb1snc3R5bGUnXSAhPSAnJz8nIHN0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gJyAgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSInLiRzaXplLiciPic7CgkJCWZvcmVhY2goJGl0ZW1zIGFzICRpdGVtKQoJCQl7CgkJCQkkaW5wdXQgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkaXRlbVsndmFsdWUnXSAuICciJzsKCQkJCWlmKCRpdGVtWydzZWxlY3RlZCddKQoJCQkJewoJCQkJCSRpbnB1dCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwoJCQkJfQoJCQkJJGlucHV0IC49ICc+JyAuICRpdGVtWydsYWJlbCddIC4gJzwvb3B0aW9uPic7CgkJCX0KCQkJJGlucHV0IC49ICc8L3NlbGVjdD4nOwoJCX0KCQllbHNlCgkJewoJCQkjIHNvcnQgdGhlIGl0ZW1zCgkJCSRfaXRlbXMgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCRzZWxJdGVtcyBhcyAkc2VsS2V5ID0+ICRzZWxJdGVtKQoJCQl7CgkJCQlyZXNldCgkaXRlbXMpOwoJCQkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW1LZXkgPT4gJGl0ZW0pCgkJCQl7CgkJCQkJaWYoJGl0ZW1bJ3ZhbHVlJ10gPT09ICRzZWxJdGVtKQoJCQkJCXsKCQkJCQkJJF9pdGVtc1tdID0gJGl0ZW07CgkJCQkJCXVuc2V0KCRpdGVtc1skaXRlbUtleV0pOwoJCQkJCQl1bnNldCgkc2VsSXRlbXNbJHNlbEtleV0pOwoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJCgkJCSRpdGVtcyA9IGFycmF5X21lcmdlKCRfaXRlbXMsJGl0ZW1zKTsKCQkJJGlucHV0IC49ICc8ZGl2IGNsYXNzPSJzb3J0YWJsZV93cmFwcGVyIj4nOwoJCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbSkKCQkJewoJCQkJJGlucHV0IC49CgkJCQknPGRpdiBjbGFzcz0ic29ydGFibGUiPgoJCQkJCTxpbWcgY2xhc3M9InNvcnRhYmxlX2hhbmRsZXIiIHNyYz0iLi4vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvaW1hZ2VzL3NvcnQucG5nIiAvPgoJCQkJCTxpbnB1dCBjbGFzcz0icGFnZWNoZWNrYm94IicgLiAoJGJsb2NrSW5mb1snc3R5bGUnXSAhPSAnJz8nIHN0eWxlPSInIC4gJGJsb2NrSW5mb1snc3R5bGUnXSAuICcgIic6JycpIC4gJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicuJGl0ZW1bJ3ZhbHVlJ10uJyIgbmFtZT0iJyAuICRibG9ja0luZm9bJ2lkJ10gLiAnX0FkdmFuY2VkQ29udGVudFNvcnRhYmxlSXRlbV8nIC4gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkaXRlbVsnbGFiZWwnXSkgLiAnIicgLiAoJGl0ZW1bJ3NlbGVjdGVkJ10/ICcgY2hlY2tlZD0iY2hlY2tlZCInOicnKSAuICcgLz4KCQkJCQknLiRpdGVtWydsYWJlbCddLicKCQkJCTwvZGl2Pic7CgkJCX0KCQkJJGlucHV0IC49ICc8L2Rpdj4nOwoJCX0KCQlyZXR1cm4gJGlucHV0OwoJfQoJCglmdW5jdGlvbiBfZGlzcGxheV9tdWx0aV9pbnB1dF9ibG9jaygmJGJsb2NrSW5mbywgJHZhbHVlID0gJycsJGFkZGluZyA9IGZhbHNlKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJG11bHRpX2lucHV0X2lkcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2lucHV0cyddKSk7CgkJJGlucHV0X3ZhbHVlcyAgICA9IGFycmF5KCk7CgkJJG11bHRpX2lucHV0ICAgICA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBuYW1lPSInIC4gJGJsb2NrSW5mb1snaWQnXSAuICciIC8+JzsKCQlmb3JlYWNoKGV4cGxvZGUoJGJsb2NrSW5mb1snaW5wdXRfZGVsaW1pdGVyJ10sJHZhbHVlKSBhcyAkaW5wdXRfZGF0YSkKCQl7CgkJCSRpbnB1dF92YWx1ZXNbXSA9IGV4cGxvZGUoJGJsb2NrSW5mb1sndmFsdWVfZGVsaW1pdGVyJ10sJGlucHV0X2RhdGEpOwoJCX0KCQlmb3JlYWNoKCRtdWx0aV9pbnB1dF9pZHMgYXMgJGsxPT4kbXVsdGlfaW5wdXRfaWQpCgkJewoJCQlpZihpc3NldCgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF0pKQoJCQl7CgkJCQlpZighaXNzZXQoJHRoaXMtPl9tdWx0aUlucHV0c1skbXVsdGlfaW5wdXRfaWRdWyd0ZW1wbGF0ZSddKSkKCQkJCXsKCQkJCQkkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ3RlbXBsYXRlJ10gPSAkQWR2YW5jZWRDb250ZW50LT5HZXRUZW1wbGF0ZSgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ3RwbF9uYW1lJ10pOwoJCQkJfQoJCQkJJGlucHV0cyA9IGFycmF5KCk7CgkJCQkjIGZvcmVhY2ggdGFnCgkJCQlmb3JlYWNoICgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ2VsZW1lbnRzJ10gYXMgJGsyPT4kaW5wdXRJbmZvKQoJCQkJewoJCQkJCWlmKCRpbnB1dEluZm9bJ3NtYXJ0eSddKQoJCQkJCXsKCQkJCQkJZm9yZWFjaCgkaW5wdXRJbmZvIGFzICRwcm9wTmFtZT0+JHByb3BWYWx1ZSkKCQkJCQkJewoJCQkJCQkJJGlucHV0SW5mb1skcHJvcE5hbWVdID0gJHRoaXMtPkRvU21hcnR5KCRwcm9wVmFsdWUpOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRpbnB1dEluZm9bJ2lkJ10gPSAnbXVsdGlJbnB1dC0nIC4gJGJsb2NrSW5mb1snaWQnXSAuICctJyAuICRtdWx0aV9pbnB1dF9pZCAuICctJyAuICRrMSAuICctJyAuICRpbnB1dEluZm9bJ2lkJ107CgkJCQkJJGlucHV0c1skaW5wdXRJbmZvWydpZCddXSA9ICRpbnB1dEluZm87CgkJCQkJaWYobWV0aG9kX2V4aXN0cygkdGhpcywnX2Rpc3BsYXlfJy4kaW5wdXRJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpKQoJCQkJCXsKCQkJCQkJJGlucHV0c1skaW5wdXRJbmZvWydpZCddXVsnaW5wdXQnXSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLCAnX2Rpc3BsYXlfJy4kaW5wdXRJbmZvWydibG9ja190eXBlJ10uJ19ibG9jaycpLCAmJGlucHV0SW5mbywgKGlzc2V0KCRpbnB1dF92YWx1ZXNbJGsxXVskazJdKSA/JGlucHV0X3ZhbHVlc1skazFdWyRrMl06JycpLCAkYWRkaW5nKTsKCQkJCQl9CgkJCQl9CgkJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2lucHV0cycsICRpbnB1dHMpOwoJCQkJIyRtdWx0aV9pbnB1dCAuPSAkQWR2YW5jZWRDb250ZW50LT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YUJhc2UoJHRoaXMtPl9tdWx0aUlucHV0c1skaW5wdXRfaWRdWyd0cGxfbmFtZSddKTsKCQkJCSRtdWx0aV9pbnB1dCAuPSAkQWR2YW5jZWRDb250ZW50LT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGhpcy0+X211bHRpSW5wdXRzWyRtdWx0aV9pbnB1dF9pZF1bJ3RlbXBsYXRlJ10pOwoJCQl9CgkJfQoJCXJldHVybiAkbXVsdGlfaW5wdXQ7Cgl9CgkKCWZ1bmN0aW9uIFZhbGlkYXRlRGF0YSgpCgl7CgkJJGVycm9ycyA9IHBhcmVudDo6VmFsaWRhdGVEYXRhKCk7CgkJaWYoICRlcnJvcnMgPT09IEZBTFNFICkKCQl7CgkJCSRlcnJvcnMgPSBhcnJheSgpOwoJCX0KCQkKCQlpZiAoJHRoaXMtPm1UZW1wbGF0ZUlkIDw9IDAgKQoJCXsKCQkJJGVycm9yc1tdID0gbGFuZygnbm9maWVsZGdpdmVuJywgYXJyYXkobGFuZygndGVtcGxhdGUnKSkpOwoJCQkkcmVzdWx0ICAgPSBmYWxzZTsKCQl9CgkJCgkJZm9yZWFjaCgkdGhpcy0+X2NvbnRlbnRCbG9ja3MgYXMgJGJsb2NrSW5mbykKCQl7CgkJCWlmKCRibG9ja0luZm9bJ3JlcXVpcmVkJ10gJiYgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJGJsb2NrSW5mb1snaWQnXSkgPT0gJycpCgkJCXsKCQkJCSRlcnJvcnNbXSA9IGxhbmcoJ25vZmllbGRnaXZlbicsIGFycmF5KCRibG9ja0luZm9bJ25hbWUnXSkpOwoJCQkJJHJlc3VsdCAgID0gZmFsc2U7CgkJCX0KCQl9CgkJCgkJaWYgKGNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJykgJiYgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3VzZV9leHBpcmVfZGF0ZScpID09ICcxJyAmJiAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZW5kX2RhdGUnKSA8PSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc3RhcnRfZGF0ZScpKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJJGVycm9yc1tdID0gJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZXJyb3JfZXhwaXJlZGF0ZScpOwoJCQkkcmVzdWx0ICAgPSBmYWxzZTsKCQl9CgkJcmV0dXJuIChjb3VudCgkZXJyb3JzKSA+IDA/JGVycm9yczpGQUxTRSk7Cgl9CgkKCWZ1bmN0aW9uIENvbnRlbnRQcmVSZW5kZXIoJHRwbFNvdXJjZSkKCXsKCQkkdGhpcy0+cGFyc2VfY29udGVudF9ibG9ja3MoKTsKCQlyZXR1cm4gJHRwbFNvdXJjZTsKCX0KCQoJZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQoJewoJCWdsb2JhbCAkZ0NtczsKCQlzd2l0Y2goJG9uZSkKCQl7CgkJCWNhc2UgJ3RlbXBsYXRlJzoKCQkJCSR0ZW1wbGF0ZW9wcyA9JiAkZ0Ntcy0+R2V0VGVtcGxhdGVPcGVyYXRpb25zKCk7CgkJCQlyZXR1cm4gYXJyYXkobGFuZygndGVtcGxhdGUnKSAuICc6JywgJHRlbXBsYXRlb3BzLT5UZW1wbGF0ZURyb3Bkb3duKCd0ZW1wbGF0ZV9pZCcsICR0aGlzLT5tVGVtcGxhdGVJZCwgJ29uY2hhbmdlPSJkb2N1bWVudC5jb250ZW50Zm9ybS5zdWJtaXQoKSInKSk7CgkJCQoJCQljYXNlICdwYWdlbWV0YWRhdGEnOgoJCQkJcmV0dXJuIGFycmF5KGxhbmcoJ3BhZ2VfbWV0YWRhdGEnKSAuICc6JywgY3JlYXRlX3RleHRhcmVhKGZhbHNlLCAkdGhpcy0+TWV0YWRhdGEoKSwgJ21ldGFkYXRhJywgJ3BhZ2VzbWFsbHRleHRhcmVhJywgJ21ldGFkYXRhJywgJycsICcnLCAnODAnLCAnNicpKTsKCQkJCgkJCWNhc2UgJ3BhZ2VkYXRhJzoKCQkJCXJldHVybiBhcnJheShsYW5nKCdwYWdlZGF0YV9jb2RlYmxvY2snKSAuICc6JywgY3JlYXRlX3RleHRhcmVhKGZhbHNlLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgncGFnZWRhdGEnKSwgJ3BhZ2VkYXRhJywgJ3BhZ2VzbWFsbHRleHRhcmVhJywgJ3BhZ2VkYXRhJywgJycsICcnLCAnODAnLCAnNicpKTsKCQkJCgkJCWNhc2UgJ3NlYXJjaGFibGUnOgoJCQkJJHNlYXJjaGFibGUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc2VhcmNoYWJsZScpOwoJCQkJaWYoICRzZWFyY2hhYmxlID09ICcnICkKCQkJCXsKCQkJCQkkc2VhcmNoYWJsZSA9IDE7CgkJCQl9CgkJCQlyZXR1cm4gYXJyYXkobGFuZygnc2VhcmNoYWJsZScpIC4gJzonLAoJCQkJCSc8ZGl2IGNsYXNzPSJoaWRkZW4iID48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWFyY2hhYmxlIiB2YWx1ZT0iMCIgLz48L2Rpdj4KCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaGFibGUiIHZhbHVlPSIxIiAnIC4gKCRzZWFyY2hhYmxlID09IDE/J2NoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIC8+Jyk7CgkJCQoJCQljYXNlICdkaXNhYmxlX3d5c2l3eWcnOgoJCQkJJGRpc2FibGVXeXNpd3lnID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2Rpc2FibGVfd3lzaXd5ZycpOwoJCQkJaWYoICRkaXNhYmxlV3lzaXd5ZyA9PSAnJyApCgkJCQl7CgkJCQkJJGRpc2FibGVXeXNpd3lnID0gMDsKCQkJCX0KCQkJCXJldHVybiBhcnJheShsYW5nKCdkaXNhYmxlX3d5c2l3eWcnKSAuICc6JywKCQkJCQknPGRpdiBjbGFzcz0iaGlkZGVuIiA+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlzYWJsZV93eXNpd3lnIiB2YWx1ZT0iMCIgLz48L2Rpdj4KCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRpc2FibGVfd3lzaXd5ZyIgdmFsdWU9IjEiICAnIC4gKCRkaXNhYmxlV3lzaXd5ZyA9PSAxPydjaGVja2VkPSJjaGVja2VkIic6JycpIC4gJyBvbmNsaWNrPSJ0aGlzLmZvcm0uc3VibWl0KCkiIC8+Jyk7CgkJCQoJCQlkZWZhdWx0OgoJCQkJaWYoJG9uZSAhPSAnZmV1X2FjY2VzcycKCQkJCSYmICRvbmUgIT0gJ3JlZGlyZWN0X3BhZ2UnCgkJCQkmJiAkb25lICE9ICdyZWRpcmVjdF9wYXJhbXMnCgkJCQkmJiAkb25lICE9ICdldmFsdWF0ZV9zbWFydHknCgkJCQkmJiAkb25lICE9ICdmZXVfYWN0aW9uJwoJCQkJJiYgJG9uZSAhPSAnc3RhcnRfZGF0ZScKCQkJCSYmICRvbmUgIT0gJ2VuZF9kYXRlJwoJCQkJJiYgJG9uZSAhPSAndXNlX2V4cGlyZV9kYXRlJykKCQkJCXsKCQkJCQlyZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsICRhZGRpbmcpOwoJCQkJfQoJCQkJYnJlYWs7CgkJfQoJfQoKLyoqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEN1c3RvbSBmdW5jdGlvbnMKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCgkvKioKCSAqIERpc3BsYXlBZHZhbmNlZE9wdGlvbnMoJGFkZGluZykKCSAqCgkgKiBAcGFyYW0gYm9vbGVhbiAkYWRkaW5nIC0gdHJ1ZSBpZiBwYWdlIGlzIGFkZGVkLCBmYWxzZSBpZiBlZGl0ZWQKCSAqCgkgKiBAcmV0dXJuIGFycmF5IC0gYXJyYXkoYXJyYXkocHJvbXB0LGltcHV0KSkKCSAqLwoJZnVuY3Rpb24gRGlzcGxheUFkdmFuY2VkT3B0aW9ucygkYWRkaW5nKQoJewoJCSRBZHZhbmNlZENvbnRlbnQgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnQWR2YW5jZWRDb250ZW50Jyk7CgkJJHJldCA9IGFycmF5KCk7CgkJZm9yZWFjaCggJHRoaXMtPl9hdHRyaWJ1dGVzIGFzICRvbmVBdHRyaWIgKQoJCXsKCQkJc3dpdGNoKCRvbmVBdHRyaWJbMF0pCgkJCXsKCQkJCWNhc2UgJ2ZldV9hY2Nlc3MnOgoJCQkJCWlmKCRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSkKCQkJCQl7CgkJCQkJCWlmKCRhZGRpbmcpCgkJCQkJCXsKCQkJCQkJCWlmKHN0cnBvcygkQWR2YW5jZWRDb250ZW50LT5HZXRQcmVmZXJlbmNlKCdmZXVfYWNjZXNzJyksJywnKSA9PT0gRkFMU0UpCgkJCQkJCQl7CgkJCQkJCQkJJHNlbGVjdGVkR3JvdXBzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnOycsJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjY2VzcycpKSk7CgkJCQkJCQl9CgkJCQkJCQllbHNlCgkJCQkJCQl7CgkJCQkJCQkJJHNlbGVjdGVkR3JvdXBzID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgnLCcsJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjY2VzcycpKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQlpZihzdHJwb3MoJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJCQkJCXsKCQkJCQkJCQkkc2VsZWN0ZWRHcm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywgJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSkpOwoJCQkJCQkJfQoJCQkJCQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCSRzZWxlY3RlZEdyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJCgkJCQkJCSRmZXVBY2Nlc3MgPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdpbmhlcml0X2Zyb21fcGFyZW50Jyk9Pi0xKTsKCQkJCQkJJGZldUFjY2VzcyA9IGFycmF5X21lcmdlKCRmZXVBY2Nlc3MsJGZldXNlcnMtPkdldEdyb3VwTGlzdCgpKTsKCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnZnJvbnRlbmRhY2Nlc3MnKS4nIDogJywKCQkJCQkJCSc8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBuYW1lPSJmZXVfYWNjZXNzIiAvPicuCgkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJycsJ2ZldV9hY2Nlc3NbXScsJGZldUFjY2Vzcywkc2VsZWN0ZWRHcm91cHMsY291bnQoJGZldUFjY2VzcyksJycsMSkpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAncmVkaXJlY3RfcGFnZSc6CgkJCQkJaWYoJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50TW9kdWxlOjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpKQoJCQkJCXsKCQkJCQkJaWYoJGFkZGluZykKCQkJCQkJewoJCQkJCQkJJHNlbGVjdGVkUGFnZSA9ICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3JlZGlyZWN0X3BhZ2UnLCcnKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRzZWxlY3RlZFBhZ2UgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgicmVkaXJlY3RfcGFnZSIpOwoJCQkJCQl9CgkJCQkJCQoJCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdyZWRpcmVjdHBhZ2UnKS4nIDogJywKCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPkNyZWF0ZVJlZGlyZWN0RHJvcGRvd24oJycsICdyZWRpcmVjdF9wYWdlJywkc2VsZWN0ZWRQYWdlLCAkdGhpcy0+bUlkKSk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICdyZWRpcmVjdF9wYXJhbXMnOgoJCQkJCWlmKCRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudE1vZHVsZTo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSkKCQkJCQl7CgkJCQkJCWlmKCRhZGRpbmcpCgkJCQkJCXsKCQkJCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICRBZHZhbmNlZENvbnRlbnQtPkdldFByZWZlcmVuY2UoJ3JlZGlyZWN0X3BhcmFtcycsJycpOwoJCQkJCQkJJGV2YWx1YXRlU21hcnR5ID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZXZhbHVhdGVfc21hcnR5JywnJyk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQkkcmVkaXJlY3RQYXJhbXMgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgicmVkaXJlY3RfcGFyYW1zIik7CgkJCQkJCQkkZXZhbHVhdGVTbWFydHkgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgiZXZhbHVhdGVfc21hcnR5Iik7CgkJCQkJCX0KCQkJCQkJCQoJCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdyZWRpcmVjdHBhcmFtcycpLicgOiAnLAoJCQkJCQkJJzxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIzMiIgbWF4bGVuZ3RoPSIxMjgiIG5hbWU9InJlZGlyZWN0X3BhcmFtcyIgdmFsdWU9IicuJHJlZGlyZWN0UGFyYW1zLiciIC8+Jm5ic3A7PGVtPihwYXJhbTE9dmFsdWUxIHBhcmFtMj12YWx1ZTIgLi4uKTwvZW0+PGJyIC8+CgkJCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJldmFsdWF0ZV9zbWFydHkiIHZhbHVlPSIwIiAvPicuCgkJCQkJCQkkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdldmFsdWF0ZXNtYXJ0eScpIC4gJzombmJzcDsnLgoJCQkJCQkJJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZXZhbHVhdGVfc21hcnR5IiB2YWx1ZT0iMSIgICcgLiAoJGV2YWx1YXRlU21hcnR5ID09IDE/J2NoZWNrZWQ9ImNoZWNrZWQiJzonJykgLiAnIC8+Jyk7CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICdmZXVfYWN0aW9uJzoKCQkJCQlpZigkZmV1c2VycyA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJykpCgkJCQkJewoJCQkJCQlpZigkYWRkaW5nKQoJCQkJCQl7CgkJCQkJCQkkZmV1QWN0aW9uID0gJEFkdmFuY2VkQ29udGVudC0+R2V0UHJlZmVyZW5jZSgnZmV1X2FjdGlvbicsJycpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGZldUFjdGlvbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdmZXVfYWN0aW9uJyk7CgkJCQkJCX0KCQkJCQkJJHJldFtdID0gYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnc2hvd2xvZ2luZm9ybScpLicgOiAnLAoJCQkJCQkJJEFkdmFuY2VkQ29udGVudC0+Q3JlYXRlSW5wdXREcm9wZG93bignJywnZmV1X2FjdGlvbicsCgkJCQkJCQkJYXJyYXkoJEFkdmFuY2VkQ29udGVudC0+bGFuZygnbm8nKT0+JycsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ2luaGVyaXRfZnJvbV9wYXJlbnQnKT0+LTEsCgkJCQkJCQkJCSRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3llcycpPT4xKQoJCQkJCQkJCSwwLCRmZXVBY3Rpb24pKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgJ3N0YXJ0X2RhdGUnOgoJCQkJCSRzdGFydERhdGUgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgnc3RhcnRfZGF0ZScpOwoJCQkJCWlmKCEkc3RhcnREYXRlKQoJCQkJCXsKCQkJCQkJJHN0YXJ0RGF0ZSA9IHRpbWUoKTsKCQkJCQl9CgkJCQkJCgkJCQkJJGRhdGUgICAgICAgID0gc3RyZnRpbWUoJyV4JywgaW50dmFsKCRzdGFydERhdGUpKTsKCQkJCQkkdGltZSAgICAgICAgPSBzdHJmdGltZSgnJUg6JU0nLCBpbnR2YWwoJHN0YXJ0RGF0ZSkpOwoJCQkJCQoJCQkJCSRfdG1wICAgICAgICA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzonLCR0aW1lKSk7CgkJCQkJJHRpbWVTZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkJCQkkZGF0ZVNlY29uZHMgPSAkc3RhcnREYXRlIC0gJHRpbWVTZWNvbmRzOwoJCQkJCQoJCQkJCSRzdGFydERhdGVJbnB1dCA9ICcKCQkJCQkJPGltZyBpZD0iQWR2YW5jZWRDb250ZW50U3RhcnREYXRlUGlja2VyVHJpZ2dlciIgc3JjPSIuLi9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9pbWFnZXMvY2FsZW5kYXIucG5nIiBjbGFzcz0iY2FsZW5kYXJUcmlnZ2VyIiAvPiZuYnNwOwoJCQkJCQk8c3BhbiBpZD0iQWR2YW5jZWRDb250ZW50U3RhcnREYXRlUGlja2VyRGlzcGxheSI+Jy4kZGF0ZS4nPC9zcGFuPiZuYnNwOyZuYnNwOy0mbmJzcDsmbmJzcDsKCQkJCQkJPGlucHV0IGlkPSJBZHZhbmNlZENvbnRlbnRTdGFydERhdGUiIHR5cGU9ImhpZGRlbiIgbmFtZT0iQWR2YW5jZWRDb250ZW50U3RhcnREYXRlIiB2YWx1ZT0iJy4kZGF0ZVNlY29uZHMuJyIgLz4KCQkJCQkJPHNlbGVjdCBuYW1lPSJBZHZhbmNlZENvbnRlbnRTdGFydFRpbWUiPic7CgkJCQkJCQoJCQkJCWZvcigkaT0wOyAkaTw9MjM7ICRpKyspCgkJCQkJewoJCQkJCQlmb3IoJGo9MDsgJGo8PTU5OyAkaisrKQoJCQkJCQl7CgkJCQkJCQkkdmFsdWUgPSAoJGkqMzYwMCkgKyAoJGoqNjApOwoJCQkJCQkJJHN0YXJ0RGF0ZUlucHV0IC49ICc8b3B0aW9uIHZhbHVlPSInLiAkdmFsdWUgLiciJy4gKCR2YWx1ZSA9PSAkdGltZVNlY29uZHM/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic6JycpIC4nPicuICgkaTwxMD8nMCcuJGk6JGkpIC4nOicuICgkajwxMD8nMCcuJGo6JGopIC4nPC9vcHRpb24+JzsKCQkJCQkJfQoJCQkJCQkkaiA9IDA7CgkJCQkJfQoJCQkJCSRzdGFydERhdGVJbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdzdGFydGRhdGUnKS4nIDogJywgJHN0YXJ0RGF0ZUlucHV0KTsKCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSAnZW5kX2RhdGUnOgoJCQkJCSRlbmREYXRlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2VuZF9kYXRlJyk7CgkJCQkJaWYoISRlbmREYXRlKQoJCQkJCXsKCQkJCQkJJGVuZERhdGUgPSB0aW1lKCk7CgkJCQkJfQoJCQkJCQoJCQkJCSRkYXRlICAgICAgICA9IHN0cmZ0aW1lKCcleCcsIGludHZhbCgkZW5kRGF0ZSkpOwoJCQkJCSR0aW1lICAgICAgICA9IHN0cmZ0aW1lKCclSDolTScsIGludHZhbCgkZW5kRGF0ZSkpOwoJCQkJCQoJCQkJCSRfdG1wICAgICAgICA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJzonLCR0aW1lKSk7CgkJCQkJJHRpbWVTZWNvbmRzID0gKCgkX3RtcFswXSAqIDM2MDApICsgKCRfdG1wWzFdICogNjApKTsKCQkJCQkkZGF0ZVNlY29uZHMgPSAkZW5kRGF0ZSAtICR0aW1lU2Vjb25kczsKCQkJCQkKCQkJCQkkZW5kRGF0ZUlucHV0ID0gJwoJCQkJCQk8aW1nIGlkPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyVHJpZ2dlciIgc3JjPSIuLi9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9pbWFnZXMvY2FsZW5kYXIucG5nIiBjbGFzcz0iY2FsZW5kYXJUcmlnZ2VyIiAvPiZuYnNwOwoJCQkJCQk8c3BhbiBpZD0iQWR2YW5jZWRDb250ZW50RW5kRGF0ZVBpY2tlckRpc3BsYXkiPicuJGRhdGUuJzwvc3Bhbj4mbmJzcDsmbmJzcDstJm5ic3A7Jm5ic3A7CgkJCQkJCTxpbnB1dCBpZD0iQWR2YW5jZWRDb250ZW50RW5kRGF0ZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJBZHZhbmNlZENvbnRlbnRFbmREYXRlIiB2YWx1ZT0iJy4kZGF0ZVNlY29uZHMuJyIgLz4KCQkJCQkJPHNlbGVjdCBuYW1lPSJBZHZhbmNlZENvbnRlbnRFbmRUaW1lIj4nOwoJCQkJCQkKCQkJCQlmb3IoJGk9MDsgJGk8PTIzOyAkaSsrKQoJCQkJCXsKCQkJCQkJZm9yKCRqPTA7ICRqPD01OTsgJGorKykKCQkJCQkJewoJCQkJCQkJJHZhbHVlID0gKCRpKjM2MDApICsgKCRqKjYwKTsKCQkJCQkJCSRlbmREYXRlSW5wdXQgLj0gJzxvcHRpb24gdmFsdWU9IicuICR2YWx1ZSAuJyInLiAoJHZhbHVlID09ICR0aW1lU2Vjb25kcz8gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzonJykgLic+Jy4gKCRpPDEwPycwJy4kaTokaSkgLic6Jy4gKCRqPDEwPycwJy4kajokaikgLic8L29wdGlvbj4nOwoJCQkJCQl9CgkJCQkJCSRqID0gMDsKCQkJCQl9CgkJCQkJJGVuZERhdGVJbnB1dCAuPSAnPC9zZWxlY3Q+JzsKCQkJCQkkcmV0W10gPSBhcnJheSgkQWR2YW5jZWRDb250ZW50LT5sYW5nKCdlbmRkYXRlJykuJyA6ICcsICRlbmREYXRlSW5wdXQpOwoJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICd1c2VfZXhwaXJlX2RhdGUnOgoJCQkJCSR1c2VFeHAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZSgndXNlX2V4cGlyZV9kYXRlJyk7CgkJCQkJaWYoICR1c2VFeHAgPT0gJycgKQoJCQkJCXsKCQkJCQkJJHVzZUV4cCA9IDA7CgkJCQkJfQoJCQkJCSRyZXRbXSA9IGFycmF5KCRBZHZhbmNlZENvbnRlbnQtPmxhbmcoJ3VzZWV4cGlyZWRhdGUnKSAuICc6JywKCQkJCQkJJzxkaXYgY2xhc3M9ImhpZGRlbiIgPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InVzZV9leHBpcmVfZGF0ZSIgdmFsdWU9IjAiIC8+PC9kaXY+CgkJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXNlX2V4cGlyZV9kYXRlIiB2YWx1ZT0iMSIgICcgLiAoJHVzZUV4cCA9PSAxPydjaGVja2VkPSJjaGVja2VkIic6JycpIC4gJyAvPicpOwoJCQkJCWJyZWFrOwoJCQkJCgkJCQlkZWZhdWx0OmJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiAkcmV0OwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gRG9TbWFydHkoJGRhdGEpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogdGhpcyBpcyBqdXN0IGEgd3JhcHBlciB0byBwcm9jZXNzIGEgdGVtcGxhdGUgZnJvbSBkYXRhCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZGF0YSAtIFRoZSB0ZW1wbGF0ZSBjb250ZW50IHRvIHByb2Nlc3MKCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAtIFRoZSBwcm9jZXNzZWQgdGVtcGxhdGUgZGF0YQoJICovCglmdW5jdGlvbiBEb1NtYXJ0eSgkZGF0YSkKCXsKCQlpZihpc19hcnJheSgkZGF0YSkpCgkJewoJCQlmb3JlYWNoKCRkYXRhIGFzICRrID0+ICR2KQoJCQl7CgkJCQkkZGF0YVska10gPSAkdGhpcy0+RG9TbWFydHkoJHYpOwoJCQl9CgkJfQoJCWdsb2JhbCAkZ0NtczsKCQlpZighaXNfYXJyYXkoJGRhdGEpICYmICFpc19vYmplY3QoJGRhdGEpICYmIHByZWdfbWF0Y2hfYWxsKCcvOjo6KFteOl0rKTo6Oi8nLCAkZGF0YSwgJG1hdGNoZXMpKQoJCXsKCQkJJEFkdmFuY2VkQ29udGVudCA9JiBBZHZhbmNlZENvbnRlbnRNb2R1bGU6OkdldE1vZHVsZUluc3RhbmNlKCdBZHZhbmNlZENvbnRlbnQnKTsKCQkJaWYoIWlzc2V0KCRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaWQpKQoJCQl7CgkJCQkjIGZha2UgZnJvbnRlbmQgcmVuZGVyaW5nCgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgc3RkQ2xhc3MoKTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaWQgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tSWQ7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X3RpdGxlICAgICAgICAgICAgICAgPSAkdGhpcy0+bU5hbWU7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X2FsaWFzICAgICAgICAgICAgICAgPSAkdGhpcy0+bUFsaWFzOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9tZW51dGV4dCAgICAgICAgICAgID0gJHRoaXMtPm1NZW51VGV4dDsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfdGl0bGVhdHRyaWJ1dGUgICAgICA9ICR0aGlzLT5tVGl0bGVBdHRyaWJ1dGU7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X2hpZXJhcmNoeSAgICAgICAgICAgPSAkdGhpcy0+bUhpZXJhcmNoeTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaWRfaGllcmFyY2h5ICAgICAgICA9ICR0aGlzLT5tSWRIaWVyYXJjaHk7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X3R5cGUgICAgICAgICAgICAgICAgPSAkdGhpcy0+bVR5cGU7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X3Byb3BzICAgICAgICAgICAgICAgPSAkdGhpcy0+bVByb3BlcnRpZXMtPm1Qcm9wZXJ0eU5hbWVzOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9tZXRhZGF0YSAgICAgICAgICAgID0gJHRoaXMtPm1NZXRhZGF0YTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfbW9kaWZpZWRfZGF0ZSAgICAgICA9ICR0aGlzLT5tTW9kaWZpZWREYXRlOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y29udGVudF9jcmVhdGVkX2RhdGUgICAgICAgID0gJHRoaXMtPm1DcmVhdGlvbkRhdGU7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT5jb250ZW50X2xhc3RfbW9kaWZpZWRfZGF0ZSAgPSAkdGhpcy0+bU1vZGlmaWVkRGF0ZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfbGFzdF9tb2RpZmllZF9ieV9pZCA9ICR0aGlzLT5tT3duZXI7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT50ZW1wbGF0ZV9pZCAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bVRlbXBsYXRlSWQ7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlaW5mbyddLT50ZW1wbGF0ZV9lbmNvZGluZyAgICAgICAgICAgPSBnZXRfZW5jb2RpbmcoJycpOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+dGVtcGxhdGVfbW9kaWZpZWRfZGF0ZSAgICAgID0gdGltZSgpOyAjID8/PwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZWluZm8nXS0+Y2FjaGFibGUgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1DYWNoYWJsZTsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2VpbmZvJ10tPmNvbnRlbnRfaGllcmFyY2h5X3BhdGggICAgICA9ICR0aGlzLT5tSGllcmFyY2h5UGF0aDsKCQkJCQoJCQkJJGdDbXMtPnZhcmlhYmxlc1snY29udGVudF9pZCddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1JZDsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ3BhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tQWxpYXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlX2lkJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUFsaWFzOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncGFnZV9hbGlhcyddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1BbGlhczsKCQkJCSRnQ21zLT52YXJpYWJsZXNbJ2NvbnRlbnRfYWxpYXMnXSAgICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5tQWxpYXM7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydwYWdlX25hbWUnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+bUFsaWFzOwoJCQkJJGdDbXMtPnZhcmlhYmxlc1sncG9zaXRpb24nXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJHRoaXMtPm1IaWVyYXJjaHk7CgkJCQkkZ0Ntcy0+dmFyaWFibGVzWydmcmllbmRseV9wb3NpdGlvbiddICAgICAgICAgICAgICAgICAgICAgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+Q3JlYXRlRnJpZW5kbHlIaWVyYXJjaHlQb3NpdGlvbigkdGhpcy0+bUhpZXJhcmNoeSk7CgkJCX0KCQkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdjb250ZW50X29iaicsICR0aGlzKTsKCQkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdjb250ZW50X2lkJywgJHRoaXMtPm1JZCk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignY29udGVudF9hbGlhcycsICR0aGlzLT5tQWxpYXMpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2UnLCAkdGhpcy0+bUFsaWFzKTsKCQkJJEFkdmFuY2VkQ29udGVudC0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdwYWdlX2lkJywgJHRoaXMtPm1BbGlhcyk7CgkJCSRBZHZhbmNlZENvbnRlbnQtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncGFnZV9hbGlhcycsICR0aGlzLT5tQWxpYXMpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3BhZ2VfbmFtZScsICR0aGlzLT5tQWxpYXMpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ3Bvc2l0aW9uJywgJHRoaXMtPm1IaWVyYXJjaHkpOwoJCQkkQWR2YW5jZWRDb250ZW50LT5zbWFydHktPmFzc2lnbignZnJpZW5kbHlfcG9zaXRpb24nLCAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+Q3JlYXRlRnJpZW5kbHlIaWVyYXJjaHlQb3NpdGlvbigkdGhpcy0+bUhpZXJhcmNoeSkpOwoJCQkkZGF0YSA9ICRBZHZhbmNlZENvbnRlbnQtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKHByZWdfcmVwbGFjZSgnLzo6OihbXjpdKyk6OjovJywgJ3skMX0nLCAkZGF0YSkpOwoJCX0KCQlyZXR1cm4gJGRhdGE7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBJbmhlcml0UGFyZW50UHJvcCgkcGFyZW50SWQsICRwcm9wTmFtZSwgJGN1cnJlbnRQcm9wKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGluaGVyaXRzIGEgcHJvcGVydHkgb2YgYSBwYXJlbnQgcGFnZTsKCSAqIGlmIHBhcmVudCBwYWdlIGhhcyBhbHNvIHNlbGVjdGVkIGluaGVyaXRhbmNlIGZvciB0aGF0IHByb3BlcnR5IC0+IGRvIHJlY3Vyc2lvbgoJICoKCSAqIEBwYXJhbSBpbnQgJHBhcmVudElkIC0gVGhlIGlkIG9mIHRoZSBwYXJlbnQgcGFnZQoJICogQHBhcmFtIHN0cmluZyAkcHJvcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gaW5oZXJpdAoJICogQHBhcmFtIGFycmF5ICRjdXJyZW50UHJvcCAob3B0aW9uYWwpIC0gSWYgcHJvcCBpcyBhbiBhcnJheSB0aGlzIHdpbGwgYmUgdGhlIGl0ZW1zIG9mIHRoZSBjdXJyZW50IHBhZ2U7IFNvIHJldHVybiBhcnJheSB3aWxsIGNvbnRhaW4gYWxsIGl0ZW1zIG9mIHRoZSBjdXJyZW50IHBhZ2UgYW5kIHBhcmVudCBwYWdlczsgb3RoZXJ3aXNlIG9ubHkgdGhlIHBhcmVudHMgaXRlbXMgd2lsbCBiZSByZXR1cm5lZAoJICoKCSAqIEByZXR1cm4gYXJyYXl8c3RyaW5nIC0gVGhlIHByb3Agb2YgdGhlIGxhc3QgZm91bmQgcGFyZW50IHRoYXQgaGFzIG5vIGluaGVyaXRhbmNlIG9yIGFuIGFycmF5IG9mIGl0ZW1zIG9mIGFsbCBwYXJlbnRzIHRoYXQgaGF2ZSBpbmhlcml0YW5jZQoJICovCglmdW5jdGlvbiBJbmhlcml0UGFyZW50UHJvcCgkcGFyZW50SWQsICRwcm9wTmFtZSwgJGN1cnJlbnRQcm9wID0gYXJyYXkoKSkKCXsKCQlpZigkcHJvcE5hbWUgPT0gJ2ZldV9hY2Nlc3MnKQoJCXsKCQkJJHByb3AgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCRjdXJyZW50UHJvcCBhcyAkaz0+JHYpCgkJCXsKCQkJCWlmKCR2ICE9ICctMScpCgkJCQl7CgkJCQkJJHByb3BbXSA9ICR2OwoJCQkJfQoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSRwcm9wID0gJyc7CgkJfQoJCQoJCXdoaWxlKCAkcGFyZW50SWQgPiAwICkKCQl7CgkJCSRjb250ZW50ID0gJHRoaXMtPkdldENvbnRlbnRQcm9wKCRwYXJlbnRJZCwgJHByb3BOYW1lLCAnY29udGVudDInKTsKCQkJaWYoISRjb250ZW50KQoJCQl7CgkJCQlyZXR1cm4gJHByb3A7CgkJCX0KCQkJJHBhcmVudElkICA9ICRjb250ZW50WydwYXJlbnRfaWQnXTsKCQkJJHByb3BWYWx1ZSA9ICRjb250ZW50Wydwcm9wX3ZhbHVlJ107CgkJCWlmKCRwcm9wTmFtZSA9PSAnZmV1X2FjY2VzcycpCgkJCXsKCQkJCWlmKHN0cnBvcygkcHJvcFZhbHVlLCcsJykgPT09IEZBTFNFKQoJCQkJewoJCQkJCSRfcHJvcCA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoIjsiLCAkcHJvcFZhbHVlKSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJF9wcm9wID0gJHRoaXMtPkNsZWFuQXJyYXkoZXhwbG9kZSgiLCIsICRwcm9wVmFsdWUpKTsKCQkJCX0KCQkJCWZvcmVhY2goJF9wcm9wIGFzICRfcCkKCQkJCXsKCQkJCQlpZighaW5fYXJyYXkoJF9wLCAkcHJvcCkgJiYgJF9wICE9ICctMScgJiYgJF9wICE9ICcnKQoJCQkJCXsKCQkJCQkJJHByb3BbXSA9ICRfcDsKCQkJCQl9CgkJCQl9CgkJCQlpZighaW5fYXJyYXkoJy0xJywgJF9wcm9wKSB8fCAoJHBhcmVudElkIDw9IDAgJiYgaW5fYXJyYXkoJy0xJywgJF9wcm9wKSkpCgkJCQl7CgkJCQkJcmV0dXJuICRwcm9wOwoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJaWYoJHBhcmVudElkIDw9IDAgJiYgJHByb3BWYWx1ZSA9PSAnLTEnKQoJCQkJewoJCQkJCXJldHVybjsKCQkJCX0KCQkJCWVsc2UgaWYoJHByb3BlcnR5VmFsdWUgIT0gJy0xJykKCQkJCXsKCQkJCQlyZXR1cm4gJHByb3BWYWx1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIEdldENvbnRlbnRQcm9wKCRjb250ZW50SWQsICRwcm9wTmFtZSwgJGNvbnRlbnRUeXBlKQoJICogbm90IHBhcnQgb2YgdGhlIG1vZHVsZSBhcGkKCSAqIGdldHMgYSBwcm9wZXJ0eSBvZiBhIGNvbnRlbnQgcGFnZQoJICoKCSAqIEBwYXJhbSBpbnQgJGNvbnRlbnRJZCAtIFRoZSBpZCBvZiB0aGUgY29udGVudCB0byBnZXQgdGhlIHByb3BlcnR5IGZyb20KCSAqIEBwYXJhbSBzdHJpbmcgJHByb3BOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldCB0aGUgdmFsdWUgZnJvbQoJICogQHBhcmFtIHN0cmluZyAkY29udGVudFR5cGUgKG9wdGlvbmFsKSAtIFRoZSB0eXBlIG9mIHRoZSBjb250ZW50CgkgKgoJICogQHJldHVybiBtaXhlZCAtIEZhbHNlIGlmIG5vdCBleGlzdHMgb3IgYXJyYXkoJ3BhcmVudF9pZCcsJ3Byb3BfdmFsdWUnKQoJICoKCSAqLwoJZnVuY3Rpb24gR2V0Q29udGVudFByb3AoJGNvbnRlbnRJZCwgJHByb3BOYW1lLCAkY29udGVudFR5cGUgPSAnJykKCXsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0mICRnQ21zLT5HZXREYigpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgQ1AuY29udGVudCwgQy5wYXJlbnRfaWQsIEMuY29udGVudF9hbGlhcyBGUk9NICIgLiBjbXNfZGJfcHJlZml4KCkgLiAiY29udGVudF9wcm9wcyBDUAoJCQlMRUZUIEpPSU4gIiAuIGNtc19kYl9wcmVmaXgoKSAuICJjb250ZW50IEMgT04gQy5jb250ZW50X2lkID0gQ1AuY29udGVudF9pZAoJCQlXSEVSRSBDUC5jb250ZW50X2lkID0gPyBBTkQgQ1AucHJvcF9uYW1lID0gPyI7CgkJJHAgPSBhcnJheSgkY29udGVudElkLCAkcHJvcE5hbWUpOwoJCWlmKCRjb250ZW50VHlwZSAhPSAnJykKCQl7CgkJCSRxdWVyeSAuPSAiIEFORCBDLnR5cGUgPSA/IjsKCQkJJHBbXSAgICA9ICRjb250ZW50VHlwZTsKCQl9CgkJJHF1ZXJ5IC49ICIgTElNSVQgMSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHApOwoJCWlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJcmV0dXJuIGFycmF5KCdwYXJlbnRfaWQnPT4kcm93WydwYXJlbnRfaWQnXSwgJ3Byb3BfdmFsdWUnPT4kcm93Wydjb250ZW50J10pOwoJCX0KCQkKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCWZ1bmN0aW9uIEdldEdyb3VwcygpCgl7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkkZ3JvdXBzID0gYXJyYXkoKTsKCQkkcXVlcnkgPSAiU0VMRUNUIGdyb3VwX2lkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuInVzZXJfZ3JvdXBzIFdIRVJFIHVzZXJfaWQgPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheShnZXRfdXNlcmlkKCkpKTsKCQl3aGlsZSggJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKQoJCXsKCQkJJGdyb3Vwc1tdID0gJHJvd1snZ3JvdXBfaWQnXSAqIC0xOwoJCX0KCQlyZXR1cm4gJGdyb3VwczsKCX0KCQoJZnVuY3Rpb24gQ2hlY2tCbG9ja1Blcm1pc3Npb24oJiRibG9ja0luZm8pCgl7CgkJJGFkZHRfZWRpdG9ycyA9IGFycmF5KCk7CgkJIyBjaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGVkaXQgdGhpcyBibG9jawoJCWlmKCgkYmxvY2tJbmZvWydlZGl0b3JfdXNlcnMnXSAhPSAnJyB8fCAkYmxvY2tJbmZvWydlZGl0b3JfZ3JvdXBzJ10gIT0gJycpCgkJJiYgIWNoZWNrX3Blcm1pc3Npb24oZ2V0X3VzZXJpZCgpLCAnTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJykpCgkJewoJCQkkZWRpdG9yR3JvdXBzID0gICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2VkaXRvcl9ncm91cHMnXSkpOwoJCQkkZWRpdG9yVXNlcnMgID0gICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRibG9ja0luZm9bJ2VkaXRvcl91c2VycyddKSk7CgkJCWZvcmVhY2ggKCR0aGlzLT5fYWxsR3JvdXBzIGFzICRvbmVHcm91cCkKCQkJewoJCQkJaWYoaW5fYXJyYXkoJG9uZUdyb3VwLT5uYW1lLCRlZGl0b3JHcm91cHMpKQoJCQkJewoJCQkJCSRhZGR0X2VkaXRvcnNbXSA9ICRvbmVHcm91cC0+aWQqLTE7CgkJCQl9CgkJCX0KCQkJCgkJCWZvcmVhY2ggKCR0aGlzLT5fYWxsVXNlcnMgYXMgJG9uZVVzZXIpCgkJCXsKCQkJCWlmKGluX2FycmF5KCRvbmVVc2VyLT51c2VybmFtZSwkZWRpdG9yVXNlcnMpKQoJCQkJewoJCQkJCSRhZGR0X2VkaXRvcnNbXSA9ICRvbmVVc2VyLT5pZDsKCQkJCX0KCQkJfQoJCQkKCQkJaWYoIWluX2FycmF5KGdldF91c2VyaWQoKSwkYWRkdF9lZGl0b3JzKQoJCQkmJiAhY291bnQoYXJyYXlfaW50ZXJzZWN0KCR0aGlzLT5fdXNlckdyb3VwcywkYWRkdF9lZGl0b3JzKSkpCgkJCXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzVmFyRW1wdHkoJHZhciwgJHRyaW0sICR1bnNldEVtcHR5SW5kZXhlcykKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YXIgaXMgZW1wdHkuIGlmIHZhciBpcyBhbiBhcnJheSBpdCByZWN1cnNpdmxleSBjaGVja3MgYWxsIGVsZW1lbnRzCgkgKgoJICogQHBhcmFtIG1peGVkICR2YXIgLSB0aGUgdmFyIHRvIGNoZWNrIGZvciBlbXB0eSB2YWx1ZShzKQoJICogQHBhcmFtIGJvb2xlYW4gJHRyaW0gLSB0cnVlIHRvIHRyaW0gb2ZmIHNwYWNlcwoJICogQHBhcmFtIGJvb2xlYW4gJHVuc2V0RW1wdHlJbmRleGVzIC0gdHJ1ZSB0byBkZWxldGUgZW1wdHkgZWxlbWVudHMgZnJvbSBhcnJheQoJICogQHJldHVybiBib29sZWFuIC0gdHJ1ZSBpZiBlbXB0eSwgZmFsc2UgaWYgbm90CgkgKi8KCWZ1bmN0aW9uIElzVmFyRW1wdHkoJiR2YXIsICR0cmltID0gdHJ1ZSwgJHVuc2V0RW1wdHlJbmRleGVzID0gZmFsc2UpCgl7CgkJaWYgKGlzX2FycmF5KCR2YXIpKQoJCXsKCQkJZm9yZWFjaCAoJHZhciBhcyAkaz0+JHYpCgkJCXsKCQkJCWlmICghJHRoaXMtPklzVmFyRW1wdHkoJHYpKQoJCQkJewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlpZigkdW5zZXRFbXB0eUluZGV4ZXMpCgkJCQkJewoJCQkJCQl1bnNldCgkdmFyWyRrXSk7CgkJCQkJfQoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJCWVsc2UgaWYoJHRyaW0gJiYgdHJpbSgkdmFyKSA9PSAnJykKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlIGlmKCR2YXIgPT0gJycpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgkKCS8qKgoJICogZnVuY3Rpb24gQ2xlYW5BcnJheSgkYXJyYXkpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogcmVtb3ZlcyBlbXB0eSBlbGVtZW50cyBmcm9tIGFuIGFycmF5CgkgKiAoY2FuIGJlIHVzZWZ1bCB3aGVuIHVzaW5nIGZ1bmN0aW9uIGV4cGxvZGUgdG8gY3JlYXRlIHRoZSBhcnJheSBvZiBhIGNzdikKCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5IC0gdGhlIGFycmF5IHRvIGNsZWFuIHVwCgkgKiBAcmV0dXJuIGFycmF5IC0gYW4gYXJyYXkgd2l0aG91dCBlbXB0eSBlbGVtZW50cyBvciBhbiBlbXB0eSBhcnJheQoJICovCglmdW5jdGlvbiBDbGVhbkFycmF5KCRhcnJheSkKCXsKCQlpZiAoaXNfYXJyYXkoJGFycmF5KSkKCQl7CgkJCWZvcmVhY2ggKCRhcnJheSBhcyAkaz0+JHYpCgkJCXsKCQkJCWlmICgkdGhpcy0+SXNWYXJFbXB0eSgkdix0cnVlLHRydWUpKQoJCQkJewoJCQkJCXVuc2V0KCRhcnJheVska10pOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWlmKGlzX2FycmF5KCR2KSkKCQkJCQl7CgkJCQkJCSR2ID0gJHRoaXMtPkNsZWFuQXJyYXkoJHYpOwoJCQkJCQlpZigkdGhpcy0+SXNWYXJFbXB0eSgkdix0cnVlLHRydWUpKQoJCQkJCQl7CgkJCQkJCQl1bnNldCgkYXJyYXlbJGtdKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRhcnJheVska10gPSAkdjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCQlyZXR1cm4gJGFycmF5OwoJCX0KCQlyZXR1cm4gYXJyYXkoKTsKCX0KCQoJCgkvKioKCSAqIGZ1bmN0aW9uIElzVHJ1ZSgkdmFsdWUpCgkgKiBub3QgcGFydCBvZiB0aGUgbW9kdWxlIGFwaQoJICogY2hlY2tzIGlmIGEgdmFsdWUgaXMgbGl0ZXJhbGx5ICJ0cnVlIgoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2sKCSAqIEByZXR1cm4gYm9vbAoJICovCglmdW5jdGlvbiBJc1RydWUoJHZhbHVlKQoJewoJCXJldHVybiAoc3RydG9sb3dlcigkdmFsdWUpID09PSAndHJ1ZScgfHwgJHZhbHVlID09PSAxIHx8ICR2YWx1ZSA9PT0gJzEnIHx8ICR2YWx1ZSA9PT0gdHJ1ZSk7Cgl9CgkKCQoJLyoqCgkgKiBmdW5jdGlvbiBJc0ZhbHNlKCR2YWx1ZSkKCSAqIG5vdCBwYXJ0IG9mIHRoZSBtb2R1bGUgYXBpCgkgKiBjaGVja3MgaWYgYSB2YWx1ZSBpcyBsaXRlcmFsbHkgImZhbHNlIgoJICoKCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2sKCSAqIEByZXR1cm4gYm9vbAoJICovCglmdW5jdGlvbiBJc0ZhbHNlKCR2YWx1ZSkKCXsKCQlyZXR1cm4gKHN0cnRvbG93ZXIoJHZhbHVlKSA9PT0gJ2ZhbHNlJyB8fCAkdmFsdWUgPT09ICcwJyB8fCAkdmFsdWUgPT09IDAgfHwgJHZhbHVlID09PSBmYWxzZSB8fCAkdmFsdWUgPT09ICcnKTsKCX0KCQoJZnVuY3Rpb24gQ2hlY2tGcm9udGVuZEFjY2VzcygkZmV1X2dyb3VwcykKCXsKCQkkYWNjZXNzID0gdHJ1ZTsKCQlpZighaXNfYXJyYXkoJGZldV9ncm91cHMpKQoJCXsKCQkJJGZldV9ncm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCcsJywkZmV1X2dyb3VwcykpOwoJCX0KCQlpZiggJGZldXNlcnMgPSYgQWR2YW5jZWRDb250ZW50OjpHZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpICYmICFlbXB0eSgkZmV1X2dyb3VwcykpCgkJewoJCQkjIC4uLiBkZW55IGFjY2VzcyBieSBkZWZhdWx0IG5vdyAuLi4KCQkJJGFjY2VzcyA9IGZhbHNlOwoJCQkjIC4uLiBjaGVjayBpZiB1c2VyIGlzIGxvZ2dlZCBpbiBhbmQgYmVsb25ncyB0byBhIGdyb3VwIC4uLgoJCQkkdXNlcmlkID0gJGZldXNlcnMtPkxvZ2dlZEluSWQoKTsKCQkJaWYoJHVzZXJpZCAmJiAkZ3JvdXBzID0mICR0aGlzLT5HZXRGZXVHcm91cHMoJHVzZXJpZCkpCgkJCXsKCQkJCSMgY29tcGFyZSB1c2VycyBncm91cHMgd2l0aCBzZWxlY3RlZCBvbmVzCgkJCQlmb3JlYWNoKCRncm91cHMgYXMgJG9uZWdyb3VwKQoJCQkJewoJCQkJCWlmKGluX2FycmF5KCRvbmVncm91cFsnZ3JvdXBpZCddLCRmZXVfZ3JvdXBzKSB8fCBpbl9hcnJheSgkb25lZ3JvdXBbJ2dyb3VwbmFtZSddLCRmZXVfZ3JvdXBzKSkKCQkJCQl7CgkJCQkJCSMgaWYgbWF0Y2ggLT4gZ3JhbnQgYWNjZXNzCgkJCQkJCSRhY2Nlc3MgPSB0cnVlOwoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuICRhY2Nlc3M7Cgl9CgkKCWZ1bmN0aW9uICZHZXRGZXVHcm91cHMoJHVzZXJpZCkKCXsKCQlpZighJHVzZXJpZCkKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYoICRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudDo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSAmJiAhJHRoaXMtPl9mZXVHcm91cHMpCgkJewoJCQkkdGhpcy0+X2ZldUdyb3VwcyA9ICRmZXVzZXJzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdXNlcmlkKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5fZmV1R3JvdXBzOwoJfQoJCglmdW5jdGlvbiBDaGVja0Zyb250ZW5kUGFnZUFjY2VzcygkcGFnZV9pZCA9ICcnKQoJewoJCWdsb2JhbCAkZ0NtczsKCQlpZigkcGFnZV9pZCA+IDAgJiYgJHBhZ2VfaWQgIT0gJHRoaXMtPklkKCkpCgkJewoJCQkkbWFuYWdlciAgICA9JiAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoJCQkkbm9kZSAgICAgICA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJHBhZ2VfaWQpOwoJCQkkY29udGVudE9iaiA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwoJCX0KCQllbHNlCgkJewoJCQkkY29udGVudE9iaiA9JiAkdGhpczsKCQl9CgkJCgkJI2lmKCFpc19vYmplY3QoJGNvbnRlbnRPYmopKQoJCSN7CgkJIwlyZXR1cm4gZmFsc2U7CgkJI30KCQkKCQkkYWNjZXNzID0gdHJ1ZTsKCQlpZigkY29udGVudE9iai0+VHlwZSgpID09ICdjb250ZW50MicpCgkJewoJCQlpZihzdHJwb3MoJGNvbnRlbnRPYmotPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY2Nlc3MnKSwnLCcpID09PSBGQUxTRSkKCQkJewoJCQkJJGZldV9ncm91cHMgPSAkdGhpcy0+Q2xlYW5BcnJheShleHBsb2RlKCc7JywkY29udGVudE9iai0+R2V0UHJvcGVydHlWYWx1ZSgnZmV1X2FjY2VzcycpKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkZmV1X2dyb3VwcyA9ICR0aGlzLT5DbGVhbkFycmF5KGV4cGxvZGUoJywnLCRjb250ZW50T2JqLT5HZXRQcm9wZXJ0eVZhbHVlKCdmZXVfYWNjZXNzJykpKTsKCQkJfQoJCQkKCQkJaWYoIWVtcHR5KCRmZXVfZ3JvdXBzKSkKCQkJewoJCQkJIyBpZiBwYWdlIGhhcyBubyBwYXJlbnRzIGJ1dCBpbmhlcml0YW5jZSAtPiByZW1vdmUgaW5oZXJpdGFuY2UgKHNob3VsZCBuZXZlciBoYXBwZW4gYnV0IGp1c3QgaW4gY2FzZSkKCQkJCWlmKCRjb250ZW50T2JqLT5QYXJlbnRJZCgpIDw9IDAgJiYgaW5fYXJyYXkoIi0xIiwkZmV1X2dyb3VwcykpCgkJCQl7CgkJCQkJZm9yZWFjaCgkZmV1X2dyb3VwcyBhcyAkaz0+JHYpCgkJCQkJewoJCQkJCQlpZigkdj09Jy0xJykKCQkJCQkJewoJCQkJCQkJdW5zZXQoJGZldV9ncm91cHNbJGtdKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCQoJCQkJIyBpZiB0aGVyZSBzdGlsbCBpcyBpbmhlcml0YW5jZSAuLi4KCQkJCWlmKGluX2FycmF5KCctMScsJGZldV9ncm91cHMpKQoJCQkJewoJCQkJCSMgLi4uIGZpbmFsbHkgaW5oZXJpdAoJCQkJCSRmZXVfZ3JvdXBzID0gJGNvbnRlbnRPYmotPkluaGVyaXRQYXJlbnRQcm9wKCRjb250ZW50T2JqLT5QYXJlbnRJZCgpLCdmZXVfYWNjZXNzJywkZmV1X2dyb3Vwcyk7CgkJCQl9CgkJCX0KCQkJJGFjY2VzcyA9ICR0aGlzLT5DaGVja0Zyb250ZW5kQWNjZXNzKCRmZXVfZ3JvdXBzKTsKCQl9CgkJcmV0dXJuICRhY2Nlc3M7Cgl9CgkKCWZ1bmN0aW9uIERvRnJvbnRlbmRQYWdlQWN0aW9uKCkKCXsKCQlnbG9iYWwgJGdDbXM7CgkJaWYoICRmZXVzZXJzID0mIEFkdmFuY2VkQ29udGVudDo6R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnICkpCgkJewoJCQkjIGdldCB0aGUgcGFnZSB0byByZWRpcmVjdCB0bwoJCQkkcmVkaXJlY3RQYWdlID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ3JlZGlyZWN0X3BhZ2UnKTsKCQkJaWYoJHJlZGlyZWN0UGFnZSA9PSAnLTEnKQoJCQl7CgkJCQkkcmVkaXJlY3RQYWdlID0gJHRoaXMtPkluaGVyaXRQYXJlbnRQcm9wKCR0aGlzLT5QYXJlbnRJZCgpLCdyZWRpcmVjdF9wYWdlJyk7CgkJCX0KCQkJCgkJCSMgZG8gbm90IHJlZGlyZWN0IHRvIGN1cnJlbnQgcGFnZSAtPiB3aWxsIHJlc3VsdCBpbiBlbmRsZXNzIHJlY3Vyc2l2ZSByZWRpcmVjdGlvbgoJCQlpZigkcmVkaXJlY3RQYWdlID09ICR0aGlzLT5JZCgpIHx8ICRyZWRpcmVjdFBhZ2UgPT0gJHRoaXMtPkFsaWFzKCkpCgkJCXsKCQkJCSRyZWRpcmVjdFBhZ2UgPSAnJzsKCQkJfQoJCQkKCQkJIyBnZXQgZmV1IGFjdGlvbgoJCQkkZmV1QWN0aW9uID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoJ2ZldV9hY3Rpb24nKTsKCQkJCgkJCWlmKCRmZXVBY3Rpb24gPT0gJy0xJykKCQkJewoJCQkJJGZldUFjdGlvbiA9ICR0aGlzLT5Jbmhlcml0UGFyZW50UHJvcCgkdGhpcy0+UGFyZW50SWQoKSwnZmV1X2FjdGlvbicpOwoJCQl9CgkJCQoJCQkjIGlmIHdlIHN0aWxsIGRvbid0IGhhdmUgYSByZWRpcmVjdCBwYWdlIC0+IGRvIGZldSBhY3Rpb24gaW4gY3VycmVudCBwYWdlCgkJCWlmKCRyZWRpcmVjdFBhZ2UgPT0gJycpCgkJCXsKCQkJCSMgaWYgd2Ugd2FudCBhbiBhY3Rpb24gKGFuZCB3ZSBoYXZlIG5vdCBkb25lIHRoaXMgYmVmb3JlKSAuLi4KCQkJCWlmKCRmZXVBY3Rpb24gJiYgISR0aGlzLT5fZmV1QWN0aW9uKQoJCQkJewoJCQkJCSMgLi4uIHNldCBhIGZsYWcgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgYSBsb2dpbiBmb3JtIG5vdyAoanVzdCB0byBwcmV2ZW50IHRvIGRpc3BsYXkgaXQgYWdhaW4gZm9yIG90aGVyIGNvbnRlbnQgYmxvY2tzKSAuLi4KCQkJCQkkdGhpcy0+X2ZldUFjdGlvbiA9IHRydWU7CgkJCQkJIyAuLi4gYW5kIGZpbmFsbHkgZG8gZmV1IGFjdGlvbgoJCQkJCXJldHVybiAkZmV1c2Vycy0+RG9BY3Rpb24oJ2RlZmF1bHQnLCAnY250bnQwMScsIGFycmF5KCdmb3JtJz0+J2xvZ2luJyksICR0aGlzLT5JZCgpKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkjIC4uLiBvdGhlcndpc2UganVzdCByZXR1cm4gbm90aGluZwoJCQkJCXJldHVybjsKCQkJCX0KCQkJCQoJCQl9CgkJCSMgZWxzZSBpZiB3ZSBoYXZlIGEgcmVkaXJlY3QgcGFnZSAuLi4KCQkJZWxzZQoJCQl7CgkJCQkjIGdldCB0aGUgcmVkaXJlY3QgcGFyYW1zCgkJCQkkcGF0dGVybiAgICAgICAgPSAnLyhbXHddKyk9KFsiXVteIl0qWyJdfFtcJ11bXlwnXSpbXCddfFteXCciXHNdKikvJzsKCQkJCSRyZWRpcmVjdFBhcmFtcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdyZWRpcmVjdF9wYXJhbXMnKTsKCQkJCSRldmFsdWF0ZVNtYXJ0eSA9ICR0aGlzLT5HZXRQcm9wZXJ0eVZhbHVlKCdldmFsdWF0ZV9zbWFydHknKTsKCQkJCWlmKCRldmFsdWF0ZVNtYXJ0eSkKCQkJCXsKCQkJCQkkcmVkaXJlY3RQYXJhbXMgPSAkZmV1c2Vycy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHJlZGlyZWN0UGFyYW1zKTsKCQkJCX0KCQkJCQoJCQkJJG1hdGNoZXMgID0gYXJyYXkoKTsKCQkJCSRyZXN1bHQgICA9IHByZWdfbWF0Y2hfYWxsKCRwYXR0ZXJuLCAkcmVkaXJlY3RQYXJhbXMsICRtYXRjaGVzKTsKCQkJCSRfcGFyYW1zMSA9IGFycmF5KCk7CgkJCQkkX3BhcmFtczIgPSBhcnJheSgpOwoJCQkJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG1hdGNoZXNbMV0pOyAkaSsrKQoJCQkJewoJCQkJCWlmKHN0YXJ0c3dpdGgoJG1hdGNoZXNbMl1bJGldLCdcJycpKQoJCQkJCXsKCQkJCQkJJG1hdGNoZXNbMl1bJGldID0gdHJpbSgkbWF0Y2hlc1syXVskaV0sJ1wnJyk7CgkJCQkJfQoJCQkJCWVsc2UgaWYoc3RhcnRzd2l0aCgkbWF0Y2hlc1syXVskaV0sJyInKSkKCQkJCQl7CgkJCQkJCSRtYXRjaGVzWzJdWyRpXSA9IHRyaW0oJG1hdGNoZXNbMl1bJGldLCciJyk7CgkJCQkJfQoJCQkJCSRfcGFyYW1zMVskbWF0Y2hlc1sxXVskaV1dID0gJG1hdGNoZXNbMl1bJGldOwoJCQkJCSRfcGFyYW1zMltdICAgICAgICAgICAgICAgID0gJG1hdGNoZXNbMV1bJGldIC4gJz0nIC4gJG1hdGNoZXNbMl1bJGldOwoJCQkJfQoJCQkJIyBpZiB3ZSB3YW50IGFuIGFjdGlvbiAuLi4KCQkJCWlmKCRmZXVBY3Rpb24pCgkJCQl7CgkJCQkJIyAuLi4gcmVkaXJlY3QgdG8gdGhlIHNwZWNpZmllZCBwYWdlIGFuZCBkbyBmZXUgYWN0aW9uCgkJCQkJcmV0dXJuICRmZXVzZXJzLT5SZWRpcmVjdEZvckZyb250RW5kKCdjbnRudDAxJywgJHJlZGlyZWN0UGFnZSwgJ2RlZmF1bHQnLCAkX3BhcmFtczEsIGZhbHNlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkjIC4uLiBvdGhlcndpc2UganVzdCByZWRpcmVjdCAtIFRvRG86IENoZWNrIGZvciBTU0wgU3R1ZmYKCQkJCQkkbWFuYWdlciA9JiAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoJCQkJCSRub2RlICAgID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkcmVkaXJlY3RQYWdlKTsKCQkJCQkkY29udGVudCA9JiAkbm9kZS0+R2V0Q29udGVudCgpOwoJCQkJCWlmIChpc3NldCgkY29udGVudCkgJiYgJHVybCA9ICRjb250ZW50LT5HZXRVUkwoKSkKCQkJCQl7CgkJCQkJCSRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgkJCQkJCSR1cmwgPSB0cmltKHN0cl9yZXBsYWNlKAoJCQkJCQkJYXJyYXkoJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvaW5kZXgucGhwJywKCQkJCQkJCQkkY29uZmlnWydzc2xfdXJsJ10gLiAnL2luZGV4LnBocCcsCgkJCQkJCQkJJGNvbmZpZ1sncm9vdF91cmwnXSwKCQkJCQkJCQkkY29uZmlnWydzc2xfdXJsJ10pLAoJCQkJCQkJJycsICR1cmwpLCcvPycpOwoJCQkJCQkKCQkJCQkJaWYoIWVtcHR5KCRfcGFyYW1zMSkgJiYgIWVtcHR5KCRfcGFyYW1zMikpCgkJCQkJCXsKCQkJCQkJCWlmKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSA9PSAnbm9uZScpCgkJCQkJCQl7CgkJCQkJCQkJaWYobWV0aG9kX2V4aXN0cygkY29udGVudCwnU2VjdXJlJykgJiYgJGNvbnRlbnQtPlNlY3VyZSgpKQoJCQkJCQkJCXsKCQkJCQkJCQkJJHVybCA9ICRjb25maWdbJ3NzbF91cmwnXSAuICcvaW5kZXgucGhwPycgLiBpbXBsb2RlKCcmJywkX3BhcmFtczIpIC4gJyYnIC4gJHVybDsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHVybCA9ICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnL2luZGV4LnBocD8nIC4gaW1wbG9kZSgnJicsJF9wYXJhbXMyKSAuICcmJyAuICR1cmw7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJZWxzZSBpZigkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gPT0gJ2ludGVybmFsJykKCQkJCQkJCXsKCQkJCQkJCQlpZihtZXRob2RfZXhpc3RzKCRjb250ZW50LCdTZWN1cmUnKSAmJiAkY29udGVudC0+U2VjdXJlKCkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsID0gJGNvbmZpZ1snc3NsX3VybCddIC4gJy9pbmRleC5waHAvJyAuIGltcGxvZGUoJy8nLCRfcGFyYW1zMSkgLiAnLycgLiAkdXJsOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvaW5kZXgucGhwLycgLiBpbXBsb2RlKCcvJywkX3BhcmFtczEpIC4gJy8nIC4gJHVybDsKCQkJCQkJCQl9CgkJCQkJCQkJaWYoJGNvbnRlbnQtPkRlZmF1bHRDb250ZW50KCkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsIC49ICRjb250ZW50LT5BbGlhcygpIC4gJGNvbmZpZ1sncGFnZV9leHRlbnNpb24nXTsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCQllbHNlIGlmKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSA9PSAnbW9kX3Jld3JpdGUnKQoJCQkJCQkJewoJCQkJCQkJCWlmKG1ldGhvZF9leGlzdHMoJGNvbnRlbnQsJ1NlY3VyZScpICYmICRjb250ZW50LT5TZWN1cmUoKSkKCQkJCQkJCQl7CgkJCQkJCQkJCSR1cmwgPSAkY29uZmlnWydzc2xfdXJsJ10gLiAnLycgLiBpbXBsb2RlKCcvJywkX3BhcmFtczEpIC4gJy8nIC4gJHVybDsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJJHVybCA9ICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnLycgLiBpbXBsb2RlKCcvJywkX3BhcmFtczEpIC4gJy8nIC4gJHVybDsKCQkJCQkJCQl9CgkJCQkJCQkJaWYoJGNvbnRlbnQtPkRlZmF1bHRDb250ZW50KCkpCgkJCQkJCQkJewoJCQkJCQkJCQkkdXJsIC49ICRjb250ZW50LT5BbGlhcygpIC4gJGNvbmZpZ1sncGFnZV9leHRlbnNpb24nXTsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJcmV0dXJuIHJlZGlyZWN0KCR1cmwpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KfQo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICouY3NzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIG9yZGVyIGRlbnksYWxsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBhbGxvdyBmcm9tIGFsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L0ZpbGVzPgo=]]></data>
	</file>
	<file>
	  <filename>/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/css/style.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvcnRhYmxlX2hhbmRsZXI6aG92ZXIgewoJY3Vyc29yIDogbW92ZTsKfQoKLnNvcnRhYmxlX2hhbmRsZXIgewoJbWFyZ2luOjAgNXB4IDAgMDsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDsKfQoKLnNvcnRhYmxlX3dyYXBwZXIgaW5wdXQgewoJbWFyZ2luOjAgNXB4IDAgMDsKfQoKLnNvcnRhYmxlIHsKCWxpbmUtaGVpZ2h0OiAyMDAlOwoJcGFkZGluZzogMCAwIDAgNXB4Owp9CgpkaXYucGFnZW92ZXJmbG93LkFkdmFuY2VkQ29udGVudF9Db250ZW50QmxvY2sgewoJd2lkdGg6IDEwMCU7Cn0KCmxlZ2VuZC5BZHZhbmNlZENvbnRlbnRfQ29udGVudEJsb2NrLApsZWdlbmQuQWR2YW5jZWRDb250ZW50X0Jsb2NrR3JvdXAgewoJcGFkZGluZy1ib3R0b206IDA7CglwYWRkaW5nLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IDA7CgltYXJnaW4tdG9wOiAwOwoJZm9udC1zaXplOiAxMDAlOwp9CgoKZGl2I3BhZ2VfdGFicyBkaXYuU3ViVGFiV3JhcHBlciB7CgliYWNrZ3JvdW5kOnRyYW5zcGFyZW50OwoJYm9yZGVyOm5vbmU7CgljdXJzb3I6YXV0bzsKCWZsb2F0Om5vbmU7CgltYXJnaW46MHB4OwoJcGFkZGluZzowcHg7Cn0KCi8qIENhbGVuZGFyICovCi5jYWxlbmRhclRyaWdnZXI6aG92ZXIgewoJY3Vyc29yOiBwb2ludGVyOwp9CgpkaXYuY2FsZW5kYXIKewogIGZvbnQtc2l6ZTogc21hbGxlcjsKICBjb2xvcjogIzNlM2UzZTsKfQoKZGl2LmNhbGVuZGFyLnBvcHVwCnsKICBtYXJnaW4tbGVmdDogLTQwcHg7CiAgbWFyZ2luLXRvcDogLTEwMHB4OwogIHotaW5kZXg6IDk5OTk7Cn0KCmRpdi5jYWxlbmRhciB0YWJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZTVlNWU1OwogIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CiAgYm9yZGVyLXNwYWNpbmc6IDFweDsKfQoKZGl2LmNhbGVuZGFyIHRoZWFkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgpkaXYuY2FsZW5kYXIgdGQsCmRpdi5jYWxlbmRhciB0aAp7CiAgcGFkZGluZzogMnB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKZGl2LmNhbGVuZGFyIHRkLnRpdGxlCnsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI2U4YTgwMDsKfQoKZGl2LmNhbGVuZGFyIHRoCnsKICBmb250LXdlaWdodDogYm9sZDsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQgewogIHdpZHRoOiAyZW07CiAgY29sb3I6ICMzZDYwYmE7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlcjogMXB4IHNvbGlkICNlNWU1ZTU7Cn0KCmRpdi5jYWxlbmRhciB0ci5kYXlzIHRkOmhvdmVyLApkaXYuY2FsZW5kYXIgdGQuYnV0dG9uOmhvdmVyCnsKICBib3JkZXItY29sb3I6ICNlOGE4MDA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6aG92ZXIKewogYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKZGl2LmNhbGVuZGFyIHRyLmRheXMgdGQ6YWN0aXZlCmRpdi5jYWxlbmRhciB0ZC5idXR0b246YWN0aXZlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2RlOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5zZWxlY3RlZAp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U4YTgwMDsKICBib3JkZXItY29sb3I6ICNlOGE4MDAgIWltcG9ydGFudDsKICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC53ZWVrZW5kIHsKCWNvbG9yOiAjN2Y5ZGU4Owp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC50b2RheQp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYm9yZGVyLWNvbG9yOiAjM2Q2MGJhOwp9CgpkaXYuY2FsZW5kYXIgdHIuZGF5cyB0ZC5vdGhlckRheQp7CiAgYmFja2dyb3VuZDogI2U1ZTVlNTsKICBjb2xvcjogI2ZmZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/copyright.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIG1vZHVsZSB1c2VzIGV4dGVybmFsIGxpYmFyaWVzIGFuZCBjb2RlIHNuaXBwZXRzIHRoYXQgYXJlIGxpc3RlZCBiZWxvdzoKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjQuMgpodHRwOi8vanF1ZXJ5LmNvbS8KCkNvcHlyaWdodCAyMDEwLCBKb2huIFJlc2lnCkR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgpodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCgpJbmNsdWRlcyBTaXp6bGUuanMKaHR0cDovL3NpenpsZWpzLmNvbS8KQ29weXJpZ2h0IDIwMTAsIFRoZSBEb2pvIEZvdW5kYXRpb24KUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCwgQlNELCBhbmQgR1BMIExpY2Vuc2VzLgoKRGF0ZTogU2F0IEZlYiAxMyAyMjozMzo0OCAyMDEwIC0wNTAwCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFVJIDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpqUXVlcnkgVUkgV2lkZ2V0IDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvV2lkZ2V0CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IFVJIE1vdXNlIDEuOAoKQ29weXJpZ2h0IChjKSAyMDEwIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy4KCmh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTW91c2UgIAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmpRdWVyeSBVSSBTb3J0YWJsZSAxLjgKCkNvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpCmFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuCgpodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1NvcnRhYmxlcwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCkNhbGVuZGFyVmlldyBmb3IgalF1ZXJ5CgpCYXNlZCBvbiBDYWxlbmRhclZpZXcgZm9yIFByb3RvdHlwZSBodHRwOi8vY2FsZW5kYXJ2aWV3Lm9yZy8gd2hpY2ggaXMgYmFzZWQKb24gRHluYXJjaCBESFRNTCBDYWxlbmRhciBodHRwOi8vd3d3LmR5bmFyY2guY29tL3Byb2plY3RzL2NhbGVuZGFyL29sZC8uCgpDYWxlbmRhclZpZXcgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgKExHUEwpCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKRGF0ZS5mb3JtYXQoKQpzdHJpbmcgZm9ybWF0ICggc3RyaW5nIGZvcm1hdCApCkZvcm1hdHRpbmcgcnVsZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly9waHAubmV0L3N0cmZ0aW1lCgpDb3B5cmlnaHQgKEMpIDIwMDYgIERhbyBHb3R0d2FsZAoKQ29udGFjdCBpbmZvcm1hdGlvbjoKRGFvIEdvdHR3YWxkICA8ZGFvIGF0IGRlc2lnbi1ub2lyLmRlPgoKdmVyc2lvbiAgMC43CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKalF1ZXJ5IEZvcm0gUGx1Z2luCnZlcnNpb246IDIuNDMgKDEyLU1BUi0yMDEwKQoKRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9tYWxzdXAuY29tL2pxdWVyeS9mb3JtLwpEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKClRoZSBmaWxlcGlja2VyIGlzIGJhc2VkIG9uIGEgcGx1Z2luIG9mIFRpbnlNQ0UgdGhhdCBjb21lcyBieSBkZWZhdWx0IHdpdGggQ01TbXMuIApJJ20gbm90IHN1cmUgd2hvIGFjdHVhbGx5IGlzIHRoZSBhdXRob3Igb2YgdGhlIGZpbGVwaWNrZXIuIApUaW55TUNFIGZvciBDTVNtcyBpcyBkZXZlbG9wZWQvbWFpbnRhaW5lZCBieSBTaW1vbiBCcm93biwgU3RlZmFuIFKabGxpbiBhbmQgTW9ydGVuIFBvdWxzZW4uCgo=]]></data>
	</file>
	<file>
	  <filename>/doc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/doc/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKCiBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCgkJCSAgICBQcmVhbWJsZQoKICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCmZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwp1c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5CnRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoMCgkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCiAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgoKICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCmEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iCm1lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6CnRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCmVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCmxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCgpBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdApjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCnJ1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KaXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCgogIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncwpzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQpjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCm5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsKYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQphbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCnlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCgogIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24Kb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZApkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKCiAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCgogICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCiAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkCiAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCgogICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQogICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAogICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgogICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCiAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCiAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAogICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgogICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCgwKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoMCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoMCiAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4KY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCm9yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCnRob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcKY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCnRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgoKICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwpvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCmFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgoKRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQpsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCmVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlClNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKdGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLgoKICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlCnByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlClNvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcwptYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscwpvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCm9mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgoKCQkJICAgIE5PIFdBUlJBTlRZCgogIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQpGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUwpQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRApPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTClRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsClJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1IKUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCk9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQKVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCllPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSClBST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCgoJCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgwKCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgIG5hbWUgb2YgYXV0aG9yCiAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQpiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4KCllvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCnNjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCm5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKCiAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQogIGBHbm9tb3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgoKICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkKICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQoKVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCnByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UgbWF5CmNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQpsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwKUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzIH4gIlwuKGdpZnxqcGd8anBlZ3xwbmcpJCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgb3JkZXIgZGVueSxhbGxvdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIGFsbG93IGZyb20gYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvRmlsZXM+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/calendar.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAPjSURBVHjaYvz//z8DMujunvX/zp2zDIqKBgwVFZmMDEQAmB4VFWOG0tI0FD0AAcQAsgAZnzlz5j8IQGkGYjA+PQABxAKyRKVz9f8/n94x/P3ykaFOR5Dhy5cvDLdu3WIIWLT3PzMPP17X49LDwifEcKc8lBEggFhgCvmMHRl+PbkDdM1GhmfPnoExt3YAA5uMMgPIz/9BJNBFjIwQNiMwZP8DiZ9oeriAetiBer7dvgg2FyCA4BYw/mFg+PftO8PZs2fBLvn8+TPDPyU3Bsa/UHkGaFwBKUaI6QxMIC6anv+KbmCzYAAggBAWAA1iZuZkCMwoZhD7/4XhyR92hlVfOBkY/oDdDrHiP9jtDBAv/QfTyHpeMfIwLH7PCXcUCAAEENwCkEGsghIMi1/8BDqSA+xSDgkJBqa/EIOhAcMAChtIkEEIkJ5Fz38CxTjAFrKLS4LNggGAAAJbkPTnLkN5VBBUSJ+BdICpp7NjPZgGCCC4D/7/+89ACwAQQEwwxj9gMKDjdevXM6ioqjBIy8gw1Dc0MLx7/x5F/vGTJwy+fn4Mp8+cwdALAwABxITsA2R8+dJlhkWLFjJ4e3szFBQUMFy8eIFh9uzZDH9+/2H4+eMnw80bNxmmTZ0KjGQmBjZWNgz9MAAQQPAg+vfvH4rXzl84z/Dz5y+G4qISBjExMYYvwCT47etXht+/fzPcuHGDoaa2hgGh9y+GfhgACCAkC1DjwMnRmcHM1IxBXFyC4fr160AfXGTQ1tYB5gEmBi0tbYYVy1cyXLt2jaGishxo6V8M/TAAEEBMuMokkKvl5RUYVq9exZCamszAw8PDkJaWzsDExAS0hJGBnZ2dgYWFBeyrv0AfoOuHAYAAwhlEoFxZUVHGcPLUSYaK8koGPz9/BjY2NhR1f//+Yfj67Ss4XnAFEUAA4UymoAjeu28fg4y0NDhSV6xYzsDBwcng5enFwM3NDcmbwKD58gVowZ8/OJM5QACxICdTGPj58ycw6Z1m+AZ03a3btxgqqyvA4kpKygx2dnYMnFxcEB8AgwakBl0/MgAIIKw+ACW7ObPm4cw8MLWGBkYM9+48xJtRAQIIYcF/1DC8cfMGOB7ExcUZbgBT0YsXLxjMzM3h8cPLy8vw6OFDBkEhIbCYqYkpVgsAAgjJAlQJdTUNOFtWRg6rZmQ1OEKIASCAwBZw83AyiIgJUrUMApkJAgABBLbg7JnzDMuWrKKqBSAzQQAggOBBpKioSJPSFCAAD2WwAgAIg1CY/v8t6mNnZEINZOJllz3/gbnGB05SIOpWfrzt5S3t9E4VUnIwyQRDNHkzWgjtb44AAwBrATqlndxPggAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/images/sort.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOCAYAAAAWo42rAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAG9JREFUeNpiYMAE+lCMAhjR+JZAnABlLwDi4zAJZhyKQMAAiN8C8RNkheiKMBQzQt2TxYAfTAMplIHqxAcuMFAdEG01C5AQBmJfAgofg4LnJTQIcJkKCvgzsHB8gkMxPHaQYwZdMUoUMhCbKAACDAAFXhb05ZeJ9wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PEZpbGVzICIqLmpzIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBvcmRlciBkZW55LGFsbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgYWxsb3cgZnJvbSBhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9GaWxlcz4K]]></data>
	</file>
	<file>
	  <filename>/js/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/jq.calendar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENhbGVuZGFyVmlldyBmb3IgalF1ZXJ5CiAqCiAqIEJhc2VkIG9uIENhbGVuZGFyVmlldyBmb3IgUHJvdG90eXBlIGh0dHA6Ly9jYWxlbmRhcnZpZXcub3JnLyB3aGljaCBpcyBiYXNlZAogKiBvbiBEeW5hcmNoIERIVE1MIENhbGVuZGFyIGh0dHA6Ly93d3cuZHluYXJjaC5jb20vcHJvamVjdHMvY2FsZW5kYXIvb2xkLy4KICoKICogQ2FsZW5kYXJWaWV3IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsCiAqIFB1YmxpYyBMaWNlbnNlIChMR1BMKQogKgogKiBVc2FnZToKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcigpOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7dHJpZ2dlckVsZW1lbnQ6ICcjZGF0ZV9pbnB1dF90cmlnZ2VyJ30pOwogKiAgIH0KICoKICogICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogKiAgICAgJCgnI2RhdGVfaW5wdXQnKS5jYWxlbmRhcih7cGFyZW50RWxlbWVudDogJyNjYWxlbmRhcl9jb250YWluZXInfSk7CiAqICAgfQogKgogKiBEZWZhdWx0IG9wdGlvbnM6CiAqICAgdHJpZ2dlckVsZW1lbnQ6IG51bGwsIC8vIFBvcHVwIGNhbGVuZGFyCiAqICAgcGFyZW50RWxlbWVudDogbnVsbCwgLy8gSW5saW5lIGNhbGVuZGFyCiAqICAgbWluWWVhcjogMTkwMCwKICogICBtYXhZZWFyOiAyMTAwLAogKiAgIGZpcnN0RGF5T2ZXZWVrOiAxLCAvLyBNb25kYXkKICogICB3ZWVrZW5kOiAiMCw2IiwgLy8gU3VuZGF5IGFuZCBTYXR1cmRheQogKiAgIGRhdGVGb3JtYXQ6ICclWS0lbS0lZCcsCiAqICAgc2VsZWN0SGFuZGxlcjogbnVsbCwgLy8gV2lsbCB1c2UgZGVmYXVsdCBzZWxlY3QgaGFuZGxlcgogKiAgIGNsb3NlSGFuZGxlcjogbnVsbCAvLyBXaWxsIHVzZSBkZWZhdWx0IGNsb3NlIGhhbmRsZXIKICovCjsoZnVuY3Rpb24oJCkgewoJdmFyIENhbGVuZGFyID0gZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXRlID0gbmV3IERhdGUoKTsKCX07CgoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCS8vIENvbnN0YW50cwoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglDYWxlbmRhci5WRVJTSU9OID0gJzEuMic7CglDYWxlbmRhci5UT0RBWSA9ICdUb2RheSc7CgoJQ2FsZW5kYXIuREFZX05BTUVTID0gbmV3IEFycmF5KAoJCSdTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScKCSk7CgoJQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTID0gbmV3IEFycmF5KCdTdScsICdNbycsICdUdScsICdXZScsICdUaCcsICdGcicsICdTYScpOwoKCUNhbGVuZGFyLk1PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywKCQknU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInCgkpOwoKCUNhbGVuZGFyLlNIT1JUX01PTlRIX05BTUVTID0gbmV3IEFycmF5KAoJCSdKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYycKCSk7CgoJQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX1lFQVIgID0gLTI7CglDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEggPSAtMTsKCUNhbGVuZGFyLk5BVl9UT0RBWSAgICAgICAgICA9ICAwOwoJQ2FsZW5kYXIuTkFWX05FWFRfTU9OVEggICAgID0gIDE7CglDYWxlbmRhci5OQVZfTkVYVF9ZRUFSICAgICAgPSAgMjsKCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gU3RhdGljIE1ldGhvZHMKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLyoqCgkgKiBUaGlzIGdldHMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBhIG1vdXNlIGJ1dHRvbiBhbnl3aGVyZSBpbiB0aGUKCSAqIGRvY3VtZW50LCBpZiB0aGUgY2FsZW5kYXIgaXMgc2hvd24uIElmIHRoZSBjbGljayB3YXMgb3V0c2lkZSB0aGUgb3BlbgoJICogY2FsZW5kYXIgdGhpcyBmdW5jdGlvbiBjbG9zZXMgaXQuCgkgKgoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLl9jaGVja0NhbGVuZGFyID0gZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoIXdpbmRvdy5fcG9wdXBDYWxlbmRhcikgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoJChldmVudC50YXJnZXQpLnBhcmVudHMoKS5pbmRleCgkKHdpbmRvdy5fcG9wdXBDYWxlbmRhci5jb250YWluZXIpKSA+PSAwKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXdpbmRvdy5fcG9wdXBDYWxlbmRhci5jYWxsQ2xvc2VIYW5kbGVyKCk7CgkJcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cgl9CgoJLyoqCgkgKiBFdmVudCBIYW5kbGVycwoJICogQHBhcmFtIGV2ZW50CgkgKi8KCUNhbGVuZGFyLmhhbmRsZU1vdXNlRG93bkV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpewoJCSQoZG9jdW1lbnQpLm1vdXNldXAoQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50KTsKCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJfQoKCS8qKgoJICogQ2xpY2tzIG9mIGRpZmZlcmVudCBhY3Rpb25zCgkgKiBAcGFyYW0gZXZlbnQKCSAqLwoJQ2FsZW5kYXIuaGFuZGxlTW91c2VVcEV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgZWwgICAgICAgID0gZXZlbnQudGFyZ2V0OwoJCXZhciBjYWxlbmRhciAgPSBlbC5jYWxlbmRhcjsKCQl2YXIgaXNOZXdEYXRlID0gZmFsc2U7CgoJCS8vIElmIHRoZSBlbGVtZW50IHRoYXQgd2FzIGNsaWNrZWQgb24gZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIENhbGVuZGFyCgkJLy8gb2JqZWN0LCByZXR1cm4gYXMgd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgoJCWlmICghY2FsZW5kYXIpIHJldHVybiBmYWxzZQoKCQkvLyBDbGlja2VkIG9uIGEgZGF5CgkJaWYgKHR5cGVvZiBlbC5uYXZBY3Rpb24gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJaWYgKGNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudCkgewoJCQkJY2FsZW5kYXIuY3VycmVudERhdGVFbGVtZW50LnJlbW92ZUNsYXNzKCdzZWxlY3RlZCcpOwoJCQkJJChlbCkuYWRkQ2xhc3MoJ3NlbGVjdGVkJyk7CgkJCQljYWxlbmRhci5zaG91bGRDbG9zZSA9IChjYWxlbmRhci5jdXJyZW50RGF0ZUVsZW1lbnQgPT0gJChlbCkpOwoJCQkJaWYgKCFjYWxlbmRhci5zaG91bGRDbG9zZSkgewoJCQkJCWNhbGVuZGFyLmN1cnJlbnREYXRlRWxlbWVudCA9ICQoZWwpOwoJCQkJfQoJCQl9CgkJCWNhbGVuZGFyLmRhdGUuc2V0RGF0ZU9ubHkoZWwuZGF0ZSk7CgkJCWlzTmV3RGF0ZSA9IHRydWU7CgkJCWNhbGVuZGFyLnNob3VsZENsb3NlID0gISQoZWwpLmhhc0NsYXNzKCdvdGhlckRheScpOwoJCQl2YXIgaXNPdGhlck1vbnRoICAgICA9ICFjYWxlbmRhci5zaG91bGRDbG9zZTsKCQkJaWYgKGlzT3RoZXJNb250aCkgewoJCQkJY2FsZW5kYXIudXBkYXRlKGNhbGVuZGFyLmRhdGUpOwoJCQl9CgkJfSBlbHNlIHsKCQkJLy8gQ2xpY2tlZCBvbiBhbiBhY3Rpb24gYnV0dG9uCgkJCXZhciBkYXRlID0gbmV3IERhdGUoY2FsZW5kYXIuZGF0ZSk7CgoJCQlpZiAoZWwubmF2QWN0aW9uID09IENhbGVuZGFyLk5BVl9UT0RBWSkgewoJCQkJZGF0ZS5zZXREYXRlT25seShuZXcgRGF0ZSgpKTsKCQkJfQoKCQkJdmFyIHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7CgkJCXZhciBtb24gPSBkYXRlLmdldE1vbnRoKCk7CgkJCWZ1bmN0aW9uIHNldE1vbnRoKG0pIHsKCQkJCXZhciBkYXkgPSBkYXRlLmdldERhdGUoKTsKCQkJCXZhciBtYXggPSBkYXRlLmdldE1vbnRoRGF5cyhtKTsKCQkJCWlmIChkYXkgPiBtYXgpIGRhdGUuc2V0RGF0ZShtYXgpCgkJCQkJZGF0ZS5zZXRNb250aChtKTsKCQkJfQoJCQlzd2l0Y2ggKGVsLm5hdkFjdGlvbikgewoKCQkJCS8vIFByZXZpb3VzIFllYXIKCQkJCWNhc2UgQ2FsZW5kYXIuTkFWX1BSRVZJT1VTX1lFQVI6CgkJCQkJaWYgKHllYXIgPiBjYWxlbmRhci5taW5ZZWFyKQoJCQkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgLSAxKTsKCQkJCQlicmVhazsKCgkJCQkvLyBQcmV2aW91cyBNb250aAoJCQkJY2FzZSBDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEg6CgkJCQkJaWYgKG1vbiA+IDApIHsKCQkJCQkJc2V0TW9udGgobW9uIC0gMSk7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKHllYXItLSA+IGNhbGVuZGFyLm1pblllYXIpIHsKCQkJCQkJZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTsKCQkJCQkJc2V0TW9udGgoMTEpOwoJCQkJCX0KCQkJCQlicmVhazsKCgkJCQkvLyBUb2RheQoJCQkJY2FzZSBDYWxlbmRhci5OQVZfVE9EQVk6CgkJCQkJYnJlYWs7CgoJCQkJLy8gTmV4dCBNb250aAoJCQkJY2FzZSBDYWxlbmRhci5OQVZfTkVYVF9NT05USDoKCQkJCQlpZiAobW9uIDwgMTEpIHsKCQkJCQkJc2V0TW9udGgobW9uICsgMSk7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKHllYXIgPCBjYWxlbmRhci5tYXhZZWFyKSB7CgkJCQkJCWRhdGUuc2V0RnVsbFllYXIoeWVhciArIDEpOwoJCQkJCQlzZXRNb250aCgwKTsKCQkJCQl9CgkJCQkJYnJlYWs7CgoJCQkJLy8gTmV4dCBZZWFyCgkJCQljYXNlIENhbGVuZGFyLk5BVl9ORVhUX1lFQVI6CgkJCQkJaWYgKHllYXIgPCBjYWxlbmRhci5tYXhZZWFyKQoJCQkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxKTsKCQkJCQlicmVhazsKCgkJCX0KCgkJCWlmICghZGF0ZS5lcXVhbHNUbyhjYWxlbmRhci5kYXRlKSkgewoJCQkJY2FsZW5kYXIuc2hvdWxkQ2xvc2UgPSBmYWxzZTsKCQkJCWNhbGVuZGFyLnNldERhdGUoZGF0ZSk7CgkJCQlpc05ld0RhdGUgPSB0cnVlOwoJCQl9IGVsc2UgaWYgKGVsLm5hdkFjdGlvbiA9PSAwKSB7CgkJCQlpc05ld0RhdGUgPSAoY2FsZW5kYXIuc2hvdWxkQ2xvc2UgPSB0cnVlKTsKCQkJfQoJCX0KCgkJaWYgKGlzTmV3RGF0ZSkgZXZlbnQgJiYgY2FsZW5kYXIuY2FsbFNlbGVjdEhhbmRsZXIoKTsKCQlpZiAoY2FsZW5kYXIuc2hvdWxkQ2xvc2UpIGV2ZW50ICYmIGNhbGVuZGFyLmNhbGxDbG9zZUhhbmRsZXIoKTsKCQkkKGRvY3VtZW50KS51bmJpbmQoJ21vdXNldXAnLCBDYWxlbmRhci5oYW5kbGVNb3VzZVVwRXZlbnQpOwoJCXJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoJfTsKCglDYWxlbmRhci5kZWZhdWx0U2VsZWN0SGFuZGxlciA9IGZ1bmN0aW9uKGNhbGVuZGFyKSB7CgkJaWYgKCFjYWxlbmRhci5kYXRlRmllbGQpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gVXBkYXRlIGRhdGVGaWVsZCB2YWx1ZQoJCShjYWxlbmRhci5kYXRlRmllbGQuYXR0cigndGFnTmFtZScpID09ICdJTlBVVCcpCgkJCT8gY2FsZW5kYXIuZGF0ZUZpZWxkLnZhbChjYWxlbmRhci5kYXRlLnByaW50KGNhbGVuZGFyLmRhdGVGb3JtYXQpKQoJCQk6IGNhbGVuZGFyLmRhdGVGaWVsZC5odG1sKGNhbGVuZGFyLmRhdGUucHJpbnQoY2FsZW5kYXIuZGF0ZUZvcm1hdCkpOwoKCQkvLyBUcmlnZ2VyIHRoZSBvbmNoYW5nZSBjYWxsYmFjayBvbiB0aGUgZGF0ZUZpZWxkLCBpZiBvbmUgaGFzIGJlZW4gZGVmaW5lZAoJCWNhbGVuZGFyLmRhdGVGaWVsZC50cmlnZ2VyKCdjaGFuZ2UnKTsKCgkJLy8gQ2FsbCB0aGUgY2xvc2UgaGFuZGxlciwgaWYgbmVjZXNzYXJ5CgkJaWYgKGNhbGVuZGFyLnNob3VsZENsb3NlKSB7CgkJCWNhbGVuZGFyLmNhbGxDbG9zZUhhbmRsZXIoKTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKCUNhbGVuZGFyLmRlZmF1bHRDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbihjYWxlbmRhcikgewoJCWNhbGVuZGFyLmhpZGUoKTsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gQ2FsZW5kYXIgSW5zdGFuY2UKCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJQ2FsZW5kYXIucHJvdG90eXBlID0gewoJCS8vIFRoZSBIVE1MIENvbnRhaW5lciBFbGVtZW50CgkJY29udGFpbmVyOiBudWxsLAoKCQkvLyBEYXRlcwoJCWRhdGU6IG51bGwsCgkJY3VycmVudERhdGVFbGVtZW50OiBudWxsLAoKCQkvLyBTdGF0dXMKCQlzaG91bGRDbG9zZTogZmFsc2UsCgkJaXNQb3B1cDogdHJ1ZSwKCgkJLyoqCgkJICogVXBkYXRlIC8gKFJlKWluaXRpYWxpemUgQ2FsZW5kYXIKCQkgKiBAcGFyYW0gZGF0ZQoJCSAqLwoJCXVwZGF0ZTogZnVuY3Rpb24oZGF0ZSkgewoJCQl2YXIgY2FsZW5kYXIgICA9IHRoaXM7CgkJCXZhciB0b2RheSAgICAgID0gbmV3IERhdGUoKTsKCQkJdmFyIHRoaXNZZWFyICAgPSB0b2RheS5nZXRGdWxsWWVhcigpOwoJCQl2YXIgdGhpc01vbnRoICA9IHRvZGF5LmdldE1vbnRoKCk7CgkJCXZhciB0aGlzRGF5ICAgID0gdG9kYXkuZ2V0RGF0ZSgpOwoJCQl2YXIgbW9udGggICAgICA9IGRhdGUuZ2V0TW9udGgoKTsKCQkJdmFyIGRheU9mTW9udGggPSBkYXRlLmdldERhdGUoKTsKCgkJCS8vIEVuc3VyZSBkYXRlIGlzIHdpdGhpbiB0aGUgZGVmaW5lZCByYW5nZQoJCQlpZiAoZGF0ZS5nZXRGdWxsWWVhcigpIDwgdGhpcy5taW5ZZWFyKSB7CgkJCQlkYXRlLnNldEZ1bGxZZWFyKHRoaXMubWluWWVhcik7CgkJCX0gZWxzZSBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpID4gdGhpcy5tYXhZZWFyKSB7CgkJCQlkYXRlLnNldEZ1bGxZZWFyKHRoaXMubWF4WWVhcik7CgkJCX0KCQkJdGhpcy5kYXRlID0gbmV3IERhdGUoZGF0ZSk7CgoJCQkvLyBDYWxjdWxhdGUgdGhlIGZpcnN0IGRheSB0byBkaXNwbGF5IChpbmNsdWRpbmcgdGhlIHByZXZpb3VzIG1vbnRoKQoJCQlkYXRlLnNldERhdGUoMSk7CgkJCXZhciBkYXkxID0gKGRhdGUuZ2V0RGF5KCkgLSB0aGlzLmZpcnN0RGF5T2ZXZWVrKSAlIDc7CgkJCWlmIChkYXkxIDwgMCkgZGF5MSArPSA3OwoJCQlkYXRlLnNldERhdGUoLWRheTEpOwoJCQlkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTsKCgkJCS8vIEZpbGwgaW4gdGhlIGRheXMgb2YgdGhlIG1vbnRoCgkJCSQoJ3Rib2R5IHRyJywgdGhpcy5jb250YWluZXIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQl2YXIgcm93SGFzRGF5cyA9IGZhbHNlOwoJCQkJJCh0aGlzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkJdmFyIGRheSAgICAgICAgICAgID0gZGF0ZS5nZXREYXRlKCk7CgkJCQkJdmFyIGRheU9mV2VlayAgICAgID0gZGF0ZS5nZXREYXkoKTsKCQkJCQl2YXIgaXNDdXJyZW50TW9udGggPSAoZGF0ZS5nZXRNb250aCgpID09IG1vbnRoKTsKCgkJCQkJLy8gUmVzZXQgY2xhc3NlcyBvbiB0aGUgY2VsbAoJCQkJCWNlbGwgPSAkKHRoaXMpOwoJCQkJCWNlbGwucmVtb3ZlQXR0cignY2xhc3MnKTsKCQkJCQljZWxsWzBdLmRhdGUgPSBuZXcgRGF0ZShkYXRlKTsKCQkJCQljZWxsLmh0bWwoZGF5KTsKCgkJCQkJLy8gQWNjb3VudCBmb3IgZGF5cyBvZiB0aGUgbW9udGggb3RoZXIgdGhhbiB0aGUgY3VycmVudCBtb250aAoJCQkJCWlmICghaXNDdXJyZW50TW9udGgpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnb3RoZXJEYXknKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlyb3dIYXNEYXlzID0gdHJ1ZTsKCQkJCQl9CgoJCQkJCS8vIEVuc3VyZSB0aGUgY3VycmVudCBkYXkgaXMgc2VsZWN0ZWQKCQkJCQlpZiAoaXNDdXJyZW50TW9udGggJiYgZGF5ID09IGRheU9mTW9udGgpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKCQkJCQkJY2FsZW5kYXIuY3VycmVudERhdGVFbGVtZW50ID0gY2VsbDsKCQkJCQl9CgoJCQkJCS8vIFRvZGF5CgkJCQkJaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSA9PSB0aGlzWWVhciAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdGhpc01vbnRoICYmIGRheSA9PSB0aGlzRGF5KSB7CgkJCQkJCWNlbGwuYWRkQ2xhc3MoJ3RvZGF5Jyk7CgkJCQkJfQoKCQkJCQkvLyBXZWVrZW5kCgkJCQkJaWYgKGNhbGVuZGFyLndlZWtlbmQuaW5kZXhPZihkYXlPZldlZWsudG9TdHJpbmcoKSkgIT0gLTEpIHsKCQkJCQkJY2VsbC5hZGRDbGFzcygnd2Vla2VuZCcpOwoJCQkJCX0KCgkJCQkJLy8gU2V0IHRoZSBkYXRlIHRvIHRvbW1vcnJvdwoJCQkJCWRhdGUuc2V0RGF0ZShkYXkgKyAxKTsKCQkJCX0pOwoJCQkJLy8gSGlkZSB0aGUgZXh0cmEgcm93IGlmIGl0IGNvbnRhaW5zIG9ubHkgZGF5cyBmcm9tIGFub3RoZXIgbW9udGgKCQkJCSFyb3dIYXNEYXlzID8gJCh0aGlzKS5oaWRlKCkgOiAkKHRoaXMpLnNob3coKTsKCQkJfSk7CgoJCQkkKCd0ZC50aXRsZScsIHRoaXMuY29udGFpbmVyKS5odG1sKENhbGVuZGFyLk1PTlRIX05BTUVTW21vbnRoXSArICcgJyArIGNhbGVuZGFyLmRhdGUuZ2V0RnVsbFllYXIoKSk7CgkJfSwKCgkJY3JlYXRlOiBmdW5jdGlvbihwYXJlbnQpIHsKCgkJCS8vIElmIG5vIHBhcmVudCB3YXMgc3BlY2lmaWVkLCBhc3N1bWUgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgYSBwb3B1cCBjYWxlbmRhci4KCQkJdGhpcy5pc1BvcHVwID0gZmFsc2U7CgkJCWlmICghcGFyZW50KSB7CgkJCQlwYXJlbnQgPSAkKCdib2R5Jyk7CgkJCQl0aGlzLmlzUG9wdXAgPSB0cnVlOwoJCQl9CgoJCQkvLyBDYWxlbmRhciBUYWJsZQoJCQl2YXIgdGFibGUgPSAkKCc8dGFibGUgLz4nKTsKCgkJCS8vIENhbGVuZGFyIEhlYWRlcgoJCQl2YXIgdGhlYWQgPSAkKCc8dGhlYWQgLz4nKTsKCQkJdGFibGUuYXBwZW5kKHRoZWFkKTsKCgkJCS8vIFRpdGxlIFBsYWNlaG9sZGVyCgkJCXZhciByb3cgID0gJCgnPHRyIC8+Jyk7CgkJCXZhciBjZWxsID0gJCgnPHRkIGNvbHNwYW49IjciIGNsYXNzPSJ0aXRsZSIgLz4nKTsKCQkJcm93LmFwcGVuZChjZWxsKTsKCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBDYWxlbmRhciBOYXZpZ2F0aW9uCgkJCXJvdyA9ICQoJzx0ciAvPicpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csICcmI3gwMGFiOycsIDEsIENhbGVuZGFyLk5BVl9QUkVWSU9VU19ZRUFSKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MjAzOTsnLCAxLCBDYWxlbmRhci5OQVZfUFJFVklPVVNfTU9OVEgpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csIENhbGVuZGFyLlRPREFZLCAgICAzLCBDYWxlbmRhci5OQVZfVE9EQVkpOwoJCQl0aGlzLl9kcmF3QnV0dG9uQ2VsbChyb3csICcmI3gyMDNhOycsIDEsIENhbGVuZGFyLk5BVl9ORVhUX01PTlRIKTsKCQkJdGhpcy5fZHJhd0J1dHRvbkNlbGwocm93LCAnJiN4MDBiYjsnLCAxLCBDYWxlbmRhci5OQVZfTkVYVF9ZRUFSKTsKCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBEYXkgTmFtZXMKCQkJcm93ID0gJCgnPHRyIC8+Jyk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgNzsgKytpKSB7CgkJCQl2YXIgcmVhbERheSA9IChpICsgdGhpcy5maXJzdERheU9mV2VlaykgJSA3OwoJCQkJY2VsbCA9ICQoJzx0aCAvPicpLmh0bWwoQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTW3JlYWxEYXldKTsKCQkJCWlmICh0aGlzLndlZWtlbmQuaW5kZXhPZihyZWFsRGF5LnRvU3RyaW5nKCkpICE9IC0xKQoJCQkJCWNlbGwuYWRkQ2xhc3MoJ3dlZWtlbmQnKTsKCQkJCXJvdy5hcHBlbmQoY2VsbCk7CgkJCX0KCQkJdGhlYWQuYXBwZW5kKHJvdyk7CgoJCQkvLyBDYWxlbmRhciBEYXlzCgkJCXZhciB0Ym9keSA9IHRhYmxlLmFwcGVuZCgkKCc8dGJvZHkgLz4nKSk7CgkJCWZvciAoaSA9IDY7IGkgPiAwOyAtLWkpIHsKCQkJCXJvdyA9ICQoJzx0ciAvPicpLmFkZENsYXNzKCdkYXlzJyk7CgkJCQl0Ym9keS5hcHBlbmQocm93KTsKCQkJCWZvciAodmFyIGogPSA3OyBqID4gMDsgLS1qKSB7CgkJCQkJY2VsbCA9ICQoJzx0ZCAvPicpOwoJCQkJCWNlbGxbMF0uY2FsZW5kYXIgPSB0aGlzOwoJCQkJCXJvdy5hcHBlbmQoY2VsbCk7CgkJCQl9CgkJCX0KCgkJCS8vIENhbGVuZGFyIENvbnRhaW5lciAoZGl2KQoJCQl0aGlzLmNvbnRhaW5lciA9ICQoJzxkaXYgLz4nKS5hZGRDbGFzcygnY2FsZW5kYXInKS5hcHBlbmQodGFibGUpOwoJCQlpZiAodGhpcy5pc1BvcHVwKSB7CgkJCQl0aGlzLmNvbnRhaW5lci5jc3MoewoJCQkJCXBvc2l0aW9uOiAnYWJzb2x1dGUnLAoJCQkJCWRpc3BsYXk6ICdub25lJwoJCQkJfSkuYWRkQ2xhc3MoJ3BvcHVwJyk7CgkJCX0KCgkJCS8vIEluaXRpYWxpemUgQ2FsZW5kYXIKCQkJdGhpcy51cGRhdGUodGhpcy5kYXRlKTsKCgkJCS8vIE9ic2VydmUgdGhlIGNvbnRhaW5lciBmb3IgbW91c2Vkb3duIGV2ZW50cwoJCQl0aGlzLmNvbnRhaW5lci5tb3VzZWRvd24oQ2FsZW5kYXIuaGFuZGxlTW91c2VEb3duRXZlbnQpOwoKCQkJLy8gQXBwZW5kIHRvIHBhcmVudCBlbGVtZW50CgkJCXBhcmVudC5hcHBlbmQodGhpcy5jb250YWluZXIpOwoJCX0sCgoJCV9kcmF3QnV0dG9uQ2VsbDogZnVuY3Rpb24ocGFyZW50LCB0ZXh0LCBjb2xTcGFuLCBuYXZBY3Rpb24pIHsKCQkJdmFyIGNlbGwgPSAkKCc8dGQgLz4nKTsKCQkJaWYgKGNvbFNwYW4gPiAxKSBjZWxsWzBdLmNvbFNwYW4gPSBjb2xTcGFuOyAvLyBJRSBpc3N1ZSBhdHRyKCkKCQkJY2VsbC5hZGRDbGFzcygnYnV0dG9uJykuaHRtbCh0ZXh0KS5hdHRyKCd1bnNlbGVjdGFibGUnLCAnb24nKTsgLy8gSUU7CgkJCWNlbGxbMF0uY2FsZW5kYXIgICAgID0gdGhpczsKCQkJY2VsbFswXS5uYXZBY3Rpb24gICAgPSBuYXZBY3Rpb247CgkJCXBhcmVudC5hcHBlbmQoY2VsbCk7CgkJCXJldHVybiBjZWxsOwoJCX0sCgoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJLy8gQ2FsbGJhY2tzCgkJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJLyoqCgkJICogQ2FsbHMgdGhlIFNlbGVjdCBIYW5kbGVyIChpZiBkZWZpbmVkKQoJCSAqLwoJCWNhbGxTZWxlY3RIYW5kbGVyOiBmdW5jdGlvbigpIHsKCQkJaWYgKHRoaXMuc2VsZWN0SGFuZGxlcikgewoJCQkJdGhpcy5zZWxlY3RIYW5kbGVyKHRoaXMsIHRoaXMuZGF0ZS5wcmludCh0aGlzLmRhdGVGb3JtYXQpKTsKCQkJfQoJCX0sCgoJCS8qKgoJCSAqIENhbGxzIHRoZSBDbG9zZSBIYW5kbGVyIChpZiBkZWZpbmVkKQoJCSAqLwoJCWNhbGxDbG9zZUhhbmRsZXI6IGZ1bmN0aW9uKCkgewoJCQlpZiAodGhpcy5jbG9zZUhhbmRsZXIpIHsKCQkJCXRoaXMuY2xvc2VIYW5kbGVyKHRoaXMpOwoJCQl9CgkJfSwKCgkJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBDYWxlbmRhciBEaXNwbGF5IEZ1bmN0aW9ucwoJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJCS8qKgoJCSAqIFNob3dzIHRoZSBDYWxlbmRhcgoJCSAqLwoJCXNob3c6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmNvbnRhaW5lci5zaG93KCk7CgkJCWlmICh0aGlzLmlzUG9wdXApIHsKCQkJCXdpbmRvdy5fcG9wdXBDYWxlbmRhciA9IHRoaXM7CgkJCQkkKHRoaXMpLm1vdXNlZG93bihDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7CgkJCX0KCQl9LAoKCQkvKioKCQkgKiBTaG93cyB0aGUgY2FsZW5kYXIgYXQgdGhlIGdpdmVuIGFic29sdXRlIHBvc2l0aW9uCgkJICogQHBhcmFtIHgKCQkgKiBAcGFyYW0geQoJCSAqLwoJCXNob3dBdDogZnVuY3Rpb24gKHgsIHkpIHsKCQkJdGhpcy5jb250YWluZXIuY3NzKHsKCQkJCWxlZnQ6IHggKyAncHgnLAoJCQkJdG9wOiB5ICsgJ3B4JwoJCQl9KQoJCQl0aGlzLnNob3coKTsKCQl9LAoKCQkvKioKCQkgKiBTaG93cyB0aGUgQ2FsZW5kYXIgYXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBwcm92aWRlZCBlbGVtZW50CgkJICogQHBhcmFtIGVsZW1lbnQKCQkgKi8KCQlzaG93QXRFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CgkJCXZhciBvZmZzZXQgPSBlbGVtZW50Lm9mZnNldCgpOwoJCQl0aGlzLnNob3dBdChvZmZzZXQubGVmdCwgb2Zmc2V0LnRvcCk7CgkJfSwKCgkJLyoqCgkJICogSGlkZXMgdGhlIENhbGVuZGFyCgkJICovCgkJaGlkZTogZnVuY3Rpb24oKSB7CgkJCWlmICh0aGlzLmlzUG9wdXApIHsKCQkJCSQodGhpcykudW5iaW5kKCdtb3VzZWRvd24nLCBDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7CgkJCX0KCQkJdGhpcy5jb250YWluZXIuaGlkZSgpOwoJCX0sCgoJCS8qKgoJCSAqIFRyaWVzIHRvIGlkZW50aWZ5IHRoZSBkYXRlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgSWYgc3VjY2Vzc2Z1bCBpdCBhbHNvCgkJICogY2FsbHMgdGhpcy5zZXREYXRlIHdoaWNoIG1vdmVzIHRoZSBjYWxlbmRhciB0byB0aGUgZ2l2ZW4gZGF0ZS4KCQkgKiBAcGFyYW0gc3RyCgkJICogQHBhcmFtIGZvcm1hdAoJCSAqLwoJCXBhcnNlRGF0ZTogZnVuY3Rpb24oc3RyLCBmb3JtYXQpIHsKCQkJaWYgKCFmb3JtYXQpIHsKCQkJCWZvcm1hdCA9IHRoaXMuZGF0ZUZvcm1hdDsKCQkJfQoJCQl0aGlzLnNldERhdGUoRGF0ZS5wYXJzZURhdGUoc3RyLCBmb3JtYXQpKTsKCQl9LAoKCQlzZXREYXRlOiBmdW5jdGlvbihkYXRlKSB7CgkJCWlmICghZGF0ZS5lcXVhbHNUbyh0aGlzLmRhdGUpKQoJCQkJdGhpcy51cGRhdGUoZGF0ZSk7CgkJfSwKCgkJc2V0UmFuZ2U6IGZ1bmN0aW9uKG1pblllYXIsIG1heFllYXIpIHsKCQkJdGhpcy5taW5ZZWFyID0gbWluWWVhcjsKCQkJdGhpcy5tYXhZZWFyID0gbWF4WWVhcjsKCQl9Cgl9CgoJLy8gZ2xvYmFsIG9iamVjdCB0aGF0IHJlbWVtYmVycyB0aGUgY2FsZW5kYXIKCXdpbmRvdy5fcG9wdXBDYWxlbmRhciA9IG51bGw7CgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCS8vIERhdGUgT2JqZWN0IFBhdGNoZXMKCS8vIFRoaXMgaXMgcHJldHR5IG11Y2ggdW50b3VjaGVkIGZyb20gdGhlIG9yaWdpbmFsLgoJLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCURhdGUuREFZU19JTl9NT05USCA9IG5ldyBBcnJheSgzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxKTsKCURhdGUuU0VDT05EICAgICAgICA9IDEwMDA7IC8qIG1pbGxpc2Vjb25kcyAqLwoJRGF0ZS5NSU5VVEUgICAgICAgID0gNjAgKiBEYXRlLlNFQ09ORDsKCURhdGUuSE9VUiAgICAgICAgICA9IDYwICogRGF0ZS5NSU5VVEU7CglEYXRlLkRBWSAgICAgICAgICAgPSAyNCAqIERhdGUuSE9VUjsKCURhdGUuV0VFSyAgICAgICAgICA9ICA3ICogRGF0ZS5EQVk7CgoJLy8gUGFyc2VzIERhdGUKCURhdGUucGFyc2VEYXRlID0gZnVuY3Rpb24oc3RyLCBmbXQpIHsKCQl2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOwoJCXZhciB5ICAgICA9IDA7CgkJdmFyIG0gICAgID0gLTE7CgkJdmFyIGQgICAgID0gMDsKCQl2YXIgYSAgICAgPSBzdHIuc3BsaXQoL1xXKy8pOwoJCXZhciBiICAgICA9IGZtdC5tYXRjaCgvJS4vZyk7CgkJdmFyIGkgICAgID0gMCwgaiA9IDA7CgkJdmFyIGhyICAgID0gMDsKCQl2YXIgbWluICAgPSAwOwoKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoIWFbaV0pIGNvbnRpbnVlOwoJCQlzd2l0Y2ggKGJbaV0pIHsKCQkJCWNhc2UgIiVkIjoKCQkJCWNhc2UgIiVlIjoKCQkJCQlkID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJW0iOgoJCQkJCW0gPSBwYXJzZUludChhW2ldLCAxMCkgLSAxOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVkiOgoJCQkJY2FzZSAiJXkiOgoJCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkJKHkgPCAxMDApICYmICh5ICs9ICh5ID4gMjkpID8gMTkwMCA6IDIwMDApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJWIiOgoJCQkJY2FzZSAiJUIiOgoJCQkJCWZvciAoaiA9IDA7IGogPCAxMjsgKytqKSB7CgkJCQkJCWlmIChDYWxlbmRhci5NT05USF9OQU1FU1tqXS5zdWJzdHIoMCwgYVtpXS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT0gYVtpXS50b0xvd2VyQ2FzZSgpKSB7CgkJCQkJCQltID0gajsKCQkJCQkJCWJyZWFrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJUgiOgoJCQkJY2FzZSAiJUkiOgoJCQkJY2FzZSAiJWsiOgoJCQkJY2FzZSAiJWwiOgoJCQkJCWhyID0gcGFyc2VJbnQoYVtpXSwgMTApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJVAiOgoJCQkJY2FzZSAiJXAiOgoJCQkJCWlmICgvcG0vaS50ZXN0KGFbaV0pICYmIGhyIDwgMTIpCgkJCQkJCWhyICs9IDEyOwoJCQkJCWVsc2UgaWYgKC9hbS9pLnRlc3QoYVtpXSkgJiYgaHIgPj0gMTIpCgkJCQkJCWhyIC09IDEyOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAiJU0iOgoJCQkJCW1pbiA9IHBhcnNlSW50KGFbaV0sIDEwKTsKCQkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoaXNOYU4oeSkpIHkgPSB0b2RheS5nZXRGdWxsWWVhcigpOwoJCWlmIChpc05hTihtKSkgbSA9IHRvZGF5LmdldE1vbnRoKCk7CgkJaWYgKGlzTmFOKGQpKSBkID0gdG9kYXkuZ2V0RGF0ZSgpOwoJCWlmIChpc05hTihocikpIGhyID0gdG9kYXkuZ2V0SG91cnMoKTsKCQlpZiAoaXNOYU4obWluKSkgbWluID0gdG9kYXkuZ2V0TWludXRlcygpOwoJCWlmICh5ICE9IDAgJiYgbSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQl5ID0gMDsgbSA9IC0xOyBkID0gMDsKCQlmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgewoJCQlpZiAoYVtpXS5zZWFyY2goL1thLXpBLVpdKy8pICE9IC0xKSB7CgkJCQl2YXIgdCA9IC0xOwoJCQkJZm9yIChqID0gMDsgaiA8IDEyOyArK2opIHsKCQkJCQlpZiAoQ2FsZW5kYXIuTU9OVEhfTkFNRVNbal0uc3Vic3RyKDAsIGFbaV0ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09IGFbaV0udG9Mb3dlckNhc2UoKSkgewoJCQkJCQl0ID0gajsgYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQkJaWYgKHQgIT0gLTEpIHsKCQkJCQlpZiAobSAhPSAtMSkgewoJCQkJCQlkID0gbSsxOwoJCQkJCX0KCQkJCQltID0gdDsKCQkJCX0KCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPD0gMTIgJiYgbSA9PSAtMSkgewoJCQkJbSA9IGFbaV0tMTsKCQkJfSBlbHNlIGlmIChwYXJzZUludChhW2ldLCAxMCkgPiAzMSAmJiB5ID09IDApIHsKCQkJCXkgPSBwYXJzZUludChhW2ldLCAxMCk7CgkJCQkoeSA8IDEwMCkgJiYgKHkgKz0gKHkgPiAyOSkgPyAxOTAwIDogMjAwMCk7CgkJCX0gZWxzZSBpZiAoZCA9PSAwKSB7CgkJCQlkID0gYVtpXTsKCQkJfQoJCX0KCQlpZiAoeSA9PSAwKQoJCQl5ID0gdG9kYXkuZ2V0RnVsbFllYXIoKTsKCQlpZiAobSAhPSAtMSAmJiBkICE9IDApCgkJCXJldHVybiBuZXcgRGF0ZSh5LCBtLCBkLCBociwgbWluLCAwKTsKCQlyZXR1cm4gdG9kYXk7Cgl9OwoKCS8vIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBjdXJyZW50IG1vbnRoCglEYXRlLnByb3RvdHlwZS5nZXRNb250aERheXMgPSBmdW5jdGlvbihtb250aCkgewoJCXZhciB5ZWFyID0gdGhpcy5nZXRGdWxsWWVhcigpCgkJaWYgKHR5cGVvZiBtb250aCA9PSAidW5kZWZpbmVkIikKCQkJbW9udGggPSB0aGlzLmdldE1vbnRoKCkKCQlpZiAoKCgwID09ICh5ZWFyICUgNCkpICYmICggKDAgIT0gKHllYXIgJSAxMDApKSB8fCAoMCA9PSAoeWVhciAlIDQwMCkpKSkgJiYgbW9udGggPT0gMSkKCQkJcmV0dXJuIDI5CgkJZWxzZQoJCQlyZXR1cm4gRGF0ZS5EQVlTX0lOX01PTlRIW21vbnRoXQoJfTsKCgkvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5IGluIHRoZSB5ZWFyCglEYXRlLnByb3RvdHlwZS5nZXREYXlPZlllYXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbm93ID0gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMuZ2V0RGF0ZSgpLCAwLCAwLCAwKTsKCQl2YXIgdGhlbiA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgMCwgMCwgMCwgMCwgMCk7CgkJdmFyIHRpbWUgPSBub3cgLSB0aGVuOwoJCXJldHVybiBNYXRoLmZsb29yKHRpbWUgLyBEYXRlLkRBWSk7Cgl9OwoKCS8qKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHdlZWsgaW4geWVhciwgYXMgZGVmaW5lZCBpbiBJU08gODYwMS4gKi8KCURhdGUucHJvdG90eXBlLmdldFdlZWtOdW1iZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgZCA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250aCgpLCB0aGlzLmdldERhdGUoKSwgMCwgMCwgMCk7CgkJdmFyIERvVyA9IGQuZ2V0RGF5KCk7CgkJZC5zZXREYXRlKGQuZ2V0RGF0ZSgpIC0gKERvVyArIDYpICUgNyArIDMpOyAvLyBOZWFyZXN0IFRodQoJCXZhciBtcyA9IGQudmFsdWVPZigpOyAvLyBHTVQKCQlkLnNldE1vbnRoKDApOwoJCWQuc2V0RGF0ZSg0KTsgLy8gVGh1IGluIFdlZWsgMQoJCXJldHVybiBNYXRoLnJvdW5kKChtcyAtIGQudmFsdWVPZigpKSAvICg3ICogODY0ZTUpKSArIDE7Cgl9OwoKCS8qKiBDaGVja3MgZGF0ZSBhbmQgdGltZSBlcXVhbGl0eSAqLwoJRGF0ZS5wcm90b3R5cGUuZXF1YWxzVG8gPSBmdW5jdGlvbihkYXRlKSB7CgkJcmV0dXJuICgodGhpcy5nZXRGdWxsWWVhcigpID09IGRhdGUuZ2V0RnVsbFllYXIoKSkgJiYKCQkJKHRoaXMuZ2V0TW9udGgoKSA9PSBkYXRlLmdldE1vbnRoKCkpICYmCgkJCSh0aGlzLmdldERhdGUoKSA9PSBkYXRlLmdldERhdGUoKSkgJiYKCQkJKHRoaXMuZ2V0SG91cnMoKSA9PSBkYXRlLmdldEhvdXJzKCkpICYmCgkJCSh0aGlzLmdldE1pbnV0ZXMoKSA9PSBkYXRlLmdldE1pbnV0ZXMoKSkpOwoJfTsKCgkvKiogU2V0IG9ubHkgdGhlIHllYXIsIG1vbnRoLCBkYXRlIHBhcnRzIChrZWVwIGV4aXN0aW5nIHRpbWUpICovCglEYXRlLnByb3RvdHlwZS5zZXREYXRlT25seSA9IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgdG1wID0gbmV3IERhdGUoZGF0ZSk7CgkJdGhpcy5zZXREYXRlKDEpOwoJCXRoaXMuc2V0RnVsbFllYXIodG1wLmdldEZ1bGxZZWFyKCkpOwoJCXRoaXMuc2V0TW9udGgodG1wLmdldE1vbnRoKCkpOwoJCXRoaXMuc2V0RGF0ZSh0bXAuZ2V0RGF0ZSgpKTsKCX07CgovKiogQWRkZWQgYnkgTmFOOiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBEYXRlLmZvcm1hdCgpCiAqIHN0cmluZyBmb3JtYXQgKCBzdHJpbmcgZm9ybWF0ICkKICogRm9ybWF0dGluZyBydWxlcyBhY2NvcmRpbmcgdG8gaHR0cDovL3BocC5uZXQvc3RyZnRpbWUKICoKICogQ29weXJpZ2h0IChDKSAyMDA2ICBEYW8gR290dHdhbGQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQogKgogKiBDb250YWN0IGluZm9ybWF0aW9uOgogKiAgIERhbyBHb3R0d2FsZCAgPGRhbyBhdCBkZXNpZ24tbm9pci5kZT4KICoKICogQHZlcnNpb24gIDAuNwogKiBAdG9kbyAgICAgJWcsICVHLCAlVSwgJVYsICVXLCAleiwgbW9yZS9iZXR0ZXIgbG9jYWxpemF0aW9uCiAqIEB1cmwgICAgICBodHRwOi8vZGVzaWduLW5vaXIuZGUvd2ViZGV2L0pTL0RhdGUuZm9ybWF0LwogKi8KCnZhciBfbGFuZyA9IChuYXZpZ2F0b3Iuc3lzdGVtTGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSB8fCAnJykucmVwbGFjZSgvLS4qLywnJyk7CnN3aXRjaCAoX2xhbmcpIHsKCWNhc2UgJ2RlJzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ1Nvbm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ10sCgkJCW1vbnRoczogWydKYW51YXInLCdGZWJydWFyJywnTVx1MDBFNHJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ10sCgkJCWRhdGU6ICclZS4lbS4lWScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwoJY2FzZSAnZXMnOgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnRG9taW5nbycsJ0x1bmVzJywnTWFydGVzJywnTWmOcmNvbGVzJywnSnVldmVzJywnVmllcm5lcycsJ1NcdTAwRTFiYWRvJ10sCgkJCW1vbnRoczogWydlbmVybycsJ2ZlYnJlcm8nLCdtYXJjaGEnLCdhYnJpbCcsJ3B1ZWRlJywnanVuaW8nLCdqdWxpbycsJ2Fnb3N0bycsJ3NlcHRpZW1icmUnLCdvY3R1YnJlJywnbm92aWVtYnJlJywnZGljaWVtYnJlJ10sCgkJCWRhdGU6ICclZS4lbS4lWScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwoJY2FzZSAnZnInOgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnZGltYW5jaGUnLCdsdW5kaScsJ21hcmRpJywnbWVyY3JlZGknLCdqZXVkaScsJ3ZlbmRyZWRpJywnc2FtZWRpJ10sCgkJCW1vbnRoczogWydqYW52aWVyJywnZlx1MDBFOXZyaWVyJywnbWFycycsJ2F2cmlsJywnbWFpJywnanVpbicsJ2p1aWxsZXQnLCdhb1x1MDBGQnQnLCdzZXB0ZW1icmUnLCdvY3RvYnJlJywnbm92ZW1icmUnLCdkZWNlbWJyZSddLAoJCQlkYXRlOiAnJWUvJW0vJVknLAoJCQl0aW1lOiAnJUg6JU06JVMnfTsKCQlicmVhazsKCWNhc2UgJ2l0JzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ2RvbWVuaWNhJywnbHVuZWRcdTAwRUMnLCdtYXJ0ZWRcdTAwRUMnLCdtZXJjb2xlZFx1MDBFQycsJ2dpb3ZlZFx1MDBFQycsJ3ZlbmVyZFx1MDBFQycsJ3NhYmF0byddLAoJCQltb250aHM6IFsnZ2VubmFpbycsJ2ZlYmJyYWlvJywnbWFyem8nLCdhcHJpbGUnLCdtYWdnaW8nLCdnaXVnbm8nLCdsdWdsaW8nLCdhZ29zdG8nLCdzZXR0ZW1icmUnLCdvdHRvYnJlJywnbm92ZW1icmUnLCdkaWNlbWJyZSddLAoJCQlkYXRlOiAnJWUvJW0vJXknLAoJCQl0aW1lOiAnJUguJU0uJVMnfTsKCQlicmVhazsKCWNhc2UgJ3B0JzoKCQlEYXRlLl9sMTBuID0gewoJCQlkYXlzOiBbJ0RvbWluZ28nLCdTZWd1bmRhLWZlaXJhJywnVGVyXHUwMEU3YS1mZWlyYScsJ1F1YXJ0YS1mZWlyYScsJ1F1aW50YS1mZWlyYScsJ1NleHRhLWZlaXJhJywnU1x1MDBFMWJhZG8nXSwKCQkJbW9udGhzOiBbJ0phbmVpcm8nLCdGZXZlcmVpcm8nLCdNYXJcdTAwRTdvJywnQWJyaWwnLCdNYWlvJywnSnVuaG8nLCdKdWxobycsJ0Fnb3N0bycsJ1NldGVtYnJvJywnT3V0dWJybycsJ05vdmVtYnJvJywnRGV6ZW1icm8nXSwKCQkJZGF0ZTogJyVlLyVtLyV5JywKCQkJdGltZTogJyVILiVNLiVTJ307CgkJYnJlYWs7CgljYXNlICdlbic6CglkZWZhdWx0OgoJCURhdGUuX2wxMG4gPSB7CgkJCWRheXM6IFsnU3VuZGF5JywnTW9uZGF5JywnVHVlc2RheScsJ1dlZG5lc2RheScsJ1RodXJzZGF5JywnRnJpZGF5JywnU2F0dXJkYXknXSwKCQkJbW9udGhzOiBbJ0phbnVhcnknLCdGZWJydWFyeScsJ01hcmNoJywnQXByaWwnLCdNYXknLCdKdW5lJywnSnVseScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09jdG9iZXInLCdOb3ZlbWJlcicsJ0RlY2VtYmVyJ10sCgkJCWRhdGU6ICclWS0lbS0lZScsCgkJCXRpbWU6ICclSDolTTolUyd9OwoJCWJyZWFrOwp9CkRhdGUuX3BhZCA9IGZ1bmN0aW9uKG51bSwgbGVuKSB7Cglmb3IgKHZhciBpID0gMTsgaSA8PSBsZW47IGkrKykKCQlpZiAobnVtIDwgTWF0aC5wb3coMTAsIGkpKQoJCQlyZXR1cm4gbmV3IEFycmF5KGxlbi1pKzEpLmpvaW4oMCkgKyBudW07CglyZXR1cm4gbnVtOwp9OwpEYXRlLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKCWlmIChmb3JtYXQuaW5kZXhPZignJSUnKSA+IC0xKSB7IC8vIGEgbGl0ZXJhbCBgJScgY2hhcmFjdGVyCgkJZm9ybWF0ID0gZm9ybWF0LnNwbGl0KCclJScpOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgaSsrKQoJCQlmb3JtYXRbaV0gPSB0aGlzLmZvcm1hdChmb3JtYXRbaV0pOwoJCXJldHVybiBmb3JtYXQuam9pbignJScpOwoJfQoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVEL2csICclbS8lZC8leScpOyAvLyBzYW1lIGFzICVtLyVkLyV5Cglmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvJXIvZywgJyVJOiVNOiVTICVwJyk7IC8vIHRpbWUgaW4gYS5tLiBhbmQgcC5tLiBub3RhdGlvbgoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVSL2csICclSDolTTolUycpOyAvLyB0aW1lIGluIDI0IGhvdXIgbm90YXRpb24KCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8lVC9nLCAnJUg6JU06JVMnKTsgLy8gY3VycmVudCB0aW1lLCBlcXVhbCB0byAlSDolTTolUwoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyV4L2csIERhdGUuX2wxMG4uZGF0ZSk7IC8vIHByZWZlcnJlZCBkYXRlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgdGltZQoJZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoLyVYL2csIERhdGUuX2wxMG4udGltZSk7IC8vIHByZWZlcnJlZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgZGF0ZQoJdmFyIGRhdGVPYmogPSB0aGlzOwoJcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC8lKFthQWJoQmNDZGVnR0hJam1NbnBTdHVVVld3eVl6Wl0pL2csIGZ1bmN0aW9uKG1hdGNoMCwgbWF0Y2gxKSB7CgkJcmV0dXJuIGRhdGVPYmouZm9ybWF0X2NhbGxiYWNrKG1hdGNoMCwgbWF0Y2gxKTsKCX0pOwp9CkRhdGUucHJvdG90eXBlLmZvcm1hdF9jYWxsYmFjayA9IGZ1bmN0aW9uKG1hdGNoMCwgbWF0Y2gxKSB7Cglzd2l0Y2ggKG1hdGNoMSkgewoJCWNhc2UgJ2EnOiAvLyBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZQoJCQlyZXR1cm4gRGF0ZS5fbDEwbi5kYXlzW3RoaXMuZ2V0RGF5KCldLnN1YnN0cigwLDMpOwoJCWNhc2UgJ0EnOiAvLyBmdWxsIHdlZWtkYXkgbmFtZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlCgkJCXJldHVybiBEYXRlLl9sMTBuLmRheXNbdGhpcy5nZXREYXkoKV07CgkJY2FzZSAnYic6CgkJY2FzZSAnaCc6IC8vIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZQoJCQlyZXR1cm4gRGF0ZS5fbDEwbi5tb250aHNbdGhpcy5nZXRNb250aCgpXS5zdWJzdHIoMCwzKTsKCQljYXNlICdCJzogLy8gZnVsbCBtb250aCBuYW1lIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIERhdGUuX2wxMG4ubW9udGhzW3RoaXMuZ2V0TW9udGgoKV07CgkJY2FzZSAnYyc6IC8vIHByZWZlcnJlZCBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIHRoaXMudG9Mb2NhbGVTdHJpbmcoKTsKCQljYXNlICdDJzogLy8gY2VudHVyeSBudW1iZXIgKHRoZSB5ZWFyIGRpdmlkZWQgYnkgMTAwIGFuZCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlciwgcmFuZ2UgMDAgdG8gOTkpCgkJCXJldHVybiBNYXRoLmZsb29yKHRoaXMuZ2V0RnVsbFllYXIoKSAvIDEwMCk7CgkJY2FzZSAnZCc6IC8vIGRheSBvZiB0aGUgbW9udGggYXMgYSBkZWNpbWFsIG51bWJlciAocmFuZ2UgMDEgdG8gMzEpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXREYXRlKCksIDIpOwoJCWNhc2UgJ2UnOiAvLyBkYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIsIGEgc2luZ2xlIGRpZ2l0IGlzIHByZWNlZGVkIGJ5IGEgc3BhY2UgKHJhbmdlICcgMScgdG8gJzMxJykKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldERhdGUoKSwgMik7CgkJLypjYXNlICdnJzogLy8gbGlrZSAlRywgYnV0IHdpdGhvdXQgdGhlIGNlbnR1cnkKCQkJcmV0dXJuIDsKCQljYXNlICdHJzogLy8gVGhlIDQtZGlnaXQgeWVhciBjb3JyZXNwb25kaW5nIHRvIHRoZSBJU08gd2VlayBudW1iZXIgKHNlZSAlVikuIFRoaXMgaGFzIHRoZSBzYW1lIGZvcm1hdCBhbmQgdmFsdWUgYXMgJVksIGV4Y2VwdCB0aGF0IGlmIHRoZSBJU08gd2VlayBudW1iZXIgYmVsb25ncyB0byB0aGUgcHJldmlvdXMgb3IgbmV4dCB5ZWFyLCB0aGF0IHllYXIgaXMgdXNlZCBpbnN0ZWFkCgkJCXJldHVybiA7Ki8KCQljYXNlICdIJzogLy8gaG91ciBhcyBhIGRlY2ltYWwgbnVtYmVyIHVzaW5nIGEgMjQtaG91ciBjbG9jayAocmFuZ2UgMDAgdG8gMjMpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRIb3VycygpLCAyKTsKCQljYXNlICdJJzogLy8gaG91ciBhcyBhIGRlY2ltYWwgbnVtYmVyIHVzaW5nIGEgMTItaG91ciBjbG9jayAocmFuZ2UgMDEgdG8gMTIpCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRIb3VycygpICUgMTIsIDIpOwoJCWNhc2UgJ2onOiAvLyBkYXkgb2YgdGhlIHllYXIgYXMgYSBkZWNpbWFsIG51bWJlciAocmFuZ2UgMDAxIHRvIDM2NikKCQkJcmV0dXJuIERhdGUuX3BhZCh0aGlzLmdldE1vbnRoKCkgKiAzMCArIE1hdGguY2VpbCh0aGlzLmdldE1vbnRoKCkgLyAyKSArIHRoaXMuZ2V0RGF5KCkgLSAyICogKHRoaXMuZ2V0TW9udGgoKSA+IDEpICsgKCEodGhpcy5nZXRGdWxsWWVhcigpICUgNDAwKSB8fCAoISh0aGlzLmdldEZ1bGxZZWFyKCkgJSA0KSAmJiB0aGlzLmdldEZ1bGxZZWFyKCkgJSAxMDApKSwgMyk7CgkJY2FzZSAnbSc6IC8vIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgKHJhbmdlIDAxIHRvIDEyKQoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0TW9udGgoKSArIDEsIDIpOwoJCWNhc2UgJ00nOiAvLyBtaW51dGUgYXMgYSBkZWNpbWFsIG51bWJlcgoJCQlyZXR1cm4gRGF0ZS5fcGFkKHRoaXMuZ2V0TWludXRlcygpLCAyKTsKCQljYXNlICduJzogLy8gbmV3bGluZSBjaGFyYWN0ZXIKCQkJcmV0dXJuICdcbic7CgkJY2FzZSAncCc6IC8vIGVpdGhlciBgYW0nIG9yIGBwbScgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiB0aW1lIHZhbHVlLCBvciB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmdzIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQkJcmV0dXJuIHRoaXMuZ2V0SG91cnMoKSA8IDEyID8gJ2FtJyA6ICdwbSc7CgkJY2FzZSAnUyc6IC8vIHNlY29uZCBhcyBhIGRlY2ltYWwgbnVtYmVyCgkJCXJldHVybiBEYXRlLl9wYWQodGhpcy5nZXRTZWNvbmRzKCksIDIpOwoJCWNhc2UgJ3QnOiAvLyB0YWIgY2hhcmFjdGVyCgkJCXJldHVybiAnXHQnOwoJCWNhc2UgJ3UnOiAvLyB3ZWVrZGF5IGFzIGEgZGVjaW1hbCBudW1iZXIgWzEsN10sIHdpdGggMSByZXByZXNlbnRpbmcgTW9uZGF5CgkJCXJldHVybiB0aGlzLmdldERheSgpIHx8IDc7CgkJLypjYXNlICdVJzogLy8gd2VlayBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBTdW5kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3Qgd2VlawoJCQlyZXR1cm4gOwoJCWNhc2UgJ1YnOiAvLyBUaGUgSVNPIDg2MDE6MTk4OCB3ZWVrIG51bWJlciBvZiB0aGUgY3VycmVudCB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIsIHJhbmdlIDAxIHRvIDUzLCB3aGVyZSB3ZWVrIDEgaXMgdGhlIGZpcnN0IHdlZWsgdGhhdCBoYXMgYXQgbGVhc3QgNCBkYXlzIGluIHRoZSBjdXJyZW50IHllYXIsIGFuZCB3aXRoIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLiAoVXNlICVHIG9yICVnIGZvciB0aGUgeWVhciBjb21wb25lbnQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgd2VlayBudW1iZXIgZm9yIHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wLikKCQkJcmV0dXJuIDsKCQljYXNlICdXJzogLy8gd2VlayBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhciBhcyBhIGRlY2ltYWwgbnVtYmVyLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBNb25kYXkgYXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3Qgd2VlawoJCQlyZXR1cm4gOyovCgkJY2FzZSAndyc6IC8vIGRheSBvZiB0aGUgd2VlayBhcyBhIGRlY2ltYWwsIFN1bmRheSBiZWluZyAwCgkJCXJldHVybiB0aGlzLmdldERheSgpOwoJCWNhc2UgJ3knOiAvLyB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIgd2l0aG91dCBhIGNlbnR1cnkgKHJhbmdlIDAwIHRvIDk5KQoJCQlyZXR1cm4gdGhpcy5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyKDIpOwoJCWNhc2UgJ1knOiAvLyB5ZWFyIGFzIGEgZGVjaW1hbCBudW1iZXIgaW5jbHVkaW5nIHRoZSBjZW50dXJ5CgkJCXJldHVybiB0aGlzLmdldEZ1bGxZZWFyKCk7CgkJLypjYXNlICd6JzoKCQljYXNlICdaJzogLy8gdGltZSB6b25lIG9yIG5hbWUgb3IgYWJicmV2aWF0aW9uCgkJCXJldHVybiA7Ki8KCQlkZWZhdWx0OgoJCQlyZXR1cm4gbWF0Y2gwOwoJfQp9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCS8qKiBQcmludHMgdGhlIGRhdGUgaW4gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmb3JtYXQuICovCglEYXRlLnByb3RvdHlwZS5wcmludCA9IGZ1bmN0aW9uIChzdHIpIHsKCQlyZXR1cm4gdGhpcy5mb3JtYXQoc3RyKTsKCQkvKgoJCXZhciBtID0gdGhpcy5nZXRNb250aCgpOwoJCXZhciBkID0gdGhpcy5nZXREYXRlKCk7CgkJdmFyIHkgPSB0aGlzLmdldEZ1bGxZZWFyKCk7CgkJdmFyIHduID0gdGhpcy5nZXRXZWVrTnVtYmVyKCk7CgkJdmFyIHcgPSB0aGlzLmdldERheSgpOwoJCXZhciBzID0ge307CgkJdmFyIGhyID0gdGhpcy5nZXRIb3VycygpOwoJCXZhciBwbSA9IChociA+PSAxMik7CgkJdmFyIGlyID0gKHBtKSA/IChociAtIDEyKSA6IGhyOwoJCXZhciBkeSA9IHRoaXMuZ2V0RGF5T2ZZZWFyKCk7CgkJaWYgKGlyID09IDApCgkJCWlyID0gMTI7CgkJdmFyIG1pbiA9IHRoaXMuZ2V0TWludXRlcygpOwoJCXZhciBzZWMgPSB0aGlzLmdldFNlY29uZHMoKTsKCQlzWyIlYSJdID0gQ2FsZW5kYXIuU0hPUlRfREFZX05BTUVTW3ddOyAvLyBhYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWUgW0ZJWE1FOiBJMThOXQoJCXNbIiVBIl0gPSBDYWxlbmRhci5EQVlfTkFNRVNbd107IC8vIGZ1bGwgd2Vla2RheSBuYW1lCgkJc1siJWIiXSA9IENhbGVuZGFyLlNIT1JUX01PTlRIX05BTUVTW21dOyAvLyBhYmJyZXZpYXRlZCBtb250aCBuYW1lIFtGSVhNRTogSTE4Tl0KCQlzWyIlQiJdID0gQ2FsZW5kYXIuTU9OVEhfTkFNRVNbbV07IC8vIGZ1bGwgbW9udGggbmFtZQoJCS8vIEZJWE1FOiAlYyA6IHByZWZlcnJlZCBkYXRlIGFuZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUKCQlzWyIlQyJdID0gMSArIE1hdGguZmxvb3IoeSAvIDEwMCk7IC8vIHRoZSBjZW50dXJ5IG51bWJlcgoJCXNbIiVkIl0gPSAoZCA8IDEwKSA/ICgiMCIgKyBkKSA6IGQ7IC8vIHRoZSBkYXkgb2YgdGhlIG1vbnRoIChyYW5nZSAwMSB0byAzMSkKCQlzWyIlZSJdID0gZDsgLy8gdGhlIGRheSBvZiB0aGUgbW9udGggKHJhbmdlIDEgdG8gMzEpCgkJLy8gRklYTUU6ICVEIDogYW1lcmljYW4gZGF0ZSBzdHlsZTogJW0vJWQvJXkKCQkvLyBGSVhNRTogJUUsICVGLCAlRywgJWcsICVoIChtYW4gc3RyZnRpbWUpCgkJc1siJUgiXSA9IChociA8IDEwKSA/ICgiMCIgKyBocikgOiBocjsgLy8gaG91ciwgcmFuZ2UgMDAgdG8gMjMgKDI0aCBmb3JtYXQpCgkJc1siJUkiXSA9IChpciA8IDEwKSA/ICgiMCIgKyBpcikgOiBpcjsgLy8gaG91ciwgcmFuZ2UgMDEgdG8gMTIgKDEyaCBmb3JtYXQpCgkJc1siJWoiXSA9IChkeSA8IDEwMCkgPyAoKGR5IDwgMTApID8gKCIwMCIgKyBkeSkgOiAoIjAiICsgZHkpKSA6IGR5OyAvLyBkYXkgb2YgdGhlIHllYXIgKHJhbmdlIDAwMSB0byAzNjYpCgkJc1siJWsiXSA9IGhyOyAgIC8vIGhvdXIsIHJhbmdlIDAgdG8gMjMgKDI0aCBmb3JtYXQpCgkJc1siJWwiXSA9IGlyOyAgIC8vIGhvdXIsIHJhbmdlIDEgdG8gMTIgKDEyaCBmb3JtYXQpCgkJc1siJW0iXSA9IChtIDwgOSkgPyAoIjAiICsgKDErbSkpIDogKDErbSk7IC8vIG1vbnRoLCByYW5nZSAwMSB0byAxMgoJCXNbIiVNIl0gPSAobWluIDwgMTApID8gKCIwIiArIG1pbikgOiBtaW47IC8vIG1pbnV0ZSwgcmFuZ2UgMDAgdG8gNTkKCQlzWyIlbiJdID0gIlxuIjsgICAvLyBhIG5ld2xpbmUgY2hhcmFjdGVyCgkJc1siJXAiXSA9IHBtID8gIlBNIiA6ICJBTSI7CgkJc1siJVAiXSA9IHBtID8gInBtIiA6ICJhbSI7CgkJLy8gRklYTUU6ICVyIDogdGhlIHRpbWUgaW4gYW0vcG0gbm90YXRpb24gJUk6JU06JVMgJXAKCQkvLyBGSVhNRTogJVIgOiB0aGUgdGltZSBpbiAyNC1ob3VyIG5vdGF0aW9uICVIOiVNCgkJc1siJXMiXSA9IE1hdGguZmxvb3IodGhpcy5nZXRUaW1lKCkgLyAxMDAwKTsKCQlzWyIlUyJdID0gKHNlYyA8IDEwKSA/ICgiMCIgKyBzZWMpIDogc2VjOyAvLyBzZWNvbmRzLCByYW5nZSAwMCB0byA1OQoJCXNbIiV0Il0gPSAiXHQiOyAgIC8vIGEgdGFiIGNoYXJhY3RlcgoJCS8vIEZJWE1FOiAlVCA6IHRoZSB0aW1lIGluIDI0LWhvdXIgbm90YXRpb24gKCVIOiVNOiVTKQoJCXNbIiVVIl0gPSBzWyIlVyJdID0gc1siJVYiXSA9ICh3biA8IDEwKSA/ICgiMCIgKyB3bikgOiB3bjsKCQlzWyIldSJdID0gdyArIDE7ICAvLyB0aGUgZGF5IG9mIHRoZSB3ZWVrIChyYW5nZSAxIHRvIDcsIDEgPSBNT04pCgkJc1siJXciXSA9IHc7ICAgIC8vIHRoZSBkYXkgb2YgdGhlIHdlZWsgKHJhbmdlIDAgdG8gNiwgMCA9IFNVTikKCQkvLyBGSVhNRTogJXggOiBwcmVmZXJyZWQgZGF0ZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIHRpbWUKCQkvLyBGSVhNRTogJVggOiBwcmVmZXJyZWQgdGltZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIHdpdGhvdXQgdGhlIGRhdGUKCQlzWyIleSJdID0gKCcnICsgeSkuc3Vic3RyKDIsIDIpOyAvLyB5ZWFyIHdpdGhvdXQgdGhlIGNlbnR1cnkgKHJhbmdlIDAwIHRvIDk5KQoJCXNbIiVZIl0gPSB5OyAgICAvLyB5ZWFyIHdpdGggdGhlIGNlbnR1cnkKCQlzWyIlJSJdID0gIiUiOyAgICAvLyBhIGxpdGVyYWwgJyUnIGNoYXJhY3RlcgoKCQl2YXIgcmUgPSAvJS4vZzsKCQl2YXIgYSA9IHN0ci5tYXRjaChyZSk7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CgkJCXZhciB0bXAgPSBzW2FbaV1dOwoJCQlpZiAodG1wKSB7CgkJCQlyZSA9IG5ldyBSZWdFeHAoYVtpXSwgJ2cnKTsKCQkJCXN0ciA9IHN0ci5yZXBsYWNlKHJlLCB0bXApOwoJCQl9CgkJfQoKCQlyZXR1cm4gc3RyOwoJCSovCgl9OwoKCURhdGUucHJvdG90eXBlLl9fbXNoX29sZFNldEZ1bGxZZWFyID0gRGF0ZS5wcm90b3R5cGUuc2V0RnVsbFllYXI7CglEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhciA9IGZ1bmN0aW9uKHkpIHsKCQl2YXIgZCA9IG5ldyBEYXRlKHRoaXMpOwoJCWQuX19tc2hfb2xkU2V0RnVsbFllYXIoeSk7CgkJaWYgKGQuZ2V0TW9udGgoKSAhPSB0aGlzLmdldE1vbnRoKCkpCgkJCXRoaXMuc2V0RGF0ZSgyOCk7CgkJdGhpcy5fX21zaF9vbGRTZXRGdWxsWWVhcih5KTsKCX0KCgkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gVGhlIGpRdWVyeSBwbHVnaW4gZnVuY3Rpb24KCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkkLmZuLmNhbGVuZGFyID0gZnVuY3Rpb24ob3B0aW9ucykgewoJCXZhciBkZWZhdWx0cyA9IHsKCQkJdHJpZ2dlckVsZW1lbnQ6IG51bGwsIC8vIFBvcHVwIGNhbGVuZGFyCgkJCXBhcmVudEVsZW1lbnQ6IG51bGwsIC8vIElubGluZSBjYWxlbmRhcgoJCQltaW5ZZWFyOiAxOTAwLAoJCQltYXhZZWFyOiAyMTAwLAoJCQlmaXJzdERheU9mV2VlazogMSwgLy8gTW9uZGF5CgkJCXdlZWtlbmQ6ICIwLDYiLCAvLyBTdW5kYXkgYW5kIFNhdHVyZGF5CgkJCWRhdGVGb3JtYXQ6ICclWS0lbS0lZCcsCgkJCWRhdGVGaWVsZDogbnVsbCwKCQkJc2VsZWN0SGFuZGxlcjogbnVsbCwKCQkJY2xvc2VIYW5kbGVyOiBudWxsCgkJfTsKCQl2YXIgc2V0dGluZ3MgPSAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMpOwoKCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CgkJCXZhciBzZWxmID0gJCh0aGlzKTsKCQkJdmFyIGNhbGVuZGFyID0gbmV3IENhbGVuZGFyKCk7CgoJCQljYWxlbmRhci5taW5ZZWFyID0gc2V0dGluZ3MubWluWWVhcjsKCQkJY2FsZW5kYXIubWF4WWVhciA9IHNldHRpbmdzLm1heFllYXI7CgoJCQljYWxlbmRhci5maXJzdERheU9mV2VlayA9IHNldHRpbmdzLmZpcnN0RGF5T2ZXZWVrOwoJCQljYWxlbmRhci53ZWVrZW5kID0gc2V0dGluZ3Mud2Vla2VuZDsKCQkJY2FsZW5kYXIuZGF0ZUZvcm1hdCA9IHNldHRpbmdzLmRhdGVGb3JtYXQ7CgkJCWNhbGVuZGFyLmRhdGVGaWVsZCA9IChzZXR0aW5ncy5kYXRlRmllbGQgfHwgc2VsZik7CgoJCQljYWxlbmRhci5zZWxlY3RIYW5kbGVyID0gKHNldHRpbmdzLnNlbGVjdEhhbmRsZXIgfHwgQ2FsZW5kYXIuZGVmYXVsdFNlbGVjdEhhbmRsZXIpOwoKCQkJLy8gSW5saW5lIENhbGVuZGFyCgkJCXZhciBzZWxmRGF0ZSA9IHNlbGYuaHRtbCgpIHx8IHNlbGYudmFsKCk7CgkJCWlmIChzZXR0aW5ncy5wYXJlbnRFbGVtZW50KSB7CgkJCQljYWxlbmRhci5jcmVhdGUoJChzZXR0aW5ncy5wYXJlbnRFbGVtZW50KSk7CgkJCQlpZiAoc2VsZkRhdGUpIGNhbGVuZGFyLnBhcnNlRGF0ZShzZWxmRGF0ZSk7CgkJCQljYWxlbmRhci5zaG93KCk7CgkJCX0gZWxzZSB7CgkJCQkvLyBQb3B1cCBDYWxlbmRhcgoJCQkJY2FsZW5kYXIuY3JlYXRlKCk7CgkJCQlpZiAoc2VsZkRhdGUpIGNhbGVuZGFyLnBhcnNlRGF0ZShzZWxmRGF0ZSk7CgkJCQl2YXIgdHJpZ2dlckVsZW1lbnQgPSAkKHNldHRpbmdzLnRyaWdnZXJFbGVtZW50IHx8IHNlbGYpOwoJCQkJdHJpZ2dlckVsZW1lbnQuY2xpY2soZnVuY3Rpb24oKSB7CgkJCQkJY2FsZW5kYXIuY2xvc2VIYW5kbGVyID0gKHNldHRpbmdzLmNsb3NlSGFuZGxlciB8fCBDYWxlbmRhci5kZWZhdWx0Q2xvc2VIYW5kbGVyKTsKCQkJCQljYWxlbmRhci5zaG93QXRFbGVtZW50KHRyaWdnZXJFbGVtZW50KTsKCQkJCX0pOwoJCQl9CgkJfSk7CgoJCXJldHVybiB0aGlzOwoJfQoKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/js/jq.form.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBGb3JtIFBsdWdpbgogKiB2ZXJzaW9uOiAyLjQzICgxMi1NQVItMjAxMCkKICogQHJlcXVpcmVzIGpRdWVyeSB2MS4zLjIgb3IgbGF0ZXIKICoKICogRXhhbXBsZXMgYW5kIGRvY3VtZW50YXRpb24gYXQ6IGh0dHA6Ly9tYWxzdXAuY29tL2pxdWVyeS9mb3JtLwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlczoKICogICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocAogKiAgIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbAogKi8KOyhmdW5jdGlvbigkKSB7CgovKgoJVXNhZ2UgTm90ZToKCS0tLS0tLS0tLS0tCglEbyBub3QgdXNlIGJvdGggYWpheFN1Ym1pdCBhbmQgYWpheEZvcm0gb24gdGhlIHNhbWUgZm9ybS4gIFRoZXNlCglmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIGV4Y2x1c2l2ZS4gIFVzZSBhamF4U3VibWl0IGlmIHlvdSB3YW50Cgl0byBiaW5kIHlvdXIgb3duIHN1Ym1pdCBoYW5kbGVyIHRvIHRoZSBmb3JtLiAgRm9yIGV4YW1wbGUsCgoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJJCgnI215Rm9ybScpLmJpbmQoJ3N1Ym1pdCcsIGZ1bmN0aW9uKCkgewoJCQkkKHRoaXMpLmFqYXhTdWJtaXQoewoJCQkJdGFyZ2V0OiAnI291dHB1dCcKCQkJfSk7CgkJCXJldHVybiBmYWxzZTsgLy8gPC0tIGltcG9ydGFudCEKCQl9KTsKCX0pOwoKCVVzZSBhamF4Rm9ybSB3aGVuIHlvdSB3YW50IHRoZSBwbHVnaW4gdG8gbWFuYWdlIGFsbCB0aGUgZXZlbnQgYmluZGluZwoJZm9yIHlvdS4gIEZvciBleGFtcGxlLAoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCSQoJyNteUZvcm0nKS5hamF4Rm9ybSh7CgkJCXRhcmdldDogJyNvdXRwdXQnCgkJfSk7Cgl9KTsKCglXaGVuIHVzaW5nIGFqYXhGb3JtLCB0aGUgYWpheFN1Ym1pdCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgZm9yIHlvdQoJYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuCiovCiQuZm4uYWpheFN1Ym1pdD1mdW5jdGlvbihvcHRpb25zKXtpZighdGhpcy5sZW5ndGgpe2xvZygnYWpheFN1Ym1pdDogc2tpcHBpbmcgc3VibWl0IHByb2Nlc3MgLSBubyBlbGVtZW50IHNlbGVjdGVkJyk7cmV0dXJuIHRoaXN9aWYodHlwZW9mIG9wdGlvbnM9PSdmdW5jdGlvbicpb3B0aW9ucz17c3VjY2VzczpvcHRpb25zfTt2YXIgdXJsPSQudHJpbSh0aGlzLmF0dHIoJ2FjdGlvbicpKTtpZih1cmwpe3VybD0odXJsLm1hdGNoKC9eKFteI10rKS8pfHxbXSlbMV19dXJsPXVybHx8d2luZG93LmxvY2F0aW9uLmhyZWZ8fCcnO29wdGlvbnM9JC5leHRlbmQoe3VybDp1cmwsdHlwZTp0aGlzLmF0dHIoJ21ldGhvZCcpfHwnR0VUJyxpZnJhbWVTcmM6L15odHRwcy9pLnRlc3Qod2luZG93LmxvY2F0aW9uLmhyZWZ8fCcnKT8namF2YXNjcmlwdDpmYWxzZSc6J2Fib3V0OmJsYW5rJ30sb3B0aW9uc3x8e30pO3ZhciB2ZXRvPXt9O3RoaXMudHJpZ2dlcignZm9ybS1wcmUtc2VyaWFsaXplJyxbdGhpcyxvcHRpb25zLHZldG9dKTtpZih2ZXRvLnZldG8pe2xvZygnYWpheFN1Ym1pdDogc3VibWl0IHZldG9lZCB2aWEgZm9ybS1wcmUtc2VyaWFsaXplIHRyaWdnZXInKTtyZXR1cm4gdGhpc31pZihvcHRpb25zLmJlZm9yZVNlcmlhbGl6ZSYmb3B0aW9ucy5iZWZvcmVTZXJpYWxpemUodGhpcyxvcHRpb25zKT09PWZhbHNlKXtsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCBhYm9ydGVkIHZpYSBiZWZvcmVTZXJpYWxpemUgY2FsbGJhY2snKTtyZXR1cm4gdGhpc312YXIgYT10aGlzLmZvcm1Ub0FycmF5KG9wdGlvbnMuc2VtYW50aWMpO2lmKG9wdGlvbnMuZGF0YSl7b3B0aW9ucy5leHRyYURhdGE9b3B0aW9ucy5kYXRhO2Zvcih2YXIgbiBpbiBvcHRpb25zLmRhdGEpe2lmKG9wdGlvbnMuZGF0YVtuXWluc3RhbmNlb2YgQXJyYXkpe2Zvcih2YXIgayBpbiBvcHRpb25zLmRhdGFbbl0pYS5wdXNoKHtuYW1lOm4sdmFsdWU6b3B0aW9ucy5kYXRhW25dW2tdfSl9ZWxzZSBhLnB1c2goe25hbWU6bix2YWx1ZTpvcHRpb25zLmRhdGFbbl19KX19aWYob3B0aW9ucy5iZWZvcmVTdWJtaXQmJm9wdGlvbnMuYmVmb3JlU3VibWl0KGEsdGhpcyxvcHRpb25zKT09PWZhbHNlKXtsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCBhYm9ydGVkIHZpYSBiZWZvcmVTdWJtaXQgY2FsbGJhY2snKTtyZXR1cm4gdGhpc310aGlzLnRyaWdnZXIoJ2Zvcm0tc3VibWl0LXZhbGlkYXRlJyxbYSx0aGlzLG9wdGlvbnMsdmV0b10pO2lmKHZldG8udmV0byl7bG9nKCdhamF4U3VibWl0OiBzdWJtaXQgdmV0b2VkIHZpYSBmb3JtLXN1Ym1pdC12YWxpZGF0ZSB0cmlnZ2VyJyk7cmV0dXJuIHRoaXN9dmFyIHE9JC5wYXJhbShhKTtpZihvcHRpb25zLnR5cGUudG9VcHBlckNhc2UoKT09J0dFVCcpe29wdGlvbnMudXJsKz0ob3B0aW9ucy51cmwuaW5kZXhPZignPycpPj0wPycmJzonPycpK3E7b3B0aW9ucy5kYXRhPW51bGx9ZWxzZSBvcHRpb25zLmRhdGE9cTt2YXIgJGZvcm09dGhpcyxjYWxsYmFja3M9W107aWYob3B0aW9ucy5yZXNldEZvcm0pY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oKXskZm9ybS5yZXNldEZvcm0oKX0pO2lmKG9wdGlvbnMuY2xlYXJGb3JtKWNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKCl7JGZvcm0uY2xlYXJGb3JtKCl9KTtpZighb3B0aW9ucy5kYXRhVHlwZSYmb3B0aW9ucy50YXJnZXQpe3ZhciBvbGRTdWNjZXNzPW9wdGlvbnMuc3VjY2Vzc3x8ZnVuY3Rpb24oKXt9O2NhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGRhdGEpe3ZhciBmbj1vcHRpb25zLnJlcGxhY2VUYXJnZXQ/J3JlcGxhY2VXaXRoJzonaHRtbCc7JChvcHRpb25zLnRhcmdldClbZm5dKGRhdGEpLmVhY2gob2xkU3VjY2Vzcyxhcmd1bWVudHMpfSl9ZWxzZSBpZihvcHRpb25zLnN1Y2Nlc3MpY2FsbGJhY2tzLnB1c2gob3B0aW9ucy5zdWNjZXNzKTtvcHRpb25zLnN1Y2Nlc3M9ZnVuY3Rpb24oZGF0YSxzdGF0dXMseGhyKXtmb3IodmFyIGk9MCxtYXg9Y2FsbGJhY2tzLmxlbmd0aDtpPG1heDtpKyspY2FsbGJhY2tzW2ldLmFwcGx5KG9wdGlvbnMsW2RhdGEsc3RhdHVzLHhocnx8JGZvcm0sJGZvcm1dKX07dmFyIGZpbGVzPSQoJ2lucHV0OmZpbGUnLHRoaXMpLmZpZWxkVmFsdWUoKTt2YXIgZm91bmQ9ZmFsc2U7Zm9yKHZhciBqPTA7ajxmaWxlcy5sZW5ndGg7aisrKWlmKGZpbGVzW2pdKWZvdW5kPXRydWU7dmFyIG11bHRpcGFydD1mYWxzZTtpZigoZmlsZXMubGVuZ3RoJiZvcHRpb25zLmlmcmFtZSE9PWZhbHNlKXx8b3B0aW9ucy5pZnJhbWV8fGZvdW5kfHxtdWx0aXBhcnQpe2lmKG9wdGlvbnMuY2xvc2VLZWVwQWxpdmUpJC5nZXQob3B0aW9ucy5jbG9zZUtlZXBBbGl2ZSxmaWxlVXBsb2FkKTtlbHNlIGZpbGVVcGxvYWQoKX1lbHNlICQuYWpheChvcHRpb25zKTt0aGlzLnRyaWdnZXIoJ2Zvcm0tc3VibWl0LW5vdGlmeScsW3RoaXMsb3B0aW9uc10pO3JldHVybiB0aGlzO2Z1bmN0aW9uIGZpbGVVcGxvYWQoKXt2YXIgZm9ybT0kZm9ybVswXTtpZigkKCc6aW5wdXRbbmFtZT1zdWJtaXRdJyxmb3JtKS5sZW5ndGgpe2FsZXJ0KCdFcnJvcjogRm9ybSBlbGVtZW50cyBtdXN0IG5vdCBiZSBuYW1lZCAic3VibWl0Ii4nKTtyZXR1cm59dmFyIG9wdHM9JC5leHRlbmQoe30sJC5hamF4U2V0dGluZ3Msb3B0aW9ucyk7dmFyIHM9JC5leHRlbmQodHJ1ZSx7fSwkLmV4dGVuZCh0cnVlLHt9LCQuYWpheFNldHRpbmdzKSxvcHRzKTt2YXIgaWQ9J2pxRm9ybUlPJysobmV3IERhdGUoKS5nZXRUaW1lKCkpO3ZhciAkaW89JCgnPGlmcmFtZSBpZD0iJytpZCsnIiBuYW1lPSInK2lkKyciIHNyYz0iJytvcHRzLmlmcmFtZVNyYysnIiBvbmxvYWQ9IihqUXVlcnkodGhpcykuZGF0YShcJ2Zvcm0tcGx1Z2luLW9ubG9hZFwnKSkoKSIgLz4nKTt2YXIgaW89JGlvWzBdOyRpby5jc3Moe3Bvc2l0aW9uOidhYnNvbHV0ZScsdG9wOictMTAwMHB4JyxsZWZ0OictMTAwMHB4J30pO3ZhciB4aHI9e2Fib3J0ZWQ6MCxyZXNwb25zZVRleHQ6bnVsbCxyZXNwb25zZVhNTDpudWxsLHN0YXR1czowLHN0YXR1c1RleHQ6J24vYScsZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7fSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbigpe30sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbigpe30sYWJvcnQ6ZnVuY3Rpb24oKXt0aGlzLmFib3J0ZWQ9MTskaW8uYXR0cignc3JjJyxvcHRzLmlmcmFtZVNyYyl9fTt2YXIgZz1vcHRzLmdsb2JhbDtpZihnJiYhJC5hY3RpdmUrKykkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKGcpJC5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW3hocixvcHRzXSk7aWYocy5iZWZvcmVTZW5kJiZzLmJlZm9yZVNlbmQoeGhyLHMpPT09ZmFsc2Upe3MuZ2xvYmFsJiYkLmFjdGl2ZS0tO3JldHVybn1pZih4aHIuYWJvcnRlZClyZXR1cm47dmFyIGNiSW52b2tlZD1mYWxzZTt2YXIgdGltZWRPdXQ9MDt2YXIgc3ViPWZvcm0uY2xrO2lmKHN1Yil7dmFyIG49c3ViLm5hbWU7aWYobiYmIXN1Yi5kaXNhYmxlZCl7b3B0cy5leHRyYURhdGE9b3B0cy5leHRyYURhdGF8fHt9O29wdHMuZXh0cmFEYXRhW25dPXN1Yi52YWx1ZTtpZihzdWIudHlwZT09ImltYWdlIil7b3B0cy5leHRyYURhdGFbbisnLngnXT1mb3JtLmNsa194O29wdHMuZXh0cmFEYXRhW24rJy55J109Zm9ybS5jbGtfeX19fWZ1bmN0aW9uIGRvU3VibWl0KCl7dmFyIHQ9JGZvcm0uYXR0cigndGFyZ2V0JyksYT0kZm9ybS5hdHRyKCdhY3Rpb24nKTtmb3JtLnNldEF0dHJpYnV0ZSgndGFyZ2V0JyxpZCk7aWYoZm9ybS5nZXRBdHRyaWJ1dGUoJ21ldGhvZCcpIT0nUE9TVCcpZm9ybS5zZXRBdHRyaWJ1dGUoJ21ldGhvZCcsJ1BPU1QnKTtpZihmb3JtLmdldEF0dHJpYnV0ZSgnYWN0aW9uJykhPW9wdHMudXJsKWZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLG9wdHMudXJsKTtpZighb3B0cy5za2lwRW5jb2RpbmdPdmVycmlkZSl7JGZvcm0uYXR0cih7ZW5jb2Rpbmc6J211bHRpcGFydC9mb3JtLWRhdGEnLGVuY3R5cGU6J211bHRpcGFydC9mb3JtLWRhdGEnfSl9aWYob3B0cy50aW1lb3V0KXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aW1lZE91dD10cnVlO2NiKCl9LG9wdHMudGltZW91dCk7dmFyIGV4dHJhSW5wdXRzPVtdO3RyeXtpZihvcHRzLmV4dHJhRGF0YSlmb3IodmFyIG4gaW4gb3B0cy5leHRyYURhdGEpZXh0cmFJbnB1dHMucHVzaCgkKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInK24rJyIgdmFsdWU9Iicrb3B0cy5leHRyYURhdGFbbl0rJyIgLz4nKS5hcHBlbmRUbyhmb3JtKVswXSk7JGlvLmFwcGVuZFRvKCdib2R5Jyk7JGlvLmRhdGEoJ2Zvcm0tcGx1Z2luLW9ubG9hZCcsY2IpO2Zvcm0uc3VibWl0KCl9ZmluYWxseXtmb3JtLnNldEF0dHJpYnV0ZSgnYWN0aW9uJyxhKTt0P2Zvcm0uc2V0QXR0cmlidXRlKCd0YXJnZXQnLHQpOiRmb3JtLnJlbW92ZUF0dHIoJ3RhcmdldCcpOyQoZXh0cmFJbnB1dHMpLnJlbW92ZSgpfX07aWYob3B0cy5mb3JjZVN5bmMpZG9TdWJtaXQoKTtlbHNlIHNldFRpbWVvdXQoZG9TdWJtaXQsMTApO3ZhciBkb21DaGVja0NvdW50PTEwMDtmdW5jdGlvbiBjYigpe2lmKGNiSW52b2tlZClyZXR1cm47dmFyIG9rPXRydWU7dHJ5e2lmKHRpbWVkT3V0KXRocm93J3RpbWVvdXQnO3ZhciBkYXRhLGRvYztkb2M9aW8uY29udGVudFdpbmRvdz9pby5jb250ZW50V2luZG93LmRvY3VtZW50OmlvLmNvbnRlbnREb2N1bWVudD9pby5jb250ZW50RG9jdW1lbnQ6aW8uZG9jdW1lbnQ7dmFyIGlzWG1sPW9wdHMuZGF0YVR5cGU9PSd4bWwnfHxkb2MuWE1MRG9jdW1lbnR8fCQuaXNYTUxEb2MoZG9jKTtsb2coJ2lzWG1sPScraXNYbWwpO2lmKCFpc1htbCYmKGRvYy5ib2R5PT1udWxsfHxkb2MuYm9keS5pbm5lckhUTUw9PScnKSl7aWYoLS1kb21DaGVja0NvdW50KXtsb2coJ3JlcXVlaW5nIG9uTG9hZCBjYWxsYmFjaywgRE9NIG5vdCBhdmFpbGFibGUnKTtzZXRUaW1lb3V0KGNiLDI1MCk7cmV0dXJufWxvZygnQ291bGQgbm90IGFjY2VzcyBpZnJhbWUgRE9NIGFmdGVyIDEwMCB0cmllcy4nKTtyZXR1cm59bG9nKCdyZXNwb25zZSBkZXRlY3RlZCcpO2NiSW52b2tlZD10cnVlO3hoci5yZXNwb25zZVRleHQ9ZG9jLmJvZHk/ZG9jLmJvZHkuaW5uZXJIVE1MOm51bGw7eGhyLnJlc3BvbnNlWE1MPWRvYy5YTUxEb2N1bWVudD9kb2MuWE1MRG9jdW1lbnQ6ZG9jO3hoci5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihoZWFkZXIpe3ZhciBoZWFkZXJzPXsnY29udGVudC10eXBlJzpvcHRzLmRhdGFUeXBlfTtyZXR1cm4gaGVhZGVyc1toZWFkZXJdfTtpZihvcHRzLmRhdGFUeXBlPT0nanNvbid8fG9wdHMuZGF0YVR5cGU9PSdzY3JpcHQnKXt2YXIgdGE9ZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpWzBdO2lmKHRhKXhoci5yZXNwb25zZVRleHQ9dGEudmFsdWU7ZWxzZXt2YXIgcHJlPWRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgncHJlJylbMF07aWYocHJlKXhoci5yZXNwb25zZVRleHQ9cHJlLmlubmVySFRNTH19ZWxzZSBpZihvcHRzLmRhdGFUeXBlPT0neG1sJyYmIXhoci5yZXNwb25zZVhNTCYmeGhyLnJlc3BvbnNlVGV4dCE9bnVsbCl7eGhyLnJlc3BvbnNlWE1MPXRvWG1sKHhoci5yZXNwb25zZVRleHQpfWRhdGE9JC5odHRwRGF0YSh4aHIsb3B0cy5kYXRhVHlwZSl9Y2F0Y2goZSl7bG9nKCdlcnJvciBjYXVnaHQ6JyxlKTtvaz1mYWxzZTt4aHIuZXJyb3I9ZTskLmhhbmRsZUVycm9yKG9wdHMseGhyLCdlcnJvcicsZSl9aWYob2spe29wdHMuc3VjY2VzcyhkYXRhLCdzdWNjZXNzJyk7aWYoZykkLmV2ZW50LnRyaWdnZXIoImFqYXhTdWNjZXNzIixbeGhyLG9wdHNdKX1pZihnKSQuZXZlbnQudHJpZ2dlcigiYWpheENvbXBsZXRlIixbeGhyLG9wdHNdKTtpZihnJiYhLS0kLmFjdGl2ZSkkLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIik7aWYob3B0cy5jb21wbGV0ZSlvcHRzLmNvbXBsZXRlKHhocixvaz8nc3VjY2Vzcyc6J2Vycm9yJyk7c2V0VGltZW91dChmdW5jdGlvbigpeyRpby5yZW1vdmVEYXRhKCdmb3JtLXBsdWdpbi1vbmxvYWQnKTskaW8ucmVtb3ZlKCk7eGhyLnJlc3BvbnNlWE1MPW51bGx9LDEwMCl9O2Z1bmN0aW9uIHRvWG1sKHMsZG9jKXtpZih3aW5kb3cuQWN0aXZlWE9iamVjdCl7ZG9jPW5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MRE9NJyk7ZG9jLmFzeW5jPSdmYWxzZSc7ZG9jLmxvYWRYTUwocyl9ZWxzZSBkb2M9KG5ldyBET01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKHMsJ3RleHQveG1sJyk7cmV0dXJuKGRvYyYmZG9jLmRvY3VtZW50RWxlbWVudCYmZG9jLmRvY3VtZW50RWxlbWVudC50YWdOYW1lIT0ncGFyc2VyZXJyb3InKT9kb2M6bnVsbH19fTskLmZuLmFqYXhGb3JtPWZ1bmN0aW9uKG9wdGlvbnMpe3JldHVybiB0aGlzLmFqYXhGb3JtVW5iaW5kKCkuYmluZCgnc3VibWl0LmZvcm0tcGx1Z2luJyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7JCh0aGlzKS5hamF4U3VibWl0KG9wdGlvbnMpfSkuYmluZCgnY2xpY2suZm9ybS1wbHVnaW4nLGZ1bmN0aW9uKGUpe3ZhciB0YXJnZXQ9ZS50YXJnZXQ7dmFyICRlbD0kKHRhcmdldCk7aWYoISgkZWwuaXMoIjpzdWJtaXQsaW5wdXQ6aW1hZ2UiKSkpe3ZhciB0PSRlbC5jbG9zZXN0KCc6c3VibWl0Jyk7aWYodC5sZW5ndGg9PTApcmV0dXJuO3RhcmdldD10WzBdfXZhciBmb3JtPXRoaXM7Zm9ybS5jbGs9dGFyZ2V0O2lmKHRhcmdldC50eXBlPT0naW1hZ2UnKXtpZihlLm9mZnNldFghPXVuZGVmaW5lZCl7Zm9ybS5jbGtfeD1lLm9mZnNldFg7Zm9ybS5jbGtfeT1lLm9mZnNldFl9ZWxzZSBpZih0eXBlb2YgJC5mbi5vZmZzZXQ9PSdmdW5jdGlvbicpe3ZhciBvZmZzZXQ9JGVsLm9mZnNldCgpO2Zvcm0uY2xrX3g9ZS5wYWdlWC1vZmZzZXQubGVmdDtmb3JtLmNsa195PWUucGFnZVktb2Zmc2V0LnRvcH1lbHNle2Zvcm0uY2xrX3g9ZS5wYWdlWC10YXJnZXQub2Zmc2V0TGVmdDtmb3JtLmNsa195PWUucGFnZVktdGFyZ2V0Lm9mZnNldFRvcH19c2V0VGltZW91dChmdW5jdGlvbigpe2Zvcm0uY2xrPWZvcm0uY2xrX3g9Zm9ybS5jbGtfeT1udWxsfSwxMDApfSl9OyQuZm4uYWpheEZvcm1VbmJpbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmJpbmQoJ3N1Ym1pdC5mb3JtLXBsdWdpbiBjbGljay5mb3JtLXBsdWdpbicpfTskLmZuLmZvcm1Ub0FycmF5PWZ1bmN0aW9uKHNlbWFudGljKXt2YXIgYT1bXTtpZih0aGlzLmxlbmd0aD09MClyZXR1cm4gYTt2YXIgZm9ybT10aGlzWzBdO3ZhciBlbHM9c2VtYW50aWM/Zm9ybS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnKicpOmZvcm0uZWxlbWVudHM7aWYoIWVscylyZXR1cm4gYTtmb3IodmFyIGk9MCxtYXg9ZWxzLmxlbmd0aDtpPG1heDtpKyspe3ZhciBlbD1lbHNbaV07dmFyIG49ZWwubmFtZTtpZighbiljb250aW51ZTtpZihzZW1hbnRpYyYmZm9ybS5jbGsmJmVsLnR5cGU9PSJpbWFnZSIpe2lmKCFlbC5kaXNhYmxlZCYmZm9ybS5jbGs9PWVsKXthLnB1c2goe25hbWU6bix2YWx1ZTokKGVsKS52YWwoKX0pO2EucHVzaCh7bmFtZTpuKycueCcsdmFsdWU6Zm9ybS5jbGtfeH0se25hbWU6bisnLnknLHZhbHVlOmZvcm0uY2xrX3l9KX1jb250aW51ZX12YXIgdj0kLmZpZWxkVmFsdWUoZWwsdHJ1ZSk7aWYodiYmdi5jb25zdHJ1Y3Rvcj09QXJyYXkpe2Zvcih2YXIgaj0wLGptYXg9di5sZW5ndGg7ajxqbWF4O2orKylhLnB1c2goe25hbWU6bix2YWx1ZTp2W2pdfSl9ZWxzZSBpZih2IT09bnVsbCYmdHlwZW9mIHYhPSd1bmRlZmluZWQnKWEucHVzaCh7bmFtZTpuLHZhbHVlOnZ9KX1pZighc2VtYW50aWMmJmZvcm0uY2xrKXt2YXIgJGlucHV0PSQoZm9ybS5jbGspLGlucHV0PSRpbnB1dFswXSxuPWlucHV0Lm5hbWU7aWYobiYmIWlucHV0LmRpc2FibGVkJiZpbnB1dC50eXBlPT0naW1hZ2UnKXthLnB1c2goe25hbWU6bix2YWx1ZTokaW5wdXQudmFsKCl9KTthLnB1c2goe25hbWU6bisnLngnLHZhbHVlOmZvcm0uY2xrX3h9LHtuYW1lOm4rJy55Jyx2YWx1ZTpmb3JtLmNsa195fSl9fXJldHVybiBhfTskLmZuLmZvcm1TZXJpYWxpemU9ZnVuY3Rpb24oc2VtYW50aWMpe3JldHVybiAkLnBhcmFtKHRoaXMuZm9ybVRvQXJyYXkoc2VtYW50aWMpKX07JC5mbi5maWVsZFNlcmlhbGl6ZT1mdW5jdGlvbihzdWNjZXNzZnVsKXt2YXIgYT1bXTt0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10aGlzLm5hbWU7aWYoIW4pcmV0dXJuO3ZhciB2PSQuZmllbGRWYWx1ZSh0aGlzLHN1Y2Nlc3NmdWwpO2lmKHYmJnYuY29uc3RydWN0b3I9PUFycmF5KXtmb3IodmFyIGk9MCxtYXg9di5sZW5ndGg7aTxtYXg7aSsrKWEucHVzaCh7bmFtZTpuLHZhbHVlOnZbaV19KX1lbHNlIGlmKHYhPT1udWxsJiZ0eXBlb2YgdiE9J3VuZGVmaW5lZCcpYS5wdXNoKHtuYW1lOnRoaXMubmFtZSx2YWx1ZTp2fSl9KTtyZXR1cm4gJC5wYXJhbShhKX07JC5mbi5maWVsZFZhbHVlPWZ1bmN0aW9uKHN1Y2Nlc3NmdWwpe2Zvcih2YXIgdmFsPVtdLGk9MCxtYXg9dGhpcy5sZW5ndGg7aTxtYXg7aSsrKXt2YXIgZWw9dGhpc1tpXTt2YXIgdj0kLmZpZWxkVmFsdWUoZWwsc3VjY2Vzc2Z1bCk7aWYodj09PW51bGx8fHR5cGVvZiB2PT0ndW5kZWZpbmVkJ3x8KHYuY29uc3RydWN0b3I9PUFycmF5JiYhdi5sZW5ndGgpKWNvbnRpbnVlO3YuY29uc3RydWN0b3I9PUFycmF5PyQubWVyZ2UodmFsLHYpOnZhbC5wdXNoKHYpfXJldHVybiB2YWx9OyQuZmllbGRWYWx1ZT1mdW5jdGlvbihlbCxzdWNjZXNzZnVsKXt2YXIgbj1lbC5uYW1lLHQ9ZWwudHlwZSx0YWc9ZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHR5cGVvZiBzdWNjZXNzZnVsPT0ndW5kZWZpbmVkJylzdWNjZXNzZnVsPXRydWU7aWYoc3VjY2Vzc2Z1bCYmKCFufHxlbC5kaXNhYmxlZHx8dD09J3Jlc2V0J3x8dD09J2J1dHRvbid8fCh0PT0nY2hlY2tib3gnfHx0PT0ncmFkaW8nKSYmIWVsLmNoZWNrZWR8fCh0PT0nc3VibWl0J3x8dD09J2ltYWdlJykmJmVsLmZvcm0mJmVsLmZvcm0uY2xrIT1lbHx8dGFnPT0nc2VsZWN0JyYmZWwuc2VsZWN0ZWRJbmRleD09LTEpKXJldHVybiBudWxsO2lmKHRhZz09J3NlbGVjdCcpe3ZhciBpbmRleD1lbC5zZWxlY3RlZEluZGV4O2lmKGluZGV4PDApcmV0dXJuIG51bGw7dmFyIGE9W10sb3BzPWVsLm9wdGlvbnM7dmFyIG9uZT0odD09J3NlbGVjdC1vbmUnKTt2YXIgbWF4PShvbmU/aW5kZXgrMTpvcHMubGVuZ3RoKTtmb3IodmFyIGk9KG9uZT9pbmRleDowKTtpPG1heDtpKyspe3ZhciBvcD1vcHNbaV07aWYob3Auc2VsZWN0ZWQpe3ZhciB2PW9wLnZhbHVlO2lmKCF2KXY9KG9wLmF0dHJpYnV0ZXMmJm9wLmF0dHJpYnV0ZXNbJ3ZhbHVlJ10mJiEob3AuYXR0cmlidXRlc1sndmFsdWUnXS5zcGVjaWZpZWQpKT9vcC50ZXh0Om9wLnZhbHVlO2lmKG9uZSlyZXR1cm4gdjthLnB1c2godil9fXJldHVybiBhfXJldHVybiBlbC52YWx1ZX07JC5mbi5jbGVhckZvcm09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7JCgnaW5wdXQsc2VsZWN0LHRleHRhcmVhJyx0aGlzKS5jbGVhckZpZWxkcygpfSl9OyQuZm4uY2xlYXJGaWVsZHM9JC5mbi5jbGVhcklucHV0cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGUsdGFnPXRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHQ9PSd0ZXh0J3x8dD09J3Bhc3N3b3JkJ3x8dGFnPT0ndGV4dGFyZWEnKXRoaXMudmFsdWU9Jyc7ZWxzZSBpZih0PT0nY2hlY2tib3gnfHx0PT0ncmFkaW8nKXRoaXMuY2hlY2tlZD1mYWxzZTtlbHNlIGlmKHRhZz09J3NlbGVjdCcpdGhpcy5zZWxlY3RlZEluZGV4PS0xfSl9OyQuZm4ucmVzZXRGb3JtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKHR5cGVvZiB0aGlzLnJlc2V0PT0nZnVuY3Rpb24nfHwodHlwZW9mIHRoaXMucmVzZXQ9PSdvYmplY3QnJiYhdGhpcy5yZXNldC5ub2RlVHlwZSkpdGhpcy5yZXNldCgpfSl9OyQuZm4uZW5hYmxlPWZ1bmN0aW9uKGIpe2lmKGI9PXVuZGVmaW5lZCliPXRydWU7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9IWJ9KX07JC5mbi5zZWxlY3RlZD1mdW5jdGlvbihzZWxlY3Qpe2lmKHNlbGVjdD09dW5kZWZpbmVkKXNlbGVjdD10cnVlO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGU7aWYodD09J2NoZWNrYm94J3x8dD09J3JhZGlvJyl0aGlzLmNoZWNrZWQ9c2VsZWN0O2Vsc2UgaWYodGhpcy50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSdvcHRpb24nKXt2YXIgJHNlbD0kKHRoaXMpLnBhcmVudCgnc2VsZWN0Jyk7aWYoc2VsZWN0JiYkc2VsWzBdJiYkc2VsWzBdLnR5cGU9PSdzZWxlY3Qtb25lJyl7JHNlbC5maW5kKCdvcHRpb24nKS5zZWxlY3RlZChmYWxzZSl9dGhpcy5zZWxlY3RlZD1zZWxlY3R9fSl9O2Z1bmN0aW9uIGxvZygpe2lmKCQuZm4uYWpheFN1Ym1pdC5kZWJ1Zyl7dmFyIG1zZz0nW2pxdWVyeS5mb3JtXSAnK0FycmF5LnByb3RvdHlwZS5qb2luLmNhbGwoYXJndW1lbnRzLCcnKTtpZih3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKXdpbmRvdy5jb25zb2xlLmxvZyhtc2cpO2Vsc2UgaWYod2luZG93Lm9wZXJhJiZ3aW5kb3cub3BlcmEucG9zdEVycm9yKXdpbmRvdy5vcGVyYS5wb3N0RXJyb3IobXNnKX19fSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/js/jq.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJhcnkgdjEuNQogKiBodHRwOi8vanF1ZXJ5LmNvbS8KICoKICogQ29weXJpZ2h0IDIwMTEsIEpvaG4gUmVzaWcKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKICoKICogSW5jbHVkZXMgU2l6emxlLmpzCiAqIGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqIENvcHlyaWdodCAyMDExLCBUaGUgRG9qbyBGb3VuZGF0aW9uCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICoKICogRGF0ZTogTW9uIEphbiAzMSAwODozMToyOSAyMDExIC0wNTAwCiAqLwooZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBiJChhKXtyZXR1cm4gZC5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGJYKGEpe2lmKCFiUlthXSl7dmFyIGI9ZCgiPCIrYSsiPiIpLmFwcGVuZFRvKCJib2R5IiksYz1iLmNzcygiZGlzcGxheSIpO2IucmVtb3ZlKCk7aWYoYz09PSJub25lInx8Yz09PSIiKWM9ImJsb2NrIjtiUlthXT1jfXJldHVybiBiUlthXX1mdW5jdGlvbiBiVyhhLGIpe3ZhciBjPXt9O2QuZWFjaChiVi5jb25jYXQuYXBwbHkoW10sYlYuc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBiSihhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBlPWEuZGF0YVR5cGVzLGY9YS5jb252ZXJ0ZXJzLGcsaD1lLmxlbmd0aCxpLGo9ZVswXSxrLGwsbSxuLG87Zm9yKGc9MTtnPGg7ZysrKXtrPWosaj1lW2ddO2lmKGo9PT0iKiIpaj1rO2Vsc2UgaWYoayE9PSIqIiYmayE9PWope2w9aysiICIraixtPWZbbF18fGZbIiogIitqXTtpZighbSl7bz1iO2ZvcihuIGluIGYpe2k9bi5zcGxpdCgiICIpO2lmKGlbMF09PT1rfHxpWzBdPT09IioiKXtvPWZbaVsxXSsiICIral07aWYobyl7bj1mW25dLG49PT0hMD9tPW86bz09PSEwJiYobT1uKTticmVha319fX0hbSYmIW8mJmQuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK2wucmVwbGFjZSgiICIsIiB0byAiKSksbSE9PSEwJiYoYz1tP20oYyk6byhuKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGJJKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1jLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gYkgoYSxiLGMsZSl7ZC5pc0FycmF5KGIpJiZiLmxlbmd0aD9kLmVhY2goYixmdW5jdGlvbihiLGYpe2N8fGJwLnRlc3QoYSk/ZShhLGYpOmJIKGErIlsiKyh0eXBlb2YgZj09PSJvYmplY3QifHxkLmlzQXJyYXkoZik/YjoiIikrIl0iLGYsYyxlKX0pOmN8fGI9PW51bGx8fHR5cGVvZiBiIT09Im9iamVjdCI/ZShhLGIpOmQuaXNBcnJheShiKXx8ZC5pc0VtcHR5T2JqZWN0KGIpP2UoYSwiIik6ZC5lYWNoKGIsZnVuY3Rpb24oYixkKXtiSChhKyJbIitiKyJdIixkLGMsZSl9KX1mdW5jdGlvbiBiRyhhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YkQsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09PSJzdHJpbmciJiYoZ1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iRyhhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iRyhhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYkYoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZC5pc0Z1bmN0aW9uKGMpKXt2YXIgZT1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYnopLGY9MCxnPWUubGVuZ3RoLGgsaSxqO2Zvcig7ZjxnO2YrKyloPWVbZl0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBibihhLGIsYyl7dmFyIGU9Yj09PSJ3aWR0aCI/Ymg6YmksZj1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0O2lmKGM9PT0iYm9yZGVyIilyZXR1cm4gZjtkLmVhY2goZSxmdW5jdGlvbigpe2N8fChmLT1wYXJzZUZsb2F0KGQuY3NzKGEsInBhZGRpbmciK3RoaXMpKXx8MCksYz09PSJtYXJnaW4iP2YrPXBhcnNlRmxvYXQoZC5jc3MoYSwibWFyZ2luIit0aGlzKSl8fDA6Zi09cGFyc2VGbG9hdChkLmNzcyhhLCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwfSk7cmV0dXJuIGZ9ZnVuY3Rpb24gXyhhLGIpe2Iuc3JjP2QuYWpheCh7dXJsOmIuc3JjLGFzeW5jOiExLGRhdGFUeXBlOiJzY3JpcHQifSk6ZC5nbG9iYWxFdmFsKGIudGV4dHx8Yi50ZXh0Q29udGVudHx8Yi5pbm5lckhUTUx8fCIiKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiAkKGEsYil7aWYoYi5ub2RlVHlwZT09PTEpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtiLmNsZWFyQXR0cmlidXRlcygpLGIubWVyZ2VBdHRyaWJ1dGVzKGEpO2lmKGM9PT0ib2JqZWN0IiliLm91dGVySFRNTD1hLm91dGVySFRNTDtlbHNlIGlmKGMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iKXtpZihjPT09Im9wdGlvbiIpYi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDtlbHNlIGlmKGM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIiliLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZX1lbHNlIGEuY2hlY2tlZCYmKGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCksYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpO2IucmVtb3ZlQXR0cmlidXRlKGQuZXhwYW5kbyl9fWZ1bmN0aW9uIFooYSxiKXtpZihiLm5vZGVUeXBlPT09MSYmZC5oYXNEYXRhKGEpKXt2YXIgYz1kLmV4cGFuZG8sZT1kLmRhdGEoYSksZj1kLmRhdGEoYixlKTtpZihlPWVbY10pe3ZhciBnPWUuZXZlbnRzO2Y9ZltjXT1kLmV4dGVuZCh7fSxlKTtpZihnKXtkZWxldGUgZi5oYW5kbGUsZi5ldmVudHM9e307Zm9yKHZhciBoIGluIGcpZm9yKHZhciBpPTAsaj1nW2hdLmxlbmd0aDtpPGo7aSsrKWQuZXZlbnQuYWRkKGIsaCxnW2hdW2ldLGdbaF1baV0uZGF0YSl9fX19ZnVuY3Rpb24gWShhLGIpe3JldHVybiBkLm5vZGVOYW1lKGEsInRhYmxlIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBPKGEsYixjKXtpZihkLmlzRnVuY3Rpb24oYikpcmV0dXJuIGQuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7dmFyIGU9ISFiLmNhbGwoYSxkLGEpO3JldHVybiBlPT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIGQuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGE9PT1iPT09Y30pO2lmKHR5cGVvZiBiPT09InN0cmluZyIpe3ZhciBlPWQuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT09MX0pO2lmKEoudGVzdChiKSlyZXR1cm4gZC5maWx0ZXIoYixlLCFjKTtiPWQuZmlsdGVyKGIsZSl9cmV0dXJuIGQuZ3JlcChhLGZ1bmN0aW9uKGEsZSl7cmV0dXJuIGQuaW5BcnJheShhLGIpPj0wPT09Y30pfWZ1bmN0aW9uIE4oYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExfWZ1bmN0aW9uIEYoYSxiKXtyZXR1cm4oYSYmYSE9PSIqIj9hKyIuIjoiIikrYi5yZXBsYWNlKHEsImAiKS5yZXBsYWNlKHIsIiYiKX1mdW5jdGlvbiBFKGEpe3ZhciBiLGMsZSxmLGcsaCxpLGosayxsLG0sbixwLHE9W10scj1bXSxzPWQuX2RhdGEodGhpcyx1KTt0eXBlb2Ygcz09PSJmdW5jdGlvbiImJihzPXMuZXZlbnRzKTtpZihhLmxpdmVGaXJlZCE9PXRoaXMmJnMmJnMubGl2ZSYmIWEudGFyZ2V0LmRpc2FibGVkJiYoIWEuYnV0dG9ufHxhLnR5cGUhPT0iY2xpY2siKSl7YS5uYW1lc3BhY2UmJihuPW5ldyBSZWdFeHAoIihefFxcLikiK2EubmFtZXNwYWNlLnNwbGl0KCIuIikuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGEubGl2ZUZpcmVkPXRoaXM7dmFyIHQ9cy5saXZlLnNsaWNlKDApO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspZz10W2ldLGcub3JpZ1R5cGUucmVwbGFjZShvLCIiKT09PWEudHlwZT9yLnB1c2goZy5zZWxlY3Rvcik6dC5zcGxpY2UoaS0tLDEpO2Y9ZChhLnRhcmdldCkuY2xvc2VzdChyLGEuY3VycmVudFRhcmdldCk7Zm9yKGo9MCxrPWYubGVuZ3RoO2o8aztqKyspe209ZltqXTtmb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXtnPXRbaV07aWYobS5zZWxlY3Rvcj09PWcuc2VsZWN0b3ImJighbnx8bi50ZXN0KGcubmFtZXNwYWNlKSkpe2g9bS5lbGVtLGU9bnVsbDtpZihnLnByZVR5cGU9PT0ibW91c2VlbnRlciJ8fGcucHJlVHlwZT09PSJtb3VzZWxlYXZlIilhLnR5cGU9Zy5wcmVUeXBlLGU9ZChhLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3QoZy5zZWxlY3RvcilbMF07KCFlfHxlIT09aCkmJnEucHVzaCh7ZWxlbTpoLGhhbmRsZU9iajpnLGxldmVsOm0ubGV2ZWx9KX19fWZvcihqPTAsaz1xLmxlbmd0aDtqPGs7aisrKXtmPXFbal07aWYoYyYmZi5sZXZlbD5jKWJyZWFrO2EuY3VycmVudFRhcmdldD1mLmVsZW0sYS5kYXRhPWYuaGFuZGxlT2JqLmRhdGEsYS5oYW5kbGVPYmo9Zi5oYW5kbGVPYmoscD1mLmhhbmRsZU9iai5vcmlnSGFuZGxlci5hcHBseShmLmVsZW0sYXJndW1lbnRzKTtpZihwPT09ITF8fGEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yz1mLmxldmVsLHA9PT0hMSYmKGI9ITEpO2lmKGEuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVha319cmV0dXJuIGJ9fWZ1bmN0aW9uIEMoYSxiLGMpe2NbMF0udHlwZT1hO3JldHVybiBkLmV2ZW50LmhhbmRsZS5hcHBseShiLGMpfWZ1bmN0aW9uIHcoKXtyZXR1cm4hMH1mdW5jdGlvbiB2KCl7cmV0dXJuITF9ZnVuY3Rpb24gZihhLGMsZil7aWYoZj09PWImJmEubm9kZVR5cGU9PT0xKXtmPWEuZ2V0QXR0cmlidXRlKCJkYXRhLSIrYyk7aWYodHlwZW9mIGY9PT0ic3RyaW5nIil7dHJ5e2Y9Zj09PSJ0cnVlIj8hMDpmPT09ImZhbHNlIj8hMTpmPT09Im51bGwiP251bGw6ZC5pc05hTihmKT9lLnRlc3QoZik/ZC5wYXJzZUpTT04oZik6ZjpwYXJzZUZsb2F0KGYpfWNhdGNoKGcpe31kLmRhdGEoYSxjLGYpfWVsc2UgZj1ifXJldHVybiBmfXZhciBjPWEuZG9jdW1lbnQsZD1mdW5jdGlvbigpe2Z1bmN0aW9uIEkoKXtpZighZC5pc1JlYWR5KXt0cnl7Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KEksMSk7cmV0dXJufWQucmVhZHkoKX19dmFyIGQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGQuZm4uaW5pdChhLGIsZyl9LGU9YS5qUXVlcnksZj1hLiQsZyxoPS9eKD86W148XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSspJCkvLGk9L1xTLyxqPS9eXHMrLyxrPS9ccyskLyxsPS9cZC8sbT0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT4pPyQvLG49L15bXF0sOnt9XHNdKiQvLG89L1xcKD86WyJcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZyxwPS8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZyxxPS8oPzpefDp8LCkoPzpccypcWykrL2cscj0vKHdlYmtpdClbIFwvXShbXHcuXSspLyxzPS8ob3BlcmEpKD86Lip2ZXJzaW9uKT9bIFwvXShbXHcuXSspLyx0PS8obXNpZSkgKFtcdy5dKykvLHU9Lyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKSk/Lyx2PW5hdmlnYXRvci51c2VyQWdlbnQsdyx4PSExLHksej0idGhlbiBkb25lIGZhaWwgaXNSZXNvbHZlZCBpc1JlamVjdGVkIHByb21pc2UiLnNwbGl0KCIgIiksQSxCPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsQz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEQ9QXJyYXkucHJvdG90eXBlLnB1c2gsRT1BcnJheS5wcm90b3R5cGUuc2xpY2UsRj1TdHJpbmcucHJvdG90eXBlLnRyaW0sRz1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixIPXt9O2QuZm49ZC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQsaW5pdDpmdW5jdGlvbihhLGUsZil7dmFyIGcsaSxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFlJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9ImJvZHkiLHRoaXMubGVuZ3RoPTE7cmV0dXJuIHRoaXN9aWYodHlwZW9mIGE9PT0ic3RyaW5nIil7Zz1oLmV4ZWMoYSk7aWYoIWd8fCFnWzFdJiZlKXJldHVybiFlfHxlLmpxdWVyeT8oZXx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGUpLmZpbmQoYSk7aWYoZ1sxXSl7ZT1lIGluc3RhbmNlb2YgZD9lWzBdOmUsaz1lP2Uub3duZXJEb2N1bWVudHx8ZTpjLGo9bS5leGVjKGEpLGo/ZC5pc1BsYWluT2JqZWN0KGUpPyhhPVtjLmNyZWF0ZUVsZW1lbnQoalsxXSldLGQuZm4uYXR0ci5jYWxsKGEsZSwhMCkpOmE9W2suY3JlYXRlRWxlbWVudChqWzFdKV06KGo9ZC5idWlsZEZyYWdtZW50KFtnWzFdXSxba10pLGE9KGouY2FjaGVhYmxlP2QuY2xvbmUoai5mcmFnbWVudCk6ai5mcmFnbWVudCkuY2hpbGROb2Rlcyk7cmV0dXJuIGQubWVyZ2UodGhpcyxhKX1pPWMuZ2V0RWxlbWVudEJ5SWQoZ1syXSk7aWYoaSYmaS5wYXJlbnROb2RlKXtpZihpLmlkIT09Z1syXSlyZXR1cm4gZi5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1pfXRoaXMuY29udGV4dD1jLHRoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31pZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGYucmVhZHkoYSk7YS5zZWxlY3RvciE9PWImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCk7cmV0dXJuIGQubWFrZUFycmF5KGEsdGhpcyl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS41IixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEUuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmNvbnN0cnVjdG9yKCk7ZC5pc0FycmF5KGEpP0QuYXBwbHkoZSxhKTpkLm1lcmdlKGUsYSksZS5wcmV2T2JqZWN0PXRoaXMsZS5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Uuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGUuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBlfSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGQuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1bmN0aW9uKGEpe2QuYmluZFJlYWR5KCkseS5kb25lKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXtyZXR1cm4gYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLCthKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhFLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEUuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkQsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGQuZm4uaW5pdC5wcm90b3R5cGU9ZC5mbixkLmV4dGVuZD1kLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZSxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT09Im9iamVjdCImJiFkLmlzRnVuY3Rpb24oaSkmJihpPXt9KSxrPT09aiYmKGk9dGhpcywtLWopO2Zvcig7ajxrO2orKylpZigoYT1hcmd1bWVudHNbal0pIT1udWxsKWZvcihjIGluIGEpe2U9aVtjXSxmPWFbY107aWYoaT09PWYpY29udGludWU7bCYmZiYmKGQuaXNQbGFpbk9iamVjdChmKXx8KGc9ZC5pc0FycmF5KGYpKSk/KGc/KGc9ITEsaD1lJiZkLmlzQXJyYXkoZSk/ZTpbXSk6aD1lJiZkLmlzUGxhaW5PYmplY3QoZSk/ZTp7fSxpW2NdPWQuZXh0ZW5kKGwsaCxmKSk6ZiE9PWImJihpW2NdPWYpfXJldHVybiBpfSxkLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihiKXthLiQ9ZixiJiYoYS5qUXVlcnk9ZSk7cmV0dXJuIGR9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEscmVhZHk6ZnVuY3Rpb24oYSl7YT09PSEwJiZkLnJlYWR5V2FpdC0tO2lmKCFkLnJlYWR5V2FpdHx8YSE9PSEwJiYhZC5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGQucmVhZHksMSk7ZC5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1kLnJlYWR5V2FpdD4wKXJldHVybjt5LnJlc29sdmVXaXRoKGMsW2RdKSxkLmZuLnRyaWdnZXImJmQoYykudHJpZ2dlcigicmVhZHkiKS51bmJpbmQoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZigheCl7eD0hMDtpZihjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBzZXRUaW1lb3V0KGQucmVhZHksMSk7aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixkLnJlYWR5LCExKTtlbHNlIGlmKGMuYXR0YWNoRXZlbnQpe2MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQSksYS5hdHRhY2hFdmVudCgib25sb2FkIixkLnJlYWR5KTt2YXIgYj0hMTt0cnl7Yj1hLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChlKXt9Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmImJkkoKX19fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBkLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBkLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSYmdHlwZW9mIGE9PT0ib2JqZWN0IiYmInNldEludGVydmFsImluIGF9LGlzTmFOOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHwhbC50ZXN0KGEpfHxpc05hTihhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6SFtCLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZC50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGQuaXNXaW5kb3coYSkpcmV0dXJuITE7aWYoYS5jb25zdHJ1Y3RvciYmIUMuY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhQy5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITE7dmFyIGM7Zm9yKGMgaW4gYSl7fXJldHVybiBjPT09Ynx8Qy5jYWxsKGEsYyl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IGF9LHBhcnNlSlNPTjpmdW5jdGlvbihiKXtpZih0eXBlb2YgYiE9PSJzdHJpbmcifHwhYilyZXR1cm4gbnVsbDtiPWQudHJpbShiKTtpZihuLnRlc3QoYi5yZXBsYWNlKG8sIkAiKS5yZXBsYWNlKHAsIl0iKS5yZXBsYWNlKHEsIiIpKSlyZXR1cm4gYS5KU09OJiZhLkpTT04ucGFyc2U/YS5KU09OLnBhcnNlKGIpOihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO2QuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYixjLGUpe2EuRE9NUGFyc2VyPyhlPW5ldyBET01QYXJzZXIsYz1lLnBhcnNlRnJvbVN0cmluZyhiLCJ0ZXh0L3htbCIpKTooYz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGMuYXN5bmM9ImZhbHNlIixjLmxvYWRYTUwoYikpLGU9Yy5kb2N1bWVudEVsZW1lbnQsKCFlfHwhZS5ub2RlTmFtZXx8ZS5ub2RlTmFtZT09PSJwYXJzZXJlcnJvciIpJiZkLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKTtyZXR1cm4gY30sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXtpZihhJiZpLnRlc3QoYSkpe3ZhciBiPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQsZT1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2UudHlwZT0idGV4dC9qYXZhc2NyaXB0IixkLnN1cHBvcnQuc2NyaXB0RXZhbCgpP2UuYXBwZW5kQ2hpbGQoYy5jcmVhdGVUZXh0Tm9kZShhKSk6ZS50ZXh0PWEsYi5pbnNlcnRCZWZvcmUoZSxiLmZpcnN0Q2hpbGQpLGIucmVtb3ZlQ2hpbGQoZSl9fSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGQuaXNGdW5jdGlvbihhKTtpZihlKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxlKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGUpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcih2YXIgaj1hWzBdO2c8aCYmYy5jYWxsKGosZyxqKSE9PSExO2o9YVsrK2ddKXt9cmV0dXJuIGF9LHRyaW06Rj9mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjpGLmNhbGwoYSl9OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOihhKyIiKS5yZXBsYWNlKGosIiIpLnJlcGxhY2UoaywiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO2lmKGEhPW51bGwpe3ZhciBlPWQudHlwZShhKTthLmxlbmd0aD09bnVsbHx8ZT09PSJzdHJpbmcifHxlPT09ImZ1bmN0aW9uInx8ZT09PSJyZWdleHAifHxkLmlzV2luZG93KGEpP0QuY2FsbChjLGEpOmQubWVyZ2UoYyxhKX1yZXR1cm4gY30saW5BcnJheTpmdW5jdGlvbihhLGIpe2lmKGIuaW5kZXhPZilyZXR1cm4gYi5pbmRleE9mKGEpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylpZihiW2NdPT09YSlyZXR1cm4gYztyZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmxlbmd0aCxlPTA7aWYodHlwZW9mIGMubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBmPWMubGVuZ3RoO2U8ZjtlKyspYVtkKytdPWNbZV07ZWxzZSB3aGlsZShjW2VdIT09YilhW2QrK109Y1tlKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU7Yz0hIWM7Zm9yKHZhciBmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWU9ISFiKGFbZl0sZiksYyE9PWUmJmQucHVzaChhW2ZdKTtyZXR1cm4gZH0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPWIoYVtmXSxmLGMpLGUhPW51bGwmJihkW2QubGVuZ3RoXT1lKTtyZXR1cm4gZC5jb25jYXQuYXBwbHkoW10sZCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGMsZSl7YXJndW1lbnRzLmxlbmd0aD09PTImJih0eXBlb2YgYz09PSJzdHJpbmciPyhlPWEsYT1lW2NdLGM9Yik6YyYmIWQuaXNGdW5jdGlvbihjKSYmKGU9YyxjPWIpKSwhYyYmYSYmKGM9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShlfHx0aGlzLGFyZ3VtZW50cyl9KSxhJiYoYy5ndWlkPWEuZ3VpZD1hLmd1aWR8fGMuZ3VpZHx8ZC5ndWlkKyspO3JldHVybiBjfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGUsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT09Im9iamVjdCIpe2Zvcih2YXIgaiBpbiBjKWQuYWNjZXNzKGEsaixjW2pdLGYsZyxlKTtyZXR1cm4gYX1pZihlIT09Yil7Zj0haCYmZiYmZC5pc0Z1bmN0aW9uKGUpO2Zvcih2YXIgaz0wO2s8aTtrKyspZyhhW2tdLGMsZj9lLmNhbGwoYVtrXSxrLGcoYVtrXSxjKSk6ZSxoKTtyZXR1cm4gYX1yZXR1cm4gaT9nKGFbMF0sYyk6Yn0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9LF9EZWZlcnJlZDpmdW5jdGlvbigpe3ZhciBhPVtdLGIsYyxlLGY9e2RvbmU6ZnVuY3Rpb24oKXtpZighZSl7dmFyIGM9YXJndW1lbnRzLGcsaCxpLGosaztiJiYoaz1iLGI9MCk7Zm9yKGc9MCxoPWMubGVuZ3RoO2c8aDtnKyspaT1jW2ddLGo9ZC50eXBlKGkpLGo9PT0iYXJyYXkiP2YuZG9uZS5hcHBseShmLGkpOmo9PT0iZnVuY3Rpb24iJiZhLnB1c2goaSk7ayYmZi5yZXNvbHZlV2l0aChrWzBdLGtbMV0pfXJldHVybiB0aGlzfSxyZXNvbHZlV2l0aDpmdW5jdGlvbihkLGYpe2lmKCFlJiYhYiYmIWMpe2M9MTt0cnl7d2hpbGUoYVswXSlhLnNoaWZ0KCkuYXBwbHkoZCxmKX1maW5hbGx5e2I9W2QsZl0sYz0wfX1yZXR1cm4gdGhpc30scmVzb2x2ZTpmdW5jdGlvbigpe2YucmVzb2x2ZVdpdGgoZC5pc0Z1bmN0aW9uKHRoaXMucHJvbWlzZSk/dGhpcy5wcm9taXNlKCk6dGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxpc1Jlc29sdmVkOmZ1bmN0aW9uKCl7cmV0dXJuIGN8fGJ9LGNhbmNlbDpmdW5jdGlvbigpe2U9MSxhPVtdO3JldHVybiB0aGlzfX07cmV0dXJuIGZ9LERlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPWQuX0RlZmVycmVkKCksYz1kLl9EZWZlcnJlZCgpLGU7ZC5leHRlbmQoYix7dGhlbjpmdW5jdGlvbihhLGMpe2IuZG9uZShhKS5mYWlsKGMpO3JldHVybiB0aGlzfSxmYWlsOmMuZG9uZSxyZWplY3RXaXRoOmMucmVzb2x2ZVdpdGgscmVqZWN0OmMucmVzb2x2ZSxpc1JlamVjdGVkOmMuaXNSZXNvbHZlZCxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7aWYoYT09bnVsbCl7aWYoZSlyZXR1cm4gZTtlPWE9e319Yz16Lmxlbmd0aDt3aGlsZShjLS0pYVt6W2NdXT1iW3pbY11dO3JldHVybiBhfX0pLGIudGhlbihjLmNhbmNlbCxiLmNhbmNlbCksZGVsZXRlIGIuY2FuY2VsLGEmJmEuY2FsbChiLGIpO3JldHVybiBifSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWIubGVuZ3RoLGU9Yzw9MSYmYSYmZC5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpkLkRlZmVycmVkKCksZj1lLnByb21pc2UoKSxnO2M+MT8oZz1BcnJheShjKSxkLmVhY2goYixmdW5jdGlvbihhLGIpe2Qud2hlbihiKS50aGVuKGZ1bmN0aW9uKGIpe2dbYV09YXJndW1lbnRzLmxlbmd0aD4xP0UuY2FsbChhcmd1bWVudHMsMCk6YiwtLWN8fGUucmVzb2x2ZVdpdGgoZixnKX0sZS5yZWplY3QpfSkpOmUhPT1hJiZlLnJlc29sdmUoYSk7cmV0dXJuIGZ9LHVhTWF0Y2g6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7dmFyIGI9ci5leGVjKGEpfHxzLmV4ZWMoYSl8fHQuZXhlYyhhKXx8YS5pbmRleE9mKCJjb21wYXRpYmxlIik8MCYmdS5leGVjKGEpfHxbXTtyZXR1cm57YnJvd3NlcjpiWzFdfHwiIix2ZXJzaW9uOmJbMl18fCIwIn19LHN1YjpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm4gbmV3IGEuZm4uaW5pdChiLGMpfWQuZXh0ZW5kKCEwLGEsdGhpcyksYS5zdXBlcmNsYXNzPXRoaXMsYS5mbj1hLnByb3RvdHlwZT10aGlzKCksYS5mbi5jb25zdHJ1Y3Rvcj1hLGEuc3ViY2xhc3M9dGhpcy5zdWJjbGFzcyxhLmZuLmluaXQ9ZnVuY3Rpb24gYihiLGMpe2MmJmMgaW5zdGFuY2VvZiBkJiYhKGMgaW5zdGFuY2VvZiBhKSYmKGM9YShjKSk7cmV0dXJuIGQuZm4uaW5pdC5jYWxsKHRoaXMsYixjLGUpfSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm47dmFyIGU9YShjKTtyZXR1cm4gYX0sYnJvd3Nlcjp7fX0pLHk9ZC5fRGVmZXJyZWQoKSxkLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtIWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pLHc9ZC51YU1hdGNoKHYpLHcuYnJvd3NlciYmKGQuYnJvd3Nlclt3LmJyb3dzZXJdPSEwLGQuYnJvd3Nlci52ZXJzaW9uPXcudmVyc2lvbiksZC5icm93c2VyLndlYmtpdCYmKGQuYnJvd3Nlci5zYWZhcmk9ITApLEcmJihkLmluQXJyYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gRy5jYWxsKGIsYSl9KSxpLnRlc3QoIiAiKSYmKGo9L15bXHNceEEwXSsvLGs9L1tcc1x4QTBdKyQvKSxnPWQoYyksYy5hZGRFdmVudExpc3RlbmVyP0E9ZnVuY3Rpb24oKXtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEEsITEpLGQucmVhZHkoKX06Yy5hdHRhY2hFdmVudCYmKEE9ZnVuY3Rpb24oKXtjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoYy5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixBKSxkLnJlYWR5KCkpfSk7cmV0dXJuIGEualF1ZXJ5PWEuJD1kfSgpOyhmdW5jdGlvbigpe2Quc3VwcG9ydD17fTt2YXIgYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Iuc3R5bGUuZGlzcGxheT0ibm9uZSIsYi5pbm5lckhUTUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J2NvbG9yOnJlZDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iO3ZhciBlPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxnPWMuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksaD1nLmFwcGVuZENoaWxkKGMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2lmKGUmJmUubGVuZ3RoJiZmKXtkLnN1cHBvcnQ9e2xlYWRpbmdXaGl0ZXNwYWNlOmIuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi9yZWQvLnRlc3QoZi5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmYuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1JC8udGVzdChmLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhZi5zdHlsZS5jc3NGbG9hdCxjaGVja09uOmIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0udmFsdWU9PT0ib24iLG9wdFNlbGVjdGVkOmguc2VsZWN0ZWQsZGVsZXRlRXhwYW5kbzohMCxvcHREaXNhYmxlZDohMSxjaGVja0Nsb25lOiExLF9zY3JpcHRFdmFsOm51bGwsbm9DbG9uZUV2ZW50OiEwLGJveE1vZGVsOm51bGwsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlSGlkZGVuT2Zmc2V0czohMH0sZy5kaXNhYmxlZD0hMCxkLnN1cHBvcnQub3B0RGlzYWJsZWQ9IWguZGlzYWJsZWQsZC5zdXBwb3J0LnNjcmlwdEV2YWw9ZnVuY3Rpb24oKXtpZihkLnN1cHBvcnQuX3NjcmlwdEV2YWw9PT1udWxsKXt2YXIgYj1jLmRvY3VtZW50RWxlbWVudCxlPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZj0ic2NyaXB0IitkLm5vdygpO2UudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7ZS5hcHBlbmRDaGlsZChjLmNyZWF0ZVRleHROb2RlKCJ3aW5kb3cuIitmKyI9MTsiKSl9Y2F0Y2goZyl7fWIuaW5zZXJ0QmVmb3JlKGUsYi5maXJzdENoaWxkKSxhW2ZdPyhkLnN1cHBvcnQuX3NjcmlwdEV2YWw9ITAsZGVsZXRlIGFbZl0pOmQuc3VwcG9ydC5fc2NyaXB0RXZhbD0hMSxiLnJlbW92ZUNoaWxkKGUpLGI9ZT1mPW51bGx9cmV0dXJuIGQuc3VwcG9ydC5fc2NyaXB0RXZhbH07dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goaSl7ZC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG89ITF9Yi5hdHRhY2hFdmVudCYmYi5maXJlRXZlbnQmJihiLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBqKCl7ZC5zdXBwb3J0Lm5vQ2xvbmVFdmVudD0hMSxiLmRldGFjaEV2ZW50KCJvbmNsaWNrIixqKX0pLGIuY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSksYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVzdCcgY2hlY2tlZD0nY2hlY2tlZCcvPiI7dmFyIGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7ay5hcHBlbmRDaGlsZChiLmZpcnN0Q2hpbGQpLGQuc3VwcG9ydC5jaGVja0Nsb25lPWsuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGQoZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGI9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO2lmKGIpe2Euc3R5bGUud2lkdGg9YS5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4IixiLmFwcGVuZENoaWxkKGEpLGQuYm94TW9kZWw9ZC5zdXBwb3J0LmJveE1vZGVsPWEub2Zmc2V0V2lkdGg9PT0yLCJ6b29tImluIGEuc3R5bGUmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIsYS5zdHlsZS56b29tPTEsZC5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9YS5vZmZzZXRXaWR0aD09PTIsYS5zdHlsZS5kaXNwbGF5PSIiLGEuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSd3aWR0aDo0cHg7Jz48L2Rpdj4iLGQuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzPWEub2Zmc2V0V2lkdGghPT0yKSxhLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQgc3R5bGU9J3BhZGRpbmc6MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUnPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iO3ZhciBlPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7ZC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1lWzBdLm9mZnNldEhlaWdodD09PTAsZVswXS5zdHlsZS5kaXNwbGF5PSIiLGVbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsZC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1kLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiZlWzBdLm9mZnNldEhlaWdodD09PTAsYS5pbm5lckhUTUw9IiIsYi5yZW1vdmVDaGlsZChhKS5zdHlsZS5kaXNwbGF5PSJub25lIixhPWU9bnVsbH19KTt2YXIgbD1mdW5jdGlvbihhKXt2YXIgYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2E9Im9uIithO2lmKCFiLmF0dGFjaEV2ZW50KXJldHVybiEwO3ZhciBkPWEgaW4gYjtkfHwoYi5zZXRBdHRyaWJ1dGUoYSwicmV0dXJuOyIpLGQ9dHlwZW9mIGJbYV09PT0iZnVuY3Rpb24iKSxiPW51bGw7cmV0dXJuIGR9O2Quc3VwcG9ydC5zdWJtaXRCdWJibGVzPWwoInN1Ym1pdCIpLGQuc3VwcG9ydC5jaGFuZ2VCdWJibGVzPWwoImNoYW5nZSIpLGI9ZT1mPW51bGx9fSkoKTt2YXIgZT0vXig/Olx7LipcfXxcWy4qXF0pJC87ZC5leHRlbmQoe2NhY2hlOnt9LHV1aWQ6MCxleHBhbmRvOiJqUXVlcnkiKyhkLmZuLmpxdWVyeStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlP2QuY2FjaGVbYVtkLmV4cGFuZG9dXTphW2QuZXhwYW5kb107cmV0dXJuISFhJiYhZC5pc0VtcHR5T2JqZWN0KGEpfSxkYXRhOmZ1bmN0aW9uKGEsYyxlLGYpe2lmKGQuYWNjZXB0RGF0YShhKSl7dmFyIGc9ZC5leHBhbmRvLGg9dHlwZW9mIGM9PT0ic3RyaW5nIixpLGo9YS5ub2RlVHlwZSxrPWo/ZC5jYWNoZTphLGw9aj9hW2QuZXhwYW5kb106YVtkLmV4cGFuZG9dJiZkLmV4cGFuZG87aWYoKCFsfHxmJiZsJiYha1tsXVtnXSkmJmgmJmU9PT1iKXJldHVybjtsfHwoaj9hW2QuZXhwYW5kb109bD0rK2QudXVpZDpsPWQuZXhwYW5kbyksa1tsXXx8KGtbbF09e30pLHR5cGVvZiBjPT09Im9iamVjdCImJihmP2tbbF1bZ109ZC5leHRlbmQoa1tsXVtnXSxjKTprW2xdPWQuZXh0ZW5kKGtbbF0sYykpLGk9a1tsXSxmJiYoaVtnXXx8KGlbZ109e30pLGk9aVtnXSksZSE9PWImJihpW2NdPWUpO2lmKGM9PT0iZXZlbnRzIiYmIWlbY10pcmV0dXJuIGlbZ10mJmlbZ10uZXZlbnRzO3JldHVybiBoP2lbY106aX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYixjLGUpe2lmKGQuYWNjZXB0RGF0YShiKSl7dmFyIGY9ZC5leHBhbmRvLGc9Yi5ub2RlVHlwZSxoPWc/ZC5jYWNoZTpiLGk9Zz9iW2QuZXhwYW5kb106ZC5leHBhbmRvO2lmKCFoW2ldKXJldHVybjtpZihjKXt2YXIgaj1lP2hbaV1bZl06aFtpXTtpZihqKXtkZWxldGUgaltjXTtpZighZC5pc0VtcHR5T2JqZWN0KGopKXJldHVybn19aWYoZSl7ZGVsZXRlIGhbaV1bZl07aWYoIWQuaXNFbXB0eU9iamVjdChoW2ldKSlyZXR1cm59dmFyIGs9aFtpXVtmXTtkLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8aCE9YT9kZWxldGUgaFtpXTpoW2ldPW51bGwsaz8oaFtpXT17fSxoW2ldW2ZdPWspOmcmJihkLnN1cHBvcnQuZGVsZXRlRXhwYW5kbz9kZWxldGUgYltkLmV4cGFuZG9dOmIucmVtb3ZlQXR0cmlidXRlP2IucmVtb3ZlQXR0cmlidXRlKGQuZXhwYW5kbyk6YltkLmV4cGFuZG9dPW51bGwpfX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmRhdGEoYSxiLGMsITApfSxhY2NlcHREYXRhOmZ1bmN0aW9uKGEpe2lmKGEubm9kZU5hbWUpe3ZhciBiPWQubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV07aWYoYilyZXR1cm4gYiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn1yZXR1cm4hMH19KSxkLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBlPW51bGw7aWYodHlwZW9mIGE9PT0idW5kZWZpbmVkIil7aWYodGhpcy5sZW5ndGgpe2U9ZC5kYXRhKHRoaXNbMF0pO2lmKHRoaXNbMF0ubm9kZVR5cGU9PT0xKXt2YXIgZz10aGlzWzBdLmF0dHJpYnV0ZXMsaDtmb3IodmFyIGk9MCxqPWcubGVuZ3RoO2k8ajtpKyspaD1nW2ldLm5hbWUsaC5pbmRleE9mKCJkYXRhLSIpPT09MCYmKGg9aC5zdWJzdHIoNSksZih0aGlzWzBdLGgsZVtoXSkpfX1yZXR1cm4gZX1pZih0eXBlb2YgYT09PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmRhdGEodGhpcyxhKX0pO3ZhciBrPWEuc3BsaXQoIi4iKTtrWzFdPWtbMV0/Ii4iK2tbMV06IiI7aWYoYz09PWIpe2U9dGhpcy50cmlnZ2VySGFuZGxlcigiZ2V0RGF0YSIra1sxXSsiISIsW2tbMF1dKSxlPT09YiYmdGhpcy5sZW5ndGgmJihlPWQuZGF0YSh0aGlzWzBdLGEpLGU9Zih0aGlzWzBdLGEsZSkpO3JldHVybiBlPT09YiYma1sxXT90aGlzLmRhdGEoa1swXSk6ZX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlzKSxlPVtrWzBdLGNdO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2tbMV0rIiEiLGUpLGQuZGF0YSh0aGlzLGEsYyksYi50cmlnZ2VySGFuZGxlcigiY2hhbmdlRGF0YSIra1sxXSsiISIsZSl9KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxkLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSI7dmFyIGU9ZC5fZGF0YShhLGIpO2lmKCFjKXJldHVybiBlfHxbXTshZXx8ZC5pc0FycmF5KGMpP2U9ZC5fZGF0YShhLGIsZC5tYWtlQXJyYXkoYykpOmUucHVzaChjKTtyZXR1cm4gZX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ZC5xdWV1ZShhLGIpLGU9Yy5zaGlmdCgpO2U9PT0iaW5wcm9ncmVzcyImJihlPWMuc2hpZnQoKSksZSYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxlLmNhbGwoYSxmdW5jdGlvbigpe2QuZGVxdWV1ZShhLGIpfSkpLGMubGVuZ3RofHxkLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSIsITApfX0pLGQuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGMpe3R5cGVvZiBhIT09InN0cmluZyImJihjPWEsYT0iZngiKTtpZihjPT09YilyZXR1cm4gZC5xdWV1ZSh0aGlzWzBdLGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGU9ZC5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmVbMF0hPT0iaW5wcm9ncmVzcyImJmQuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1kLmZ4P2QuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oKXt2YXIgYz10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmRlcXVldWUoYyxiKX0sYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX19KTt2YXIgZz0vW1xuXHRccl0vZyxoPS9ccysvLGk9L1xyL2csaj0vXig/OmhyZWZ8c3JjfHN0eWxlKSQvLGs9L14oPzpidXR0b258aW5wdXQpJC9pLGw9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksbT0vXmEoPzpyZWEpPyQvaSxuPS9eKD86cmFkaW98Y2hlY2tib3gpJC9pO2QucHJvcHM9eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdGFiaW5kZXg6InRhYkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIn0sZC5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5hY2Nlc3ModGhpcyxhLGIsITAsZC5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmF0dHIodGhpcyxhLCIiKSx0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5yZW1vdmVBdHRyaWJ1dGUoYSl9KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKTtjLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsYy5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09PSJzdHJpbmciKXt2YXIgYj0oYXx8IiIpLnNwbGl0KGgpO2Zvcih2YXIgYz0wLGU9dGhpcy5sZW5ndGg7YzxlO2MrKyl7dmFyIGY9dGhpc1tjXTtpZihmLm5vZGVUeXBlPT09MSlpZihmLmNsYXNzTmFtZSl7dmFyIGc9IiAiK2YuY2xhc3NOYW1lKyIgIixpPWYuY2xhc3NOYW1lO2Zvcih2YXIgaj0wLGs9Yi5sZW5ndGg7ajxrO2orKylnLmluZGV4T2YoIiAiK2Jbal0rIiAiKTwwJiYoaSs9IiAiK2Jbal0pO2YuY2xhc3NOYW1lPWQudHJpbShpKX1lbHNlIGYuY2xhc3NOYW1lPWF9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1kKHRoaXMpO2MucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYixjLmF0dHIoImNsYXNzIikpKX0pO2lmKGEmJnR5cGVvZiBhPT09InN0cmluZyJ8fGE9PT1iKXt2YXIgYz0oYXx8IiIpLnNwbGl0KGgpO2Zvcih2YXIgZT0wLGY9dGhpcy5sZW5ndGg7ZTxmO2UrKyl7dmFyIGk9dGhpc1tlXTtpZihpLm5vZGVUeXBlPT09MSYmaS5jbGFzc05hbWUpaWYoYSl7dmFyIGo9KCIgIitpLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoZywiICIpO2Zvcih2YXIgaz0wLGw9Yy5sZW5ndGg7azxsO2srKylqPWoucmVwbGFjZSgiICIrY1trXSsiICIsIiAiKTtpLmNsYXNzTmFtZT1kLnRyaW0oail9ZWxzZSBpLmNsYXNzTmFtZT0iIn19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEsZT10eXBlb2YgYj09PSJib29sZWFuIjtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZT1kKHRoaXMpO2UudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyxlLmF0dHIoImNsYXNzIiksYiksYil9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoYz09PSJzdHJpbmciKXt2YXIgZixnPTAsaT1kKHRoaXMpLGo9YixrPWEuc3BsaXQoaCk7d2hpbGUoZj1rW2crK10paj1lP2o6IWkuaGFzQ2xhc3MoZiksaVtqPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oZil9ZWxzZSBpZihjPT09InVuZGVmaW5lZCJ8fGM9PT0iYm9vbGVhbiIpdGhpcy5jbGFzc05hbWUmJmQuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6ZC5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIifSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiPSIgIithKyIgIjtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspaWYoKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoZywiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXtpZighYXJndW1lbnRzLmxlbmd0aCl7dmFyIGM9dGhpc1swXTtpZihjKXtpZihkLm5vZGVOYW1lKGMsIm9wdGlvbiIpKXt2YXIgZT1jLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWV8fGUuc3BlY2lmaWVkP2MudmFsdWU6Yy50ZXh0fWlmKGQubm9kZU5hbWUoYywic2VsZWN0Iikpe3ZhciBmPWMuc2VsZWN0ZWRJbmRleCxnPVtdLGg9Yy5vcHRpb25zLGo9Yy50eXBlPT09InNlbGVjdC1vbmUiO2lmKGY8MClyZXR1cm4gbnVsbDtmb3IodmFyIGs9aj9mOjAsbD1qP2YrMTpoLmxlbmd0aDtrPGw7aysrKXt2YXIgbT1oW2tdO2lmKG0uc2VsZWN0ZWQmJihkLnN1cHBvcnQub3B0RGlzYWJsZWQ/IW0uZGlzYWJsZWQ6bS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFtLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFkLm5vZGVOYW1lKG0ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2E9ZChtKS52YWwoKTtpZihqKXJldHVybiBhO2cucHVzaChhKX19cmV0dXJuIGd9aWYobi50ZXN0KGMudHlwZSkmJiFkLnN1cHBvcnQuY2hlY2tPbilyZXR1cm4gYy5nZXRBdHRyaWJ1dGUoInZhbHVlIik9PT1udWxsPyJvbiI6Yy52YWx1ZTtyZXR1cm4oYy52YWx1ZXx8IiIpLnJlcGxhY2UoaSwiIil9cmV0dXJuIGJ9dmFyIG89ZC5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKSxlPWE7aWYodGhpcy5ub2RlVHlwZT09PTEpe28mJihlPWEuY2FsbCh0aGlzLGIsYy52YWwoKSkpLGU9PW51bGw/ZT0iIjp0eXBlb2YgZT09PSJudW1iZXIiP2UrPSIiOmQuaXNBcnJheShlKSYmKGU9ZC5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpO2lmKGQuaXNBcnJheShlKSYmbi50ZXN0KHRoaXMudHlwZSkpdGhpcy5jaGVja2VkPWQuaW5BcnJheShjLnZhbCgpLGUpPj0wO2Vsc2UgaWYoZC5ub2RlTmFtZSh0aGlzLCJzZWxlY3QiKSl7dmFyIGY9ZC5tYWtlQXJyYXkoZSk7ZCgib3B0aW9uIix0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1kLmluQXJyYXkoZCh0aGlzKS52YWwoKSxmKT49MH0pLGYubGVuZ3RofHwodGhpcy5zZWxlY3RlZEluZGV4PS0xKX1lbHNlIHRoaXMudmFsdWU9ZX19KX19KSxkLmV4dGVuZCh7YXR0ckZuOnt2YWw6ITAsY3NzOiEwLGh0bWw6ITAsdGV4dDohMCxkYXRhOiEwLHdpZHRoOiEwLGhlaWdodDohMCxvZmZzZXQ6ITB9LGF0dHI6ZnVuY3Rpb24oYSxjLGUsZil7aWYoIWF8fGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OHx8YS5ub2RlVHlwZT09PTIpcmV0dXJuIGI7aWYoZiYmYyBpbiBkLmF0dHJGbilyZXR1cm4gZChhKVtjXShlKTt2YXIgZz1hLm5vZGVUeXBlIT09MXx8IWQuaXNYTUxEb2MoYSksaD1lIT09YjtjPWcmJmQucHJvcHNbY118fGM7aWYoYS5ub2RlVHlwZT09PTEpe3ZhciBpPWoudGVzdChjKTtpZihjPT09InNlbGVjdGVkIiYmIWQuc3VwcG9ydC5vcHRTZWxlY3RlZCl7dmFyIG49YS5wYXJlbnROb2RlO24mJihuLnNlbGVjdGVkSW5kZXgsbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9aWYoKGMgaW4gYXx8YVtjXSE9PWIpJiZnJiYhaSl7aCYmKGM9PT0idHlwZSImJmsudGVzdChhLm5vZGVOYW1lKSYmYS5wYXJlbnROb2RlJiZkLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKSxlPT09bnVsbD9hLm5vZGVUeXBlPT09MSYmYS5yZW1vdmVBdHRyaWJ1dGUoYyk6YVtjXT1lKTtpZihkLm5vZGVOYW1lKGEsImZvcm0iKSYmYS5nZXRBdHRyaWJ1dGVOb2RlKGMpKXJldHVybiBhLmdldEF0dHJpYnV0ZU5vZGUoYykubm9kZVZhbHVlO2lmKGM9PT0idGFiSW5kZXgiKXt2YXIgbz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIG8mJm8uc3BlY2lmaWVkP28udmFsdWU6bC50ZXN0KGEubm9kZU5hbWUpfHxtLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9cmV0dXJuIGFbY119aWYoIWQuc3VwcG9ydC5zdHlsZSYmZyYmYz09PSJzdHlsZSIpe2gmJihhLnN0eWxlLmNzc1RleHQ9IiIrZSk7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dH1oJiZhLnNldEF0dHJpYnV0ZShjLCIiK2UpO2lmKCFhLmF0dHJpYnV0ZXNbY10mJihhLmhhc0F0dHJpYnV0ZSYmIWEuaGFzQXR0cmlidXRlKGMpKSlyZXR1cm4gYjt2YXIgcD0hZC5zdXBwb3J0LmhyZWZOb3JtYWxpemVkJiZnJiZpP2EuZ2V0QXR0cmlidXRlKGMsMik6YS5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIHA9PT1udWxsP2I6cH1oJiYoYVtjXT1lKTtyZXR1cm4gYVtjXX19KTt2YXIgbz0vXC4oLiopJC8scD0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2kscT0vXC4vZyxyPS8gL2cscz0vW15cd1xzLnxgXS9nLHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShzLCJcXCQmIil9LHU9ImV2ZW50cyI7ZC5ldmVudD17YWRkOmZ1bmN0aW9uKGMsZSxmLGcpe2lmKGMubm9kZVR5cGUhPT0zJiZjLm5vZGVUeXBlIT09OCl7ZC5pc1dpbmRvdyhjKSYmKGMhPT1hJiYhYy5mcmFtZUVsZW1lbnQpJiYoYz1hKTtpZihmPT09ITEpZj12O2Vsc2UgaWYoIWYpcmV0dXJuO3ZhciBoLGk7Zi5oYW5kbGVyJiYoaD1mLGY9aC5oYW5kbGVyKSxmLmd1aWR8fChmLmd1aWQ9ZC5ndWlkKyspO3ZhciBqPWQuX2RhdGEoYyk7aWYoIWopcmV0dXJuO3ZhciBrPWpbdV0sbD1qLmhhbmRsZTt0eXBlb2Ygaz09PSJmdW5jdGlvbiI/KGw9ay5oYW5kbGUsaz1rLmV2ZW50cyk6a3x8KGMubm9kZVR5cGV8fChqW3VdPWo9ZnVuY3Rpb24oKXt9KSxqLmV2ZW50cz1rPXt9KSxsfHwoai5oYW5kbGU9bD1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgZCE9PSJ1bmRlZmluZWQiJiYhZC5ldmVudC50cmlnZ2VyZWQ/ZC5ldmVudC5oYW5kbGUuYXBwbHkobC5lbGVtLGFyZ3VtZW50cyk6Yn0pLGwuZWxlbT1jLGU9ZS5zcGxpdCgiICIpO3ZhciBtLG49MCxvO3doaWxlKG09ZVtuKytdKXtpPWg/ZC5leHRlbmQoe30saCk6e2hhbmRsZXI6ZixkYXRhOmd9LG0uaW5kZXhPZigiLiIpPi0xPyhvPW0uc3BsaXQoIi4iKSxtPW8uc2hpZnQoKSxpLm5hbWVzcGFjZT1vLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIikpOihvPVtdLGkubmFtZXNwYWNlPSIiKSxpLnR5cGU9bSxpLmd1aWR8fChpLmd1aWQ9Zi5ndWlkKTt2YXIgcD1rW21dLHE9ZC5ldmVudC5zcGVjaWFsW21dfHx7fTtpZighcCl7cD1rW21dPVtdO2lmKCFxLnNldHVwfHxxLnNldHVwLmNhbGwoYyxnLG8sbCk9PT0hMSljLmFkZEV2ZW50TGlzdGVuZXI/Yy5hZGRFdmVudExpc3RlbmVyKG0sbCwhMSk6Yy5hdHRhY2hFdmVudCYmYy5hdHRhY2hFdmVudCgib24iK20sbCl9cS5hZGQmJihxLmFkZC5jYWxsKGMsaSksaS5oYW5kbGVyLmd1aWR8fChpLmhhbmRsZXIuZ3VpZD1mLmd1aWQpKSxwLnB1c2goaSksZC5ldmVudC5nbG9iYWxbbV09ITB9Yz1udWxsfX0sZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihhLGMsZSxmKXtpZihhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgpe2U9PT0hMSYmKGU9dik7dmFyIGcsaCxpLGosaz0wLGwsbSxuLG8scCxxLHIscz1kLmhhc0RhdGEoYSkmJmQuX2RhdGEoYSksdz1zJiZzW3VdO2lmKCFzfHwhdylyZXR1cm47dHlwZW9mIHc9PT0iZnVuY3Rpb24iJiYocz13LHc9dy5ldmVudHMpLGMmJmMudHlwZSYmKGU9Yy5oYW5kbGVyLGM9Yy50eXBlKTtpZighY3x8dHlwZW9mIGM9PT0ic3RyaW5nIiYmYy5jaGFyQXQoMCk9PT0iLiIpe2M9Y3x8IiI7Zm9yKGggaW4gdylkLmV2ZW50LnJlbW92ZShhLGgrYyk7cmV0dXJufWM9Yy5zcGxpdCgiICIpO3doaWxlKGg9Y1trKytdKXtyPWgscT1udWxsLGw9aC5pbmRleE9mKCIuIik8MCxtPVtdLGx8fChtPWguc3BsaXQoIi4iKSxoPW0uc2hpZnQoKSxuPW5ldyBSZWdFeHAoIihefFxcLikiK2QubWFwKG0uc2xpY2UoMCkuc29ydCgpLHQpLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpKSxwPXdbaF07aWYoIXApY29udGludWU7aWYoIWUpe2ZvcihqPTA7ajxwLmxlbmd0aDtqKyspe3E9cFtqXTtpZihsfHxuLnRlc3QocS5uYW1lc3BhY2UpKWQuZXZlbnQucmVtb3ZlKGEscixxLmhhbmRsZXIsaikscC5zcGxpY2Uoai0tLDEpfWNvbnRpbnVlfW89ZC5ldmVudC5zcGVjaWFsW2hdfHx7fTtmb3Ioaj1mfHwwO2o8cC5sZW5ndGg7aisrKXtxPXBbal07aWYoZS5ndWlkPT09cS5ndWlkKXtpZihsfHxuLnRlc3QocS5uYW1lc3BhY2UpKWY9PW51bGwmJnAuc3BsaWNlKGotLSwxKSxvLnJlbW92ZSYmby5yZW1vdmUuY2FsbChhLHEpO2lmKGYhPW51bGwpYnJlYWt9fWlmKHAubGVuZ3RoPT09MHx8ZiE9bnVsbCYmcC5sZW5ndGg9PT0xKSghby50ZWFyZG93bnx8by50ZWFyZG93bi5jYWxsKGEsbSk9PT0hMSkmJmQucmVtb3ZlRXZlbnQoYSxoLHMuaGFuZGxlKSxnPW51bGwsZGVsZXRlIHdbaF19aWYoZC5pc0VtcHR5T2JqZWN0KHcpKXt2YXIgeD1zLmhhbmRsZTt4JiYoeC5lbGVtPW51bGwpLGRlbGV0ZSBzLmV2ZW50cyxkZWxldGUgcy5oYW5kbGUsdHlwZW9mIHM9PT0iZnVuY3Rpb24iP2QucmVtb3ZlRGF0YShhLHUsITApOmQuaXNFbXB0eU9iamVjdChzKSYmZC5yZW1vdmVEYXRhKGEsYiwhMCl9fX0sdHJpZ2dlcjpmdW5jdGlvbihhLGMsZSl7dmFyIGY9YS50eXBlfHxhLGc9YXJndW1lbnRzWzNdO2lmKCFnKXthPXR5cGVvZiBhPT09Im9iamVjdCI/YVtkLmV4cGFuZG9dP2E6ZC5leHRlbmQoZC5FdmVudChmKSxhKTpkLkV2ZW50KGYpLGYuaW5kZXhPZigiISIpPj0wJiYoYS50eXBlPWY9Zi5zbGljZSgwLC0xKSxhLmV4Y2x1c2l2ZT0hMCksZXx8KGEuc3RvcFByb3BhZ2F0aW9uKCksZC5ldmVudC5nbG9iYWxbZl0mJmQuZWFjaChkLmNhY2hlLGZ1bmN0aW9uKCl7dmFyIGI9ZC5leHBhbmRvLGU9dGhpc1tiXTtlJiZlLmV2ZW50cyYmZS5ldmVudHNbZl0mJmQuZXZlbnQudHJpZ2dlcihhLGMsZS5oYW5kbGUuZWxlbSl9KSk7aWYoIWV8fGUubm9kZVR5cGU9PT0zfHxlLm5vZGVUeXBlPT09OClyZXR1cm4gYjthLnJlc3VsdD1iLGEudGFyZ2V0PWUsYz1kLm1ha2VBcnJheShjKSxjLnVuc2hpZnQoYSl9YS5jdXJyZW50VGFyZ2V0PWU7dmFyIGg9ZS5ub2RlVHlwZT9kLl9kYXRhKGUsImhhbmRsZSIpOihkLl9kYXRhKGUsdSl8fHt9KS5oYW5kbGU7aCYmaC5hcHBseShlLGMpO3ZhciBpPWUucGFyZW50Tm9kZXx8ZS5vd25lckRvY3VtZW50O3RyeXtlJiZlLm5vZGVOYW1lJiZkLm5vRGF0YVtlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxlWyJvbiIrZl0mJmVbIm9uIitmXS5hcHBseShlLGMpPT09ITEmJihhLnJlc3VsdD0hMSxhLnByZXZlbnREZWZhdWx0KCkpfWNhdGNoKGope31pZighYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZpKWQuZXZlbnQudHJpZ2dlcihhLGMsaSwhMCk7ZWxzZSBpZighYS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGssbD1hLnRhcmdldCxtPWYucmVwbGFjZShvLCIiKSxuPWQubm9kZU5hbWUobCwiYSIpJiZtPT09ImNsaWNrIixwPWQuZXZlbnQuc3BlY2lhbFttXXx8e307aWYoKCFwLl9kZWZhdWx0fHxwLl9kZWZhdWx0LmNhbGwoZSxhKT09PSExKSYmIW4mJiEobCYmbC5ub2RlTmFtZSYmZC5ub0RhdGFbbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpe3RyeXtsW21dJiYoaz1sWyJvbiIrbV0sayYmKGxbIm9uIittXT1udWxsKSxkLmV2ZW50LnRyaWdnZXJlZD0hMCxsW21dKCkpfWNhdGNoKHEpe31rJiYobFsib24iK21dPWspLGQuZXZlbnQudHJpZ2dlcmVkPSExfX19LGhhbmRsZTpmdW5jdGlvbihjKXt2YXIgZSxmLGcsaCxpLGo9W10saz1kLm1ha2VBcnJheShhcmd1bWVudHMpO2M9a1swXT1kLmV2ZW50LmZpeChjfHxhLmV2ZW50KSxjLmN1cnJlbnRUYXJnZXQ9dGhpcyxlPWMudHlwZS5pbmRleE9mKCIuIik8MCYmIWMuZXhjbHVzaXZlLGV8fChnPWMudHlwZS5zcGxpdCgiLiIpLGMudHlwZT1nLnNoaWZ0KCksaj1nLnNsaWNlKDApLnNvcnQoKSxoPW5ldyBSZWdFeHAoIihefFxcLikiK2ouam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIikpLGMubmFtZXNwYWNlPWMubmFtZXNwYWNlfHxqLmpvaW4oIi4iKSxpPWQuX2RhdGEodGhpcyx1KSx0eXBlb2YgaT09PSJmdW5jdGlvbiImJihpPWkuZXZlbnRzKSxmPShpfHx7fSlbYy50eXBlXTtpZihpJiZmKXtmPWYuc2xpY2UoMCk7Zm9yKHZhciBsPTAsbT1mLmxlbmd0aDtsPG07bCsrKXt2YXIgbj1mW2xdO2lmKGV8fGgudGVzdChuLm5hbWVzcGFjZSkpe2MuaGFuZGxlcj1uLmhhbmRsZXIsYy5kYXRhPW4uZGF0YSxjLmhhbmRsZU9iaj1uO3ZhciBvPW4uaGFuZGxlci5hcHBseSh0aGlzLGspO28hPT1iJiYoYy5yZXN1bHQ9byxvPT09ITEmJihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSkpO2lmKGMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVha319fXJldHVybiBjLnJlc3VsdH0scHJvcHM6ImFsdEtleSBhdHRyQ2hhbmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hhckNvZGUgY2xpZW50WCBjbGllbnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlIGZyb21FbGVtZW50IGhhbmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVkTm9kZSByZWxhdGVkVGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50IHRhcmdldCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRhIHdoaWNoIi5zcGxpdCgiICIpLGZpeDpmdW5jdGlvbihhKXtpZihhW2QuZXhwYW5kb10pcmV0dXJuIGE7dmFyIGU9YTthPWQuRXZlbnQoZSk7Zm9yKHZhciBmPXRoaXMucHJvcHMubGVuZ3RoLGc7ZjspZz10aGlzLnByb3BzWy0tZl0sYVtnXT1lW2ddO2EudGFyZ2V0fHwoYS50YXJnZXQ9YS5zcmNFbGVtZW50fHxjKSxhLnRhcmdldC5ub2RlVHlwZT09PTMmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSwhYS5yZWxhdGVkVGFyZ2V0JiZhLmZyb21FbGVtZW50JiYoYS5yZWxhdGVkVGFyZ2V0PWEuZnJvbUVsZW1lbnQ9PT1hLnRhcmdldD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50KTtpZihhLnBhZ2VYPT1udWxsJiZhLmNsaWVudFghPW51bGwpe3ZhciBoPWMuZG9jdW1lbnRFbGVtZW50LGk9Yy5ib2R5O2EucGFnZVg9YS5jbGllbnRYKyhoJiZoLnNjcm9sbExlZnR8fGkmJmkuc2Nyb2xsTGVmdHx8MCktKGgmJmguY2xpZW50TGVmdHx8aSYmaS5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWEuY2xpZW50WSsoaCYmaC5zY3JvbGxUb3B8fGkmJmkuc2Nyb2xsVG9wfHwwKS0oaCYmaC5jbGllbnRUb3B8fGkmJmkuY2xpZW50VG9wfHwwKX1hLndoaWNoPT1udWxsJiYoYS5jaGFyQ29kZSE9bnVsbHx8YS5rZXlDb2RlIT1udWxsKSYmKGEud2hpY2g9YS5jaGFyQ29kZSE9bnVsbD9hLmNoYXJDb2RlOmEua2V5Q29kZSksIWEubWV0YUtleSYmYS5jdHJsS2V5JiYoYS5tZXRhS2V5PWEuY3RybEtleSksIWEud2hpY2gmJmEuYnV0dG9uIT09YiYmKGEud2hpY2g9YS5idXR0b24mMT8xOmEuYnV0dG9uJjI/MzphLmJ1dHRvbiY0PzI6MCk7cmV0dXJuIGF9LGd1aWQ6MWU4LHByb3h5OmQucHJveHksc3BlY2lhbDp7cmVhZHk6e3NldHVwOmQuYmluZFJlYWR5LHRlYXJkb3duOmQubm9vcH0sbGl2ZTp7YWRkOmZ1bmN0aW9uKGEpe2QuZXZlbnQuYWRkKHRoaXMsRihhLm9yaWdUeXBlLGEuc2VsZWN0b3IpLGQuZXh0ZW5kKHt9LGEse2hhbmRsZXI6RSxndWlkOmEuaGFuZGxlci5ndWlkfSkpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7ZC5ldmVudC5yZW1vdmUodGhpcyxGKGEub3JpZ1R5cGUsYS5zZWxlY3RvciksYSl9fSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9uKGEsYixjKXtkLmlzV2luZG93KHRoaXMpJiYodGhpcy5vbmJlZm9yZXVubG9hZD1jKX0sdGVhcmRvd246ZnVuY3Rpb24oYSxiKXt0aGlzLm9uYmVmb3JldW5sb2FkPT09YiYmKHRoaXMub25iZWZvcmV1bmxvYWQ9bnVsbCl9fX19LGQucmVtb3ZlRXZlbnQ9Yy5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMsITEpfTpmdW5jdGlvbihhLGIsYyl7YS5kZXRhY2hFdmVudCYmYS5kZXRhY2hFdmVudCgib24iK2IsYyl9LGQuRXZlbnQ9ZnVuY3Rpb24oYSl7aWYoIXRoaXMucHJldmVudERlZmF1bHQpcmV0dXJuIG5ldyBkLkV2ZW50KGEpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP3c6dik6dGhpcy50eXBlPWEsdGhpcy50aW1lU3RhbXA9ZC5ub3coKSx0aGlzW2QuZXhwYW5kb109ITB9LGQuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXc7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O2EmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD13O3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24mJmEuc3RvcFByb3BhZ2F0aW9uKCksYS5jYW5jZWxCdWJibGU9ITApfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXcsdGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOnYsaXNQcm9wYWdhdGlvblN0b3BwZWQ6dixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDp2fTt2YXIgeD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlbGF0ZWRUYXJnZXQ7dHJ5e3doaWxlKGImJmIhPT10aGlzKWI9Yi5wYXJlbnROb2RlO2IhPT10aGlzJiYoYS50eXBlPWEuZGF0YSxkLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfWNhdGNoKGMpe319LHk9ZnVuY3Rpb24oYSl7YS50eXBlPWEuZGF0YSxkLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2QuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7ZC5ldmVudC5zcGVjaWFsW2FdPXtzZXR1cDpmdW5jdGlvbihjKXtkLmV2ZW50LmFkZCh0aGlzLGIsYyYmYy5zZWxlY3Rvcj95OngsYSl9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2QuZXZlbnQucmVtb3ZlKHRoaXMsYixhJiZhLnNlbGVjdG9yP3k6eCl9fX0pLGQuc3VwcG9ydC5zdWJtaXRCdWJibGVzfHwoZC5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oYSxjKXtpZih0aGlzLm5vZGVOYW1lJiZ0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0iZm9ybSIpZC5ldmVudC5hZGQodGhpcywiY2xpY2suc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZT1jLnR5cGU7aWYoKGU9PT0ic3VibWl0Inx8ZT09PSJpbWFnZSIpJiZkKGMpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgpe2EubGl2ZUZpcmVkPWI7cmV0dXJuIEMoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfX0pLGQuZXZlbnQuYWRkKHRoaXMsImtleXByZXNzLnNwZWNpYWxTdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBjPWEudGFyZ2V0LGU9Yy50eXBlO2lmKChlPT09InRleHQifHxlPT09InBhc3N3b3JkIikmJmQoYykuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aCYmYS5rZXlDb2RlPT09MTMpe2EubGl2ZUZpcmVkPWI7cmV0dXJuIEMoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfX0pO2Vsc2UgcmV0dXJuITF9LHRlYXJkb3duOmZ1bmN0aW9uKGEpe2QuZXZlbnQucmVtb3ZlKHRoaXMsIi5zcGVjaWFsU3VibWl0Iil9fSk7aWYoIWQuc3VwcG9ydC5jaGFuZ2VCdWJibGVzKXt2YXIgeixBPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZSxjPWEudmFsdWU7Yj09PSJyYWRpbyJ8fGI9PT0iY2hlY2tib3giP2M9YS5jaGVja2VkOmI9PT0ic2VsZWN0LW11bHRpcGxlIj9jPWEuc2VsZWN0ZWRJbmRleD4tMT9kLm1hcChhLm9wdGlvbnMsZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2VsZWN0ZWR9KS5qb2luKCItIik6IiI6YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCImJihjPWEuc2VsZWN0ZWRJbmRleCk7cmV0dXJuIGN9LEI9ZnVuY3Rpb24gQihhKXt2YXIgYz1hLnRhcmdldCxlLGY7aWYocC50ZXN0KGMubm9kZU5hbWUpJiYhYy5yZWFkT25seSl7ZT1kLl9kYXRhKGMsIl9jaGFuZ2VfZGF0YSIpLGY9QShjKSwoYS50eXBlIT09ImZvY3Vzb3V0Inx8Yy50eXBlIT09InJhZGlvIikmJmQuX2RhdGEoYywiX2NoYW5nZV9kYXRhIixmKTtpZihlPT09Ynx8Zj09PWUpcmV0dXJuO2lmKGUhPW51bGx8fGYpe2EudHlwZT0iY2hhbmdlIixhLmxpdmVGaXJlZD1iO3JldHVybiBkLmV2ZW50LnRyaWdnZXIoYSxhcmd1bWVudHNbMV0sYyl9fX07ZC5ldmVudC5zcGVjaWFsLmNoYW5nZT17ZmlsdGVyczp7Zm9jdXNvdXQ6QixiZWZvcmVkZWFjdGl2YXRlOkIsY2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7aWYoYz09PSJyYWRpbyJ8fGM9PT0iY2hlY2tib3gifHxiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0ic2VsZWN0IilyZXR1cm4gQi5jYWxsKHRoaXMsYSl9LGtleWRvd246ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1iLnR5cGU7aWYoYS5rZXlDb2RlPT09MTMmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJ0ZXh0YXJlYSJ8fGEua2V5Q29kZT09PTMyJiYoYz09PSJjaGVja2JveCJ8fGM9PT0icmFkaW8iKXx8Yz09PSJzZWxlY3QtbXVsdGlwbGUiKXJldHVybiBCLmNhbGwodGhpcyxhKX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7ZC5fZGF0YShiLCJfY2hhbmdlX2RhdGEiLEEoYikpfX0sc2V0dXA6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLnR5cGU9PT0iZmlsZSIpcmV0dXJuITE7Zm9yKHZhciBjIGluIHopZC5ldmVudC5hZGQodGhpcyxjKyIuc3BlY2lhbENoYW5nZSIseltjXSk7cmV0dXJuIHAudGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVhcmRvd246ZnVuY3Rpb24oYSl7ZC5ldmVudC5yZW1vdmUodGhpcywiLnNwZWNpYWxDaGFuZ2UiKTtyZXR1cm4gcC50ZXN0KHRoaXMubm9kZU5hbWUpfX0sej1kLmV2ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnMsei5mb2N1cz16LmJlZm9yZWFjdGl2YXRlfWMuYWRkRXZlbnRMaXN0ZW5lciYmZC5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7YT1kLmV2ZW50LmZpeChhKSxhLnR5cGU9YjtyZXR1cm4gZC5ldmVudC5oYW5kbGUuY2FsbCh0aGlzLGEpfWQuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKX19fSksZC5lYWNoKFsiYmluZCIsIm9uZSJdLGZ1bmN0aW9uKGEsYyl7ZC5mbltjXT1mdW5jdGlvbihhLGUsZil7aWYodHlwZW9mIGE9PT0ib2JqZWN0Iil7Zm9yKHZhciBnIGluIGEpdGhpc1tjXShnLGUsYVtnXSxmKTtyZXR1cm4gdGhpc31pZihkLmlzRnVuY3Rpb24oZSl8fGU9PT0hMSlmPWUsZT1iO3ZhciBoPWM9PT0ib25lIj9kLnByb3h5KGYsZnVuY3Rpb24oYSl7ZCh0aGlzKS51bmJpbmQoYSxoKTtyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTpmO2lmKGE9PT0idW5sb2FkIiYmYyE9PSJvbmUiKXRoaXMub25lKGEsZSxmKTtlbHNlIGZvcih2YXIgaT0wLGo9dGhpcy5sZW5ndGg7aTxqO2krKylkLmV2ZW50LmFkZCh0aGlzW2ldLGEsaCxlKTtyZXR1cm4gdGhpc319KSxkLmZuLmV4dGVuZCh7dW5iaW5kOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ib2JqZWN0Inx8YS5wcmV2ZW50RGVmYXVsdClmb3IodmFyIGU9MCxmPXRoaXMubGVuZ3RoO2U8ZjtlKyspZC5ldmVudC5yZW1vdmUodGhpc1tlXSxhLGIpO2Vsc2UgZm9yKHZhciBjIGluIGEpdGhpcy51bmJpbmQoYyxhW2NdKTtyZXR1cm4gdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMubGl2ZShiLGMsZCxhKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMudW5iaW5kKCJsaXZlIik6dGhpcy5kaWUoYixudWxsLGMsYSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe2lmKHRoaXNbMF0pe3ZhciBjPWQuRXZlbnQoYSk7Yy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCksZC5ldmVudC50cmlnZ2VyKGMsYix0aGlzWzBdKTtyZXR1cm4gYy5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLGM9MTt3aGlsZShjPGIubGVuZ3RoKWQucHJveHkoYSxiW2MrK10pO3JldHVybiB0aGlzLmNsaWNrKGQucHJveHkoYSxmdW5jdGlvbihlKXt2YXIgZj0oZC5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVjO2QuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkLGYrMSksZS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBiW2ZdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9KSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pO3ZhciBEPXtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQiLG1vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifTtkLmVhY2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24oYSxjKXtkLmZuW2NdPWZ1bmN0aW9uKGEsZSxmLGcpe3ZhciBoLGk9MCxqLGssbCxtPWd8fHRoaXMuc2VsZWN0b3Isbj1nP3RoaXM6ZCh0aGlzLmNvbnRleHQpO2lmKHR5cGVvZiBhPT09Im9iamVjdCImJiFhLnByZXZlbnREZWZhdWx0KXtmb3IodmFyIHAgaW4gYSluW2NdKHAsZSxhW3BdLG0pO3JldHVybiB0aGlzfWQuaXNGdW5jdGlvbihlKSYmKGY9ZSxlPWIpLGE9KGF8fCIiKS5zcGxpdCgiICIpO3doaWxlKChoPWFbaSsrXSkhPW51bGwpe2o9by5leGVjKGgpLGs9IiIsaiYmKGs9alswXSxoPWgucmVwbGFjZShvLCIiKSk7aWYoaD09PSJob3ZlciIpe2EucHVzaCgibW91c2VlbnRlciIraywibW91c2VsZWF2ZSIrayk7Y29udGludWV9bD1oLGg9PT0iZm9jdXMifHxoPT09ImJsdXIiPyhhLnB1c2goRFtoXStrKSxoPWgrayk6aD0oRFtoXXx8aCkraztpZihjPT09ImxpdmUiKWZvcih2YXIgcT0wLHI9bi5sZW5ndGg7cTxyO3ErKylkLmV2ZW50LmFkZChuW3FdLCJsaXZlLiIrRihoLG0pLHtkYXRhOmUsc2VsZWN0b3I6bSxoYW5kbGVyOmYsb3JpZ1R5cGU6aCxvcmlnSGFuZGxlcjpmLHByZVR5cGU6bH0pO2Vsc2Ugbi51bmJpbmQoImxpdmUuIitGKGgsbSksZil9cmV0dXJuIHRoaXN9fSksZC5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ZC5mbltiXT1mdW5jdGlvbihhLGMpe2M9PW51bGwmJihjPWEsYT1udWxsKTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMuYmluZChiLGEsYyk6dGhpcy50cmlnZ2VyKGIpfSxkLmF0dHJGbiYmKGQuYXR0ckZuW2JdPSEwKX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcyhhLGIsYyxkLGUsZil7Zm9yKHZhciBnPTAsaD1kLmxlbmd0aDtnPGg7ZysrKXt2YXIgaj1kW2ddO2lmKGope3ZhciBrPSExO2o9althXTt3aGlsZShqKXtpZihqLnNpemNhY2hlPT09Yyl7az1kW2ouc2l6c2V0XTticmVha31pZihqLm5vZGVUeXBlPT09MSl7Znx8KGouc2l6Y2FjaGU9YyxqLnNpenNldD1nKTtpZih0eXBlb2YgYiE9PSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihpLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWRbZ109a319fWZ1bmN0aW9uIHIoYSxiLGMsZCxlLGYpe2Zvcih2YXIgZz0wLGg9ZC5sZW5ndGg7ZzxoO2crKyl7dmFyIGk9ZFtnXTtpZihpKXt2YXIgaj0hMTtpPWlbYV07d2hpbGUoaSl7aWYoaS5zaXpjYWNoZT09PWMpe2o9ZFtpLnNpenNldF07YnJlYWt9aS5ub2RlVHlwZT09PTEmJiFmJiYoaS5zaXpjYWNoZT1jLGkuc2l6c2V0PWcpO2lmKGkubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2o9aTticmVha31pPWlbYV19ZFtnXT1qfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxlPTAsZj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGc9ITEsaD0hMDtbMCwwXS5zb3J0KGZ1bmN0aW9uKCl7aD0hMTtyZXR1cm4gMH0pO3ZhciBpPWZ1bmN0aW9uKGIsZCxlLGcpe2U9ZXx8W10sZD1kfHxjO3ZhciBoPWQ7aWYoZC5ub2RlVHlwZSE9PTEmJmQubm9kZVR5cGUhPT05KXJldHVybltdO2lmKCFifHx0eXBlb2YgYiE9PSJzdHJpbmciKXJldHVybiBlO3ZhciBsLG0sbyxwLHEscixzLHUsdj0hMCx3PWkuaXNYTUwoZCkseD1bXSx5PWI7ZG97YS5leGVjKCIiKSxsPWEuZXhlYyh5KTtpZihsKXt5PWxbM10seC5wdXNoKGxbMV0pO2lmKGxbMl0pe3A9bFszXTticmVha319fXdoaWxlKGwpO2lmKHgubGVuZ3RoPjEmJmsuZXhlYyhiKSlpZih4Lmxlbmd0aD09PTImJmoucmVsYXRpdmVbeFswXV0pbT10KHhbMF0reFsxXSxkKTtlbHNle209ai5yZWxhdGl2ZVt4WzBdXT9bZF06aSh4LnNoaWZ0KCksZCk7d2hpbGUoeC5sZW5ndGgpYj14LnNoaWZ0KCksai5yZWxhdGl2ZVtiXSYmKGIrPXguc2hpZnQoKSksbT10KGIsbSl9ZWxzZXshZyYmeC5sZW5ndGg+MSYmZC5ub2RlVHlwZT09PTkmJiF3JiZqLm1hdGNoLklELnRlc3QoeFswXSkmJiFqLm1hdGNoLklELnRlc3QoeFt4Lmxlbmd0aC0xXSkmJihxPWkuZmluZCh4LnNoaWZ0KCksZCx3KSxkPXEuZXhwcj9pLmZpbHRlcihxLmV4cHIscS5zZXQpWzBdOnEuc2V0WzBdKTtpZihkKXtxPWc/e2V4cHI6eC5wb3AoKSxzZXQ6bihnKX06aS5maW5kKHgucG9wKCkseC5sZW5ndGg9PT0xJiYoeFswXT09PSJ+Inx8eFswXT09PSIrIikmJmQucGFyZW50Tm9kZT9kLnBhcmVudE5vZGU6ZCx3KSxtPXEuZXhwcj9pLmZpbHRlcihxLmV4cHIscS5zZXQpOnEuc2V0LHgubGVuZ3RoPjA/bz1uKG0pOnY9ITE7d2hpbGUoeC5sZW5ndGgpcj14LnBvcCgpLHM9cixqLnJlbGF0aXZlW3JdP3M9eC5wb3AoKTpyPSIiLHM9PW51bGwmJihzPWQpLGoucmVsYXRpdmVbcl0obyxzLHcpfWVsc2Ugbz14PVtdfW98fChvPW0pLG98fGkuZXJyb3Iocnx8Yik7aWYoZi5jYWxsKG8pPT09IltvYmplY3QgQXJyYXldIilpZih2KWlmKGQmJmQubm9kZVR5cGU9PT0xKWZvcih1PTA7b1t1XSE9bnVsbDt1Kyspb1t1XSYmKG9bdV09PT0hMHx8b1t1XS5ub2RlVHlwZT09PTEmJmkuY29udGFpbnMoZCxvW3VdKSkmJmUucHVzaChtW3VdKTtlbHNlIGZvcih1PTA7b1t1XSE9bnVsbDt1Kyspb1t1XSYmb1t1XS5ub2RlVHlwZT09PTEmJmUucHVzaChtW3VdKTtlbHNlIGUucHVzaC5hcHBseShlLG8pO2Vsc2UgbihvLGUpO3AmJihpKHAsaCxlLGcpLGkudW5pcXVlU29ydChlKSk7cmV0dXJuIGV9O2kudW5pcXVlU29ydD1mdW5jdGlvbihhKXtpZihwKXtnPWgsYS5zb3J0KHApO2lmKGcpZm9yKHZhciBiPTE7YjxhLmxlbmd0aDtiKyspYVtiXT09PWFbYi0xXSYmYS5zcGxpY2UoYi0tLDEpfXJldHVybiBhfSxpLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaShhLG51bGwsbnVsbCxiKX0saS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaShiLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfSxpLmZpbmQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFhKXJldHVybltdO2Zvcih2YXIgZT0wLGY9ai5vcmRlci5sZW5ndGg7ZTxmO2UrKyl7dmFyIGcsaD1qLm9yZGVyW2VdO2lmKGc9ai5sZWZ0TWF0Y2hbaF0uZXhlYyhhKSl7dmFyIGk9Z1sxXTtnLnNwbGljZSgxLDEpO2lmKGkuc3Vic3RyKGkubGVuZ3RoLTEpIT09IlxcIil7Z1sxXT0oZ1sxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpLGQ9ai5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShqLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PSJ1bmRlZmluZWQiP2IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTpbXSk7cmV0dXJue3NldDpkLGV4cHI6YX19LGkuZmlsdGVyPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGcsaD1hLGs9W10sbD1jLG09YyYmY1swXSYmaS5pc1hNTChjWzBdKTt3aGlsZShhJiZjLmxlbmd0aCl7Zm9yKHZhciBuIGluIGouZmlsdGVyKWlmKChmPWoubGVmdE1hdGNoW25dLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXt2YXIgbyxwLHE9ai5maWx0ZXJbbl0scj1mWzFdO2c9ITEsZi5zcGxpY2UoMSwxKTtpZihyLnN1YnN0cihyLmxlbmd0aC0xKT09PSJcXCIpY29udGludWU7bD09PWsmJihrPVtdKTtpZihqLnByZUZpbHRlcltuXSl7Zj1qLnByZUZpbHRlcltuXShmLGwsZCxrLGUsbSk7aWYoZil7aWYoZj09PSEwKWNvbnRpbnVlfWVsc2UgZz1vPSEwfWlmKGYpZm9yKHZhciBzPTA7KHA9bFtzXSkhPW51bGw7cysrKWlmKHApe289cShwLGYscyxsKTt2YXIgdD1lXiEhbztkJiZvIT1udWxsP3Q/Zz0hMDpsW3NdPSExOnQmJihrLnB1c2gocCksZz0hMCl9aWYobyE9PWIpe2R8fChsPWspLGE9YS5yZXBsYWNlKGoubWF0Y2hbbl0sIiIpO2lmKCFnKXJldHVybltdO2JyZWFrfX1pZihhPT09aClpZihnPT1udWxsKWkuZXJyb3IoYSk7ZWxzZSBicmVhaztoPWF9cmV0dXJuIGx9LGkuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithfTt2YXIgaj1pLnNlbGVjdG9ycz17b3JkZXI6WyJJRCIsIk5BTUUiLCJUQUciXSxtYXRjaDp7SUQ6LyMoKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLENMQVNTOi9cLigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKS8sTkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspWyciXSpcXS8sQVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKylccyooPzooXFM/PSlccyooPzooWyciXSkoLio/KVwzfCgjPyg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSopfCl8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqXC1dfFxcLikrKS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKFxzKihldmVufG9kZHwoPzpbK1wtXT9cZCt8KD86WytcLV0/XGQqKT9uXHMqKD86WytcLV1ccypcZCspPykpXHMqXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W15cLV18JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNoOnt9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBiPT09InN0cmluZyIsZD1jJiYhL1xXLy50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpe31hW2ZdPWV8fGgmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/aHx8ITE6aD09PWJ9ZSYmaS5maWx0ZXIoYixhLCEwKX0sIj4iOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD10eXBlb2YgYj09PSJzdHJpbmciLGU9MCxmPWEubGVuZ3RoO2lmKGQmJiEvXFcvLnRlc3QoYikpe2I9Yi50b0xvd2VyQ2FzZSgpO2Zvcig7ZTxmO2UrKyl7Yz1hW2VdO2lmKGMpe3ZhciBnPWMucGFyZW50Tm9kZTthW2VdPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWI/ZzohMX19fWVsc2V7Zm9yKDtlPGY7ZSsrKWM9YVtlXSxjJiYoYVtlXT1kP2MucGFyZW50Tm9kZTpjLnBhcmVudE5vZGU9PT1iKTtkJiZpLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9czt0eXBlb2YgYj09PSJzdHJpbmciJiYhL1xXLy50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9ciksZygicGFyZW50Tm9kZSIsYixmLGEsZCxjKX0sIn4iOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXM7dHlwZW9mIGI9PT0ic3RyaW5nIiYmIS9cVy8udGVzdChiKSYmKGI9Yi50b0xvd2VyQ2FzZSgpLGQ9YixnPXIpLGcoInByZXZpb3VzU2libGluZyIsYixmLGEsZCxjKX19LGZpbmQ6e0lEOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9PSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PSJ1bmRlZmluZWQiKXJldHVybiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihhLGIsYyxkLGUsZil7YT0iICIrYVsxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoL1xcL2csIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVsxXS50b0xvd2VyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihhKXtpZihhWzFdPT09Im50aCIpe2FbMl18fGkuZXJyb3IoYVswXSksYVsyXT1hWzJdLnJlcGxhY2UoL15cK3xccyovZywiIik7dmFyIGI9LygtPykoXGQqKSg/Om4oWytcLV0/XGQqKSk/Ly5leGVjKGFbMl09PT0iZXZlbiImJiIybiJ8fGFbMl09PT0ib2RkIiYmIjJuKzEifHwhL1xELy50ZXN0KGFbMl0pJiYiMG4rIithWzJdfHxhWzJdKTthWzJdPWJbMV0rKGJbMl18fDEpLTAsYVszXT1iWzNdLTB9ZWxzZSBhWzJdJiZpLmVycm9yKGFbMF0pO2FbMF09ZSsrO3JldHVybiBhfSxBVFRSOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hWzFdPWFbMV0ucmVwbGFjZSgvXFwvZywiIik7IWYmJmouYXR0ck1hcFtnXSYmKGFbMV09ai5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZSgvXFwvZywiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIgIik7cmV0dXJuIGF9LFBTRVVETzpmdW5jdGlvbihiLGMsZCxlLGYpe2lmKGJbMV09PT0ibm90IilpZigoYS5leGVjKGJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoYlszXSkpYlszXT1pKGJbM10sbnVsbCxudWxsLGMpO2Vsc2V7dmFyIGc9aS5maWx0ZXIoYlszXSxjLGQsITBeZik7ZHx8ZS5wdXNoLmFwcGx5KGUsZyk7cmV0dXJuITF9ZWxzZSBpZihqLm1hdGNoLlBPUy50ZXN0KGJbMF0pfHxqLm1hdGNoLkNISUxELnRlc3QoYlswXSkpcmV0dXJuITA7cmV0dXJuIGJ9LFBPUzpmdW5jdGlvbihhKXthLnVuc2hpZnQoITApO3JldHVybiBhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe2EucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBhLnNlbGVjdGVkPT09ITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hIWEuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZmlyc3RDaGlsZH0saGFzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hIWkoY1szXSxhKS5sZW5ndGh9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4vaFxkL2kudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4idGV4dCI9PT1hLnR5cGV9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiJyYWRpbyI9PT1hLnR5cGV9LGNoZWNrYm94OmZ1bmN0aW9uKGEpe3JldHVybiJjaGVja2JveCI9PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4icGFzc3dvcmQiPT09YS50eXBlfSxzdWJtaXQ6ZnVuY3Rpb24oYSl7cmV0dXJuInN1Ym1pdCI9PT1hLnR5cGV9LGltYWdlOmZ1bmN0aW9uKGEpe3JldHVybiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGEpe3JldHVybiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlvbihhKXtyZXR1cm4iYnV0dG9uIj09PWEudHlwZXx8YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPWouZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8aS5nZXRUZXh0KFthXSl8fCIiKS5pbmRleE9mKGJbM10pPj0wO2lmKGU9PT0ibm90Iil7dmFyIGc9YlszXTtmb3IodmFyIGg9MCxrPWcubGVuZ3RoO2g8aztoKyspaWYoZ1toXT09PWEpcmV0dXJuITE7cmV0dXJuITB9aS5lcnJvcihlKX0sQ0hJTEQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9YTtzd2l0Y2goYyl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShkPWQucHJldmlvdXNTaWJsaW5nKWlmKGQubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGM9PT0iZmlyc3QiKXJldHVybiEwO2Q9YTtjYXNlImxhc3QiOndoaWxlKGQ9ZC5uZXh0U2libGluZylpZihkLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6dmFyIGU9YlsyXSxmPWJbM107aWYoZT09PTEmJmY9PT0wKXJldHVybiEwO3ZhciBnPWJbMF0saD1hLnBhcmVudE5vZGU7aWYoaCYmKGguc2l6Y2FjaGUhPT1nfHwhYS5ub2RlSW5kZXgpKXt2YXIgaT0wO2ZvcihkPWguZmlyc3RDaGlsZDtkO2Q9ZC5uZXh0U2libGluZylkLm5vZGVUeXBlPT09MSYmKGQubm9kZUluZGV4PSsraSk7aC5zaXpjYWNoZT1nfXZhciBqPWEubm9kZUluZGV4LWY7cmV0dXJuIGU9PT0wP2o9PT0wOmolZT09PTAmJmovZT49MH19LElEOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09IioiJiZhLm5vZGVUeXBlPT09MXx8YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn0sQ0xBU1M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4oIiAiKyhhLmNsYXNzTmFtZXx8YS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihiKT4tMX0sQVRUUjpmdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1qLmF0dHJIYW5kbGVbY10/ai5hdHRySGFuZGxlW2NdKGEpOmFbY10hPW51bGw/YVtjXTphLmdldEF0dHJpYnV0ZShjKSxlPWQrIiIsZj1iWzJdLGc9Yls0XTtyZXR1cm4gZD09bnVsbD9mPT09IiE9IjpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPWouc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LGs9ai5tYXRjaC5QT1MsbD1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciBtIGluIGoubWF0Y2gpai5tYXRjaFttXT1uZXcgUmVnRXhwKGoubWF0Y2hbbV0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksai5sZWZ0TWF0Y2hbbV09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK2oubWF0Y2hbbV0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxsKSk7dmFyIG49ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKG8pe249ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZi5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBlPWEubGVuZ3RoO2M8ZTtjKyspZC5wdXNoKGFbY10pO2Vsc2UgZm9yKDthW2NdO2MrKylkLnB1c2goYVtjXSk7cmV0dXJuIGR9fXZhciBwLHE7Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/cD1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtnPSEwO3JldHVybiAwfWlmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxO3JldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6MX06KHA9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9W10sZj1bXSxoPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWg7aWYoYT09PWIpe2c9ITA7cmV0dXJuIDB9aWYoaD09PWkpcmV0dXJuIHEoYSxiKTtpZighaClyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gcShlW2tdLGZba10pO3JldHVybiBrPT09Yz9xKGEsZltrXSwtMSk6cShlW2tdLGIsMSl9LHE9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksaS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiPSIiLGM7Zm9yKHZhciBkPTA7YVtkXTtkKyspYz1hW2RdLGMubm9kZVR5cGU9PT0zfHxjLm5vZGVUeXBlPT09ND9iKz1jLm5vZGVWYWx1ZTpjLm5vZGVUeXBlIT09OCYmKGIrPWkuZ2V0VGV4dChjLmNoaWxkTm9kZXMpKTtyZXR1cm4gYn0sZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoai5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZT9lLmlkPT09YVsxXXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZlLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09YVsxXT9bZV06YjpbXX19LGouZmlsdGVyLklEPWZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKGouZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiJiYoai5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0pLGE9bnVsbH0oKSxjLnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGE9aSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iX19zaXp6bGVfXyI7Yi5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighYi5xdWVyeVNlbGVjdG9yQWxsfHxiLnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoIT09MCl7aT1mdW5jdGlvbihiLGUsZixnKXtlPWV8fGM7aWYoIWcmJiFpLmlzWE1MKGUpKXt2YXIgaD0vXihcdyskKXxeXC4oW1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyhiKTtpZihoJiYoZS5ub2RlVHlwZT09PTF8fGUubm9kZVR5cGU9PT05KSl7aWYoaFsxXSlyZXR1cm4gbihlLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpLGYpO2lmKGhbMl0mJmouZmluZC5DTEFTUyYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBuKGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzJdKSxmKX1pZihlLm5vZGVUeXBlPT09OSl7aWYoYj09PSJib2R5IiYmZS5ib2R5KXJldHVybiBuKFtlLmJvZHldLGYpO2lmKGgmJmhbM10pe3ZhciBrPWUuZ2V0RWxlbWVudEJ5SWQoaFszXSk7aWYoIWt8fCFrLnBhcmVudE5vZGUpcmV0dXJuIG4oW10sZik7aWYoay5pZD09PWhbM10pcmV0dXJuIG4oW2tdLGYpfXRyeXtyZXR1cm4gbihlLnF1ZXJ5U2VsZWN0b3JBbGwoYiksZil9Y2F0Y2gobCl7fX1lbHNlIGlmKGUubm9kZVR5cGU9PT0xJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7dmFyIG09ZS5nZXRBdHRyaWJ1dGUoImlkIiksbz1tfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO20/bz1vLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbykscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIG4oZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbysiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXttfHxlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSlpW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcixkPSExO3RyeXtiLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQsIlt0ZXN0IT0nJ106c2l6emxlIil9Y2F0Y2goZSl7ZD0hMH1iJiYoaS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxjKXtjPWMucmVwbGFjZSgvXD1ccyooW14nIlxdXSopXHMqXF0vZywiPSckMSddIik7aWYoIWkuaXNYTUwoYSkpdHJ5e2lmKGR8fCFqLm1hdGNoLlBTRVVETy50ZXN0KGMpJiYhLyE9Ly50ZXN0KGMpKXJldHVybiBiLmNhbGwoYSxjKX1jYXRjaChlKXt9cmV0dXJuIGkoYyxudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0pfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKGEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtqLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksai5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFjKXJldHVybiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYVsxXSl9LGE9bnVsbH19KCksYy5kb2N1bWVudEVsZW1lbnQuY29udGFpbnM/aS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBhIT09YiYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTohMCl9OmMuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2kuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KX06aS5jb250YWlucz1mdW5jdGlvbigpe3JldHVybiExfSxpLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPShhP2Eub3duZXJEb2N1bWVudHx8YTowKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/Yi5ub2RlTmFtZSE9PSJIVE1MIjohMX07dmFyIHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9IiIsZj1iLm5vZGVUeXBlP1tiXTpiO3doaWxlKGM9ai5tYXRjaC5QU0VVRE8uZXhlYyhhKSllKz1jWzBdLGE9YS5yZXBsYWNlKGoubWF0Y2guUFNFVURPLCIiKTthPWoucmVsYXRpdmVbYV0/YSsiKiI6YTtmb3IodmFyIGc9MCxoPWYubGVuZ3RoO2c8aDtnKyspaShhLGZbZ10sZCk7cmV0dXJuIGkuZmlsdGVyKGUsZCl9O2QuZmluZD1pLGQuZXhwcj1pLnNlbGVjdG9ycyxkLmV4cHJbIjoiXT1kLmV4cHIuZmlsdGVycyxkLnVuaXF1ZT1pLnVuaXF1ZVNvcnQsZC50ZXh0PWkuZ2V0VGV4dCxkLmlzWE1MRG9jPWkuaXNYTUwsZC5jb250YWlucz1pLmNvbnRhaW5zfSgpO3ZhciBHPS9VbnRpbCQvLEg9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8sST0vLC8sSj0vXi5bXjojXFtcLixdKiQvLEs9QXJyYXkucHJvdG90eXBlLnNsaWNlLEw9ZC5leHByLm1hdGNoLlBPUyxNPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2QuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixhKSxjPTA7Zm9yKHZhciBlPTAsZj10aGlzLmxlbmd0aDtlPGY7ZSsrKXtjPWIubGVuZ3RoLGQuZmluZChhLHRoaXNbZV0sYik7aWYoZT4wKWZvcih2YXIgZz1jO2c8Yi5sZW5ndGg7ZysrKWZvcih2YXIgaD0wO2g8YztoKyspaWYoYltoXT09PWJbZ10pe2Iuc3BsaWNlKGctLSwxKTticmVha319cmV0dXJuIGJ9LGhhczpmdW5jdGlvbihhKXt2YXIgYj1kKGEpO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGM9Yi5sZW5ndGg7YTxjO2ErKylpZihkLmNvbnRhaW5zKHRoaXMsYlthXSkpcmV0dXJuITB9KX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhPKHRoaXMsYSwhMSksIm5vdCIsYSl9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soTyh0aGlzLGEsITApLCJmaWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJmQuZmlsdGVyKGEsdGhpcykubGVuZ3RoPjB9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxlLGYsZz10aGlzWzBdO2lmKGQuaXNBcnJheShhKSl7dmFyIGgsaSxqPXt9LGs9MTtpZihnJiZhLmxlbmd0aCl7Zm9yKGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspaT1hW2VdLGpbaV18fChqW2ldPWQuZXhwci5tYXRjaC5QT1MudGVzdChpKT9kKGksYnx8dGhpcy5jb250ZXh0KTppKTt3aGlsZShnJiZnLm93bmVyRG9jdW1lbnQmJmchPT1iKXtmb3IoaSBpbiBqKWg9altpXSwoaC5qcXVlcnk/aC5pbmRleChnKT4tMTpkKGcpLmlzKGgpKSYmYy5wdXNoKHtzZWxlY3RvcjppLGVsZW06ZyxsZXZlbDprfSk7Zz1nLnBhcmVudE5vZGUsaysrfX1yZXR1cm4gY312YXIgbD1MLnRlc3QoYSk/ZChhLGJ8fHRoaXMuY29udGV4dCk6bnVsbDtmb3IoZT0wLGY9dGhpcy5sZW5ndGg7ZTxmO2UrKyl7Zz10aGlzW2VdO3doaWxlKGcpe2lmKGw/bC5pbmRleChnKT4tMTpkLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGcsYSkpe2MucHVzaChnKTticmVha31nPWcucGFyZW50Tm9kZTtpZighZ3x8IWcub3duZXJEb2N1bWVudHx8Zz09PWIpYnJlYWt9fWM9Yy5sZW5ndGg+MT9kLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWF8fHR5cGVvZiBhPT09InN0cmluZyIpcmV0dXJuIGQuaW5BcnJheSh0aGlzWzBdLGE/ZChhKTp0aGlzLnBhcmVudCgpLmNoaWxkcmVuKCkpO3JldHVybiBkLmluQXJyYXkoYS5qcXVlcnk/YVswXTphLHRoaXMpfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09PSJzdHJpbmciP2QoYSxiKTpkLm1ha2VBcnJheShhKSxlPWQubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soTihjWzBdKXx8TihlWzBdKT9lOmQudW5pcXVlKGUpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGQuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZC5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZC5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBkLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBkLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBkLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBkLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZC5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZC5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBkLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6ZC5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjLGUpe3ZhciBmPWQubWFwKHRoaXMsYixjKSxnPUsuY2FsbChhcmd1bWVudHMpO0cudGVzdChhKXx8KGU9YyksZSYmdHlwZW9mIGU9PT0ic3RyaW5nIiYmKGY9ZC5maWx0ZXIoZSxmKSksZj10aGlzLmxlbmd0aD4xJiYhTVthXT9kLnVuaXF1ZShmKTpmLCh0aGlzLmxlbmd0aD4xfHxJLnRlc3QoZSkpJiZILnRlc3QoYSkmJihmPWYucmV2ZXJzZSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZixhLGcuam9pbigiLCIpKX19KSxkLmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9uKGEsYixjKXtjJiYoYT0iOm5vdCgiK2ErIikiKTtyZXR1cm4gYi5sZW5ndGg9PT0xP2QuZmluZC5tYXRjaGVzU2VsZWN0b3IoYlswXSxhKT9bYlswXV06W106ZC5maW5kLm1hdGNoZXMoYSxiKX0sZGlyOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZj1bXSxnPWFbY107d2hpbGUoZyYmZy5ub2RlVHlwZSE9PTkmJihlPT09Ynx8Zy5ub2RlVHlwZSE9PTF8fCFkKGcpLmlzKGUpKSlnLm5vZGVUeXBlPT09MSYmZi5wdXNoKGcpLGc9Z1tjXTtyZXR1cm4gZn0sbnRoOmZ1bmN0aW9uKGEsYixjLGQpe2I9Ynx8MTt2YXIgZT0wO2Zvcig7YTthPWFbY10paWYoYS5ub2RlVHlwZT09PTEmJisrZT09PWIpYnJlYWs7cmV0dXJuIGF9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtmb3IoO2E7YT1hLm5leHRTaWJsaW5nKWEubm9kZVR5cGU9PT0xJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pO3ZhciBQPS8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csUT0vXlxzKy8sUj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2lnLFM9LzwoW1x3Ol0rKS8sVD0vPHRib2R5L2ksVT0vPHwmIz9cdys7LyxWPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksVz0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxYPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O1gub3B0Z3JvdXA9WC5vcHRpb24sWC50Ym9keT1YLnRmb290PVguY29sZ3JvdXA9WC5jYXB0aW9uPVgudGhlYWQsWC50aD1YLnRkLGQuc3VwcG9ydC5odG1sU2VyaWFsaXplfHwoWC5fZGVmYXVsdD1bMSwiZGl2PGRpdj4iLCI8L2Rpdj4iXSksZC5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9ZCh0aGlzKTtjLnRleHQoYS5jYWxsKHRoaXMsYixjLnRleHQoKSkpfSk7aWYodHlwZW9mIGEhPT0ib2JqZWN0IiYmYSE9PWIpcmV0dXJuIHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8YykuY3JlYXRlVGV4dE5vZGUoYSkpO3JldHVybiBkLnRleHQodGhpcyl9LHdyYXBBbGw6ZnVuY3Rpb24oYSl7aWYoZC5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7ZCh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPWQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTEpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtkKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS53cmFwQWxsKGEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtkLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8ZCh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmluc2VydEJlZm9yZShhLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT1kKGFyZ3VtZW50c1swXSk7YS5wdXNoLmFwcGx5KGEsdGhpcy50b0FycmF5KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhhLCJiZWZvcmUiLGFyZ3VtZW50cyl9fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsZChhcmd1bWVudHNbMF0pLnRvQXJyYXkoKSk7cmV0dXJuIGF9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxlOyhlPXRoaXNbY10pIT1udWxsO2MrKylpZighYXx8ZC5maWx0ZXIoYSxbZV0pLmxlbmd0aCkhYiYmZS5ub2RlVHlwZT09PTEmJihkLmNsZWFuRGF0YShlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGQuY2xlYW5EYXRhKFtlXSkpLGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGI7KGI9dGhpc1thXSkhPW51bGw7YSsrKXtiLm5vZGVUeXBlPT09MSYmZC5jbGVhbkRhdGEoYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTt3aGlsZShiLmZpcnN0Q2hpbGQpYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe2E9YT09bnVsbD8hMDphLGI9Yj09bnVsbD9hOmI7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGQuY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7aWYoYT09PWIpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ubm9kZVR5cGU9PT0xP3RoaXNbMF0uaW5uZXJIVE1MLnJlcGxhY2UoUCwiIik6bnVsbDtpZih0eXBlb2YgYSE9PSJzdHJpbmcifHxWLnRlc3QoYSl8fCFkLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlEudGVzdChhKXx8WFsoUy5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSlkLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWQodGhpcyk7Yy5odG1sKGEuY2FsbCh0aGlzLGIsYy5odG1sKCkpKX0pOnRoaXMuZW1wdHkoKS5hcHBlbmQoYSk7ZWxzZXthPWEucmVwbGFjZShSLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKHZhciBjPTAsZT10aGlzLmxlbmd0aDtjPGU7YysrKXRoaXNbY10ubm9kZVR5cGU9PT0xJiYoZC5jbGVhbkRhdGEodGhpc1tjXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSx0aGlzW2NdLmlubmVySFRNTD1hKX1jYXRjaChmKXt0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfX1yZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXtpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1kKHRoaXMpLGU9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGUpKX0pO3R5cGVvZiBhIT09InN0cmluZyImJihhPWQoYSkuZGV0YWNoKCkpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj10aGlzLm5leHRTaWJsaW5nLGM9dGhpcy5wYXJlbnROb2RlO2QodGhpcykucmVtb3ZlKCksYj9kKGIpLmJlZm9yZShhKTpkKGMpLmFwcGVuZChhKX0pfXJldHVybiB0aGlzLnB1c2hTdGFjayhkKGQuaXNGdW5jdGlvbihhKT9hKCk6YSksInJlcGxhY2VXaXRoIixhKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFkLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT09InN0cmluZyImJlcudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZCh0aGlzKS5kb21NYW5pcChhLGMsZSwhMCl9KTtpZihkLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihmKXt2YXIgZz1kKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZixjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGUpfSk7aWYodGhpc1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZC5zdXBwb3J0LnBhcmVudE5vZGUmJmkmJmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVuZ3RoP2Y9e2ZyYWdtZW50Oml9OmY9ZC5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxoPWYuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RDaGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmQubm9kZU5hbWUoZywidHIiKTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZS5jYWxsKGM/WSh0aGlzW2xdLGcpOnRoaXNbbF0sZi5jYWNoZWFibGV8fG0+MSYmbDxuP2QuY2xvbmUoaCwhMCwhMCk6aCl9ay5sZW5ndGgmJmQuZWFjaChrLF8pfXJldHVybiB0aGlzfX0pLGQuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGIsZSl7dmFyIGYsZyxoLGk9YiYmYlswXT9iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF06YzthLmxlbmd0aD09PTEmJnR5cGVvZiBhWzBdPT09InN0cmluZyImJmFbMF0ubGVuZ3RoPDUxMiYmaT09PWMmJmFbMF0uY2hhckF0KDApPT09IjwiJiYhVi50ZXN0KGFbMF0pJiYoZC5zdXBwb3J0LmNoZWNrQ2xvbmV8fCFXLnRlc3QoYVswXSkpJiYoZz0hMCxoPWQuZnJhZ21lbnRzW2FbMF1dLGgmJihoIT09MSYmKGY9aCkpKSxmfHwoZj1pLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxkLmNsZWFuKGEsaSxmLGUpKSxnJiYoZC5mcmFnbWVudHNbYVswXV09aD9mOjEpO3JldHVybntmcmFnbWVudDpmLGNhY2hlYWJsZTpnfX0sZC5mcmFnbWVudHM9e30sZC5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMpe3ZhciBlPVtdLGY9ZChjKSxnPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKGcmJmcubm9kZVR5cGU9PT0xMSYmZy5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmYubGVuZ3RoPT09MSl7ZltiXSh0aGlzWzBdKTtyZXR1cm4gdGhpc31mb3IodmFyIGg9MCxpPWYubGVuZ3RoO2g8aTtoKyspe3ZhciBqPShoPjA/dGhpcy5jbG9uZSghMCk6dGhpcykuZ2V0KCk7ZChmW2hdKVtiXShqKSxlPWUuY29uY2F0KGopfXJldHVybiB0aGlzLnB1c2hTdGFjayhlLGEsZi5zZWxlY3Rvcil9fSksZC5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1hLmNsb25lTm9kZSghMCksZixnLGg7aWYoIWQuc3VwcG9ydC5ub0Nsb25lRXZlbnQmJihhLm5vZGVUeXBlPT09MXx8YS5ub2RlVHlwZT09PTExKSYmIWQuaXNYTUxEb2MoYSkpe2Y9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGc9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpO2ZvcihoPTA7ZltoXTsrK2gpJChmW2hdLGdbaF0pOyQoYSxlKX1pZihiKXtaKGEsZSk7aWYoYyYmImdldEVsZW1lbnRzQnlUYWdOYW1lImluIGEpe2Y9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGc9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpO2lmKGYubGVuZ3RoKWZvcihoPTA7ZltoXTsrK2gpWihmW2hdLGdbaF0pfX1yZXR1cm4gZX0sY2xlYW46ZnVuY3Rpb24oYSxiLGUsZil7Yj1ifHxjLHR5cGVvZiBiLmNyZWF0ZUVsZW1lbnQ9PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBnPVtdO2Zvcih2YXIgaD0wLGk7KGk9YVtoXSkhPW51bGw7aCsrKXt0eXBlb2YgaT09PSJudW1iZXIiJiYoaSs9IiIpO2lmKCFpKWNvbnRpbnVlO2lmKHR5cGVvZiBpIT09InN0cmluZyJ8fFUudGVzdChpKSl7aWYodHlwZW9mIGk9PT0ic3RyaW5nIil7aT1pLnJlcGxhY2UoUiwiPCQxPjwvJDI+Iik7dmFyIGo9KFMuZXhlYyhpKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxrPVhbal18fFguX2RlZmF1bHQsbD1rWzBdLG09Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTttLmlubmVySFRNTD1rWzFdK2kra1syXTt3aGlsZShsLS0pbT1tLmxhc3RDaGlsZDtpZighZC5zdXBwb3J0LnRib2R5KXt2YXIgbj1ULnRlc3QoaSksbz1qPT09InRhYmxlIiYmIW4/bS5maXJzdENoaWxkJiZtLmZpcnN0Q2hpbGQuY2hpbGROb2RlczprWzFdPT09Ijx0YWJsZT4iJiYhbj9tLmNoaWxkTm9kZXM6W107Zm9yKHZhciBwPW8ubGVuZ3RoLTE7cD49MDstLXApZC5ub2RlTmFtZShvW3BdLCJ0Ym9keSIpJiYhb1twXS5jaGlsZE5vZGVzLmxlbmd0aCYmb1twXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9bcF0pfSFkLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlEudGVzdChpKSYmbS5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShRLmV4ZWMoaSlbMF0pLG0uZmlyc3RDaGlsZCksaT1tLmNoaWxkTm9kZXN9fWVsc2UgaT1iLmNyZWF0ZVRleHROb2RlKGkpO2kubm9kZVR5cGU/Zy5wdXNoKGkpOmc9ZC5tZXJnZShnLGkpfWlmKGUpZm9yKGg9MDtnW2hdO2grKykhZnx8IWQubm9kZU5hbWUoZ1toXSwic2NyaXB0Iil8fGdbaF0udHlwZSYmZ1toXS50eXBlLnRvTG93ZXJDYXNlKCkhPT0idGV4dC9qYXZhc2NyaXB0Ij8oZ1toXS5ub2RlVHlwZT09PTEmJmcuc3BsaWNlLmFwcGx5KGcsW2grMSwwXS5jb25jYXQoZC5tYWtlQXJyYXkoZ1toXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IikpKSksZS5hcHBlbmRDaGlsZChnW2hdKSk6Zi5wdXNoKGdbaF0ucGFyZW50Tm9kZT9nW2hdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZ1toXSk6Z1toXSk7cmV0dXJuIGd9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXt2YXIgYixjLGU9ZC5jYWNoZSxmPWQuZXhwYW5kbyxnPWQuZXZlbnQuc3BlY2lhbCxoPWQuc3VwcG9ydC5kZWxldGVFeHBhbmRvO2Zvcih2YXIgaT0wLGo7KGo9YVtpXSkhPW51bGw7aSsrKXtpZihqLm5vZGVOYW1lJiZkLm5vRGF0YVtqLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKWNvbnRpbnVlO2M9altkLmV4cGFuZG9dO2lmKGMpe2I9ZVtjXSYmZVtjXVtmXTtpZihiJiZiLmV2ZW50cyl7Zm9yKHZhciBrIGluIGIuZXZlbnRzKWdba10/ZC5ldmVudC5yZW1vdmUoaixrKTpkLnJlbW92ZUV2ZW50KGosayxiLmhhbmRsZSk7Yi5oYW5kbGUmJihiLmhhbmRsZS5lbGVtPW51bGwpfWg/ZGVsZXRlIGpbZC5leHBhbmRvXTpqLnJlbW92ZUF0dHJpYnV0ZSYmai5yZW1vdmVBdHRyaWJ1dGUoZC5leHBhbmRvKSxkZWxldGUgZVtjXX19fX0pO3ZhciBiYT0vYWxwaGFcKFteKV0qXCkvaSxiYj0vb3BhY2l0eT0oW14pXSopLyxiYz0vLShbYS16XSkvaWcsYmQ9LyhbQS1aXSkvZyxiZT0vXi0/XGQrKD86cHgpPyQvaSxiZj0vXi0/XGQvLGJnPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxiaD1bIkxlZnQiLCJSaWdodCJdLGJpPVsiVG9wIiwiQm90dG9tIl0sYmosYmssYmwsYm09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTtkLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZC5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGUpe3JldHVybiBlIT09Yj9kLnN0eWxlKGEsYyxlKTpkLmNzcyhhLGMpfSl9LGQuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YmooYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOnt6SW5kZXg6ITAsZm9udFdlaWdodDohMCxvcGFjaXR5OiEwLHpvb206ITAsbGluZUhlaWdodDohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ZC5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZSxmKXtpZihhJiZhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJmEuc3R5bGUpe3ZhciBnLGg9ZC5jYW1lbENhc2UoYyksaT1hLnN0eWxlLGo9ZC5jc3NIb29rc1toXTtjPWQuY3NzUHJvcHNbaF18fGg7aWYoZT09PWIpe2lmKGomJiJnZXQiaW4gaiYmKGc9ai5nZXQoYSwhMSxmKSkhPT1iKXJldHVybiBnO3JldHVybiBpW2NdfWlmKHR5cGVvZiBlPT09Im51bWJlciImJmlzTmFOKGUpfHxlPT1udWxsKXJldHVybjt0eXBlb2YgZT09PSJudW1iZXIiJiYhZC5jc3NOdW1iZXJbaF0mJihlKz0icHgiKTtpZighanx8ISgic2V0ImluIGopfHwoZT1qLnNldChhLGUpKSE9PWIpdHJ5e2lbY109ZX1jYXRjaChrKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZixnPWQuY2FtZWxDYXNlKGMpLGg9ZC5jc3NIb29rc1tnXTtjPWQuY3NzUHJvcHNbZ118fGc7aWYoaCYmImdldCJpbiBoJiYoZj1oLmdldChhLCEwLGUpKSE9PWIpcmV0dXJuIGY7aWYoYmopcmV0dXJuIGJqKGEsYyxnKX0sc3dhcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9e307Zm9yKHZhciBlIGluIGIpZFtlXT1hLnN0eWxlW2VdLGEuc3R5bGVbZV09YltlXTtjLmNhbGwoYSk7Zm9yKGUgaW4gYilhLnN0eWxlW2VdPWRbZV19LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGJjLGJtKX19KSxkLmN1ckNTUz1kLmNzcyxkLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxlKXt2YXIgZjtpZihjKXthLm9mZnNldFdpZHRoIT09MD9mPWJuKGEsYixlKTpkLnN3YXAoYSxiZyxmdW5jdGlvbigpe2Y9Ym4oYSxiLGUpfSk7aWYoZjw9MCl7Zj1iaihhLGIsYiksZj09PSIwcHgiJiZibCYmKGY9YmwoYSxiLGIpKTtpZihmIT1udWxsKXJldHVybiBmPT09IiJ8fGY9PT0iYXV0byI/IjBweCI6Zn1pZihmPDB8fGY9PW51bGwpe2Y9YS5zdHlsZVtiXTtyZXR1cm4gZj09PSIifHxmPT09ImF1dG8iPyIwcHgiOmZ9cmV0dXJuIHR5cGVvZiBmPT09InN0cmluZyI/ZjpmKyJweCJ9fSxzZXQ6ZnVuY3Rpb24oYSxiKXtpZighYmUudGVzdChiKSlyZXR1cm4gYjtiPXBhcnNlRmxvYXQoYik7aWYoYj49MClyZXR1cm4gYisicHgifX19KSxkLnN1cHBvcnQub3BhY2l0eXx8KGQuY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGJiLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT9wYXJzZUZsb2F0KFJlZ0V4cC4kMSkvMTAwKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlO2Muem9vbT0xO3ZhciBlPWQuaXNOYU4oYik/IiI6ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSIsZj1jLmZpbHRlcnx8IiI7Yy5maWx0ZXI9YmEudGVzdChmKT9mLnJlcGxhY2UoYmEsZSk6Yy5maWx0ZXIrIiAiK2V9fSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYms9ZnVuY3Rpb24oYSxjLGUpe3ZhciBmLGcsaDtlPWUucmVwbGFjZShiZCwiLSQxIikudG9Mb3dlckNhc2UoKTtpZighKGc9YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSlyZXR1cm4gYjtpZihoPWcuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKWY9aC5nZXRQcm9wZXJ0eVZhbHVlKGUpLGY9PT0iIiYmIWQuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSYmKGY9ZC5zdHlsZShhLGUpKTtyZXR1cm4gZn0pLGMuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKGJsPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1hLmN1cnJlbnRTdHlsZSYmYS5jdXJyZW50U3R5bGVbYl0sZT1hLnJ1bnRpbWVTdHlsZSYmYS5ydW50aW1lU3R5bGVbYl0sZj1hLnN0eWxlOyFiZS50ZXN0KGQpJiZiZi50ZXN0KGQpJiYoYz1mLmxlZnQsZSYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZi5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmR8fDAsZD1mLnBpeGVsTGVmdCsicHgiLGYubGVmdD1jLGUmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWUpKTtyZXR1cm4gZD09PSIiPyJhdXRvIjpkfSksYmo9Ymt8fGJsLGQuZXhwciYmZC5leHByLmZpbHRlcnMmJihkLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFkLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZS5kaXNwbGF5fHxkLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxkLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFkLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYm89LyUyMC9nLGJwPS9cW1xdJC8sYnE9L1xyP1xuL2csYnI9LyMuKiQvLGJzPS9eKC4qPyk6XHMqKC4qPylccj8kL21nLGJ0PS9eKD86Y29sb3J8ZGF0ZXxkYXRldGltZXxlbWFpbHxoaWRkZW58bW9udGh8bnVtYmVyfHBhc3N3b3JkfHJhbmdlfHNlYXJjaHx0ZWx8dGV4dHx0aW1lfHVybHx3ZWVrKSQvaSxidT0vXig/OkdFVHxIRUFEKSQvLGJ2PS9eXC9cLy8sYnc9L1w/LyxieD0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSxieT0vXig/OnNlbGVjdHx0ZXh0YXJlYSkvaSxiej0vXHMrLyxiQT0vKFs/Jl0pXz1bXiZdKi8sYkI9L14oXHcrOilcL1wvKFteXC8/IzpdKykoPzo6KFxkKykpPy8sYkM9ZC5mbi5sb2FkLGJEPXt9LGJFPXt9O2QuZm4uZXh0ZW5kKHtsb2FkOmZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYSE9PSJzdHJpbmciJiZiQylyZXR1cm4gYkMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZj1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBnPSJHRVQiO2ImJihkLmlzRnVuY3Rpb24oYik/KGM9YixiPW51bGwpOnR5cGVvZiBiPT09Im9iamVjdCImJihiPWQucGFyYW0oYixkLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksZz0iUE9TVCIpKTt2YXIgaD10aGlzO2QuYWpheCh7dXJsOmEsdHlwZTpnLGRhdGFUeXBlOiJodG1sIixkYXRhOmIsY29tcGxldGU6ZnVuY3Rpb24oYSxiLGUpe2U9YS5yZXNwb25zZVRleHQsYS5pc1Jlc29sdmVkKCkmJihhLmRvbmUoZnVuY3Rpb24oYSl7ZT1hfSksaC5odG1sKGY/ZCgiPGRpdj4iKS5hcHBlbmQoZS5yZXBsYWNlKGJ4LCIiKSkuZmluZChmKTplKSksYyYmaC5lYWNoKGMsW2UsYixhXSl9fSk7cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBkLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudHM/ZC5tYWtlQXJyYXkodGhpcy5lbGVtZW50cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5jaGVja2VkfHxieS50ZXN0KHRoaXMubm9kZU5hbWUpfHxidC50ZXN0KHRoaXMudHlwZSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9ZCh0aGlzKS52YWwoKTtyZXR1cm4gYz09bnVsbD9udWxsOmQuaXNBcnJheShjKT9kLm1hcChjLGZ1bmN0aW9uKGEsYyl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShicSwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoYnEsIlxyXG4iKX19KS5nZXQoKX19KSxkLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7ZC5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iaW5kKGIsYSl9fSksZC5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYil7ZFtiXT1mdW5jdGlvbihhLGMsZSxmKXtkLmlzRnVuY3Rpb24oYykmJihmPWZ8fGUsZT1jLGM9bnVsbCk7cmV0dXJuIGQuYWpheCh7dHlwZTpiLHVybDphLGRhdGE6YyxzdWNjZXNzOmUsZGF0YVR5cGU6Zn0pfX0pLGQuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC5nZXQoYSxudWxsLGIsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5nZXQoYSxiLGMsImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGEpe2QuZXh0ZW5kKCEwLGQuYWpheFNldHRpbmdzLGEpLGEuY29udGV4dCYmKGQuYWpheFNldHRpbmdzLmNvbnRleHQ9YS5jb250ZXh0KX0sYWpheFNldHRpbmdzOnt1cmw6bG9jYXRpb24uaHJlZixnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6IiovKiJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpkLnBhcnNlSlNPTiwidGV4dCB4bWwiOmQucGFyc2VYTUx9fSxhamF4UHJlZmlsdGVyOmJGKGJEKSxhamF4VHJhbnNwb3J0OmJGKGJFKSxhamF4OmZ1bmN0aW9uKGEsZSl7ZnVuY3Rpb24gdyhhLGMsZSxsKXtpZih0IT09Mil7dD0yLHAmJmNsZWFyVGltZW91dChwKSxvPWIsbT1sfHwiIix2LnJlYWR5U3RhdGU9YT80OjA7dmFyIG4scSxyLHM9ZT9iSShmLHYsZSk6Yix1LHc7aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNCl7aWYoZi5pZk1vZGlmaWVkKXtpZih1PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSlkLmxhc3RNb2RpZmllZFtmLnVybF09dTtpZih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0YWciKSlkLmV0YWdbZi51cmxdPXd9aWYoYT09PTMwNCljPSJub3Rtb2RpZmllZCIsbj0hMDtlbHNlIHRyeXtxPWJKKGYscyksYz0ic3VjY2VzcyIsbj0hMH1jYXRjaCh4KXtjPSJwYXJzZXJlcnJvciIscj14fX1lbHNlIHI9YyxhJiYoYz0iZXJyb3IiLGE8MCYmKGE9MCkpO3Yuc3RhdHVzPWEsdi5zdGF0dXNUZXh0PWMsbj9pLnJlc29sdmVXaXRoKGcsW3EsYyx2XSk6aS5yZWplY3RXaXRoKGcsW3YsYyxyXSksdi5zdGF0dXNDb2RlKGspLGs9YixmLmdsb2JhbCYmaC50cmlnZ2VyKCJhamF4Iisobj8iU3VjY2VzcyI6IkVycm9yIiksW3YsZixuP3E6cl0pLGoucmVzb2x2ZVdpdGgoZyxbdixjXSksZi5nbG9iYWwmJihoLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3YsZl0pLC0tZC5hY3RpdmV8fGQuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSl9fXR5cGVvZiBlIT09Im9iamVjdCImJihlPWEsYT1iKSxlPWV8fHt9O3ZhciBmPWQuZXh0ZW5kKCEwLHt9LGQuYWpheFNldHRpbmdzLGUpLGc9KGYuY29udGV4dD0oImNvbnRleHQiaW4gZT9lOmQuYWpheFNldHRpbmdzKS5jb250ZXh0KXx8ZixoPWc9PT1mP2QuZXZlbnQ6ZChnKSxpPWQuRGVmZXJyZWQoKSxqPWQuX0RlZmVycmVkKCksaz1mLnN0YXR1c0NvZGV8fHt9LGw9e30sbSxuLG8scCxxPWMubG9jYXRpb24scj1xLnByb3RvY29sfHwiaHR0cDoiLHMsdD0wLHUsdj17cmVhZHlTdGF0ZTowLHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXt0PT09MCYmKGxbYS50b0xvd2VyQ2FzZSgpXT1iKTtyZXR1cm4gdGhpc30sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHQ9PT0yP206bnVsbH0sZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYodD09PTIpe2lmKCFuKXtuPXt9O3doaWxlKGI9YnMuZXhlYyhtKSluW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXX1iPW5bYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gYnx8bnVsbH0sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLG8mJm8uYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aS5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1qLmRvbmUsdi5zdGF0dXNDb2RlPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiO2lmKHQ8Milmb3IoYiBpbiBhKWtbYl09W2tbYl0sYVtiXV07ZWxzZSBiPWFbdi5zdGF0dXNdLHYudGhlbihiLGIpfXJldHVybiB0aGlzfSxmLnVybD0oIiIrKGF8fGYudXJsKSkucmVwbGFjZShiciwiIikucmVwbGFjZShidixyKyIvLyIpLGYuZGF0YVR5cGVzPWQudHJpbShmLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYnopLGYuY3Jvc3NEb21haW58fChzPWJCLmV4ZWMoZi51cmwudG9Mb3dlckNhc2UoKSksZi5jcm9zc0RvbWFpbj1zJiYoc1sxXSE9cnx8c1syXSE9cS5ob3N0bmFtZXx8KHNbM118fChzWzFdPT09Imh0dHA6Ij84MDo0NDMpKSE9KHEucG9ydHx8KHI9PT0iaHR0cDoiPzgwOjQ0MykpKSksZi5kYXRhJiZmLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZi5kYXRhIT09InN0cmluZyImJihmLmRhdGE9ZC5wYXJhbShmLmRhdGEsZi50cmFkaXRpb25hbCkpLGJHKGJELGYsZSx2KSxmLnR5cGU9Zi50eXBlLnRvVXBwZXJDYXNlKCksZi5oYXNDb250ZW50PSFidS50ZXN0KGYudHlwZSksZi5nbG9iYWwmJmQuYWN0aXZlKys9PT0wJiZkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFmLmhhc0NvbnRlbnQpe2YuZGF0YSYmKGYudXJsKz0oYncudGVzdChmLnVybCk/IiYiOiI/IikrZi5kYXRhKTtpZihmLmNhY2hlPT09ITEpe3ZhciB4PWQubm93KCkseT1mLnVybC5yZXBsYWNlKGJBLCIkMV89Iit4KTtmLnVybD15Kyh5PT09Zi51cmw/KGJ3LnRlc3QoZi51cmwpPyImIjoiPyIpKyJfPSIreDoiIil9fWlmKGYuZGF0YSYmZi5oYXNDb250ZW50JiZmLmNvbnRlbnRUeXBlIT09ITF8fGUuY29udGVudFR5cGUpbFsiY29udGVudC10eXBlIl09Zi5jb250ZW50VHlwZTtmLmlmTW9kaWZpZWQmJihkLmxhc3RNb2RpZmllZFtmLnVybF0mJihsWyJpZi1tb2RpZmllZC1zaW5jZSJdPWQubGFzdE1vZGlmaWVkW2YudXJsXSksZC5ldGFnW2YudXJsXSYmKGxbImlmLW5vbmUtbWF0Y2giXT1kLmV0YWdbZi51cmxdKSksbC5hY2NlcHQ9Zi5kYXRhVHlwZXNbMF0mJmYuYWNjZXB0c1tmLmRhdGFUeXBlc1swXV0/Zi5hY2NlcHRzW2YuZGF0YVR5cGVzWzBdXSsoZi5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgKi8qOyBxPTAuMDEiOiIiKTpmLmFjY2VwdHNbIioiXTtmb3IodSBpbiBmLmhlYWRlcnMpbFt1LnRvTG93ZXJDYXNlKCldPWYuaGVhZGVyc1t1XTtpZighZi5iZWZvcmVTZW5kfHxmLmJlZm9yZVNlbmQuY2FsbChnLHYsZikhPT0hMSYmdCE9PTIpe2Zvcih1IGluIHtzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl2W3VdKGZbdV0pO289YkcoYkUsZixlLHYpO2lmKG8pe3Q9di5yZWFkeVN0YXRlPTEsZi5nbG9iYWwmJmgudHJpZ2dlcigiYWpheFNlbmQiLFt2LGZdKSxmLmFzeW5jJiZmLnRpbWVvdXQ+MCYmKHA9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0sZi50aW1lb3V0KSk7dHJ5e28uc2VuZChsLHcpfWNhdGNoKHope3N0YXR1czwyP3coLTEseik6ZC5lcnJvcih6KX19ZWxzZSB3KC0xLCJObyBUcmFuc3BvcnQiKX1lbHNlIHcoMCwiYWJvcnQiKSx2PSExO3JldHVybiB2fSxwYXJhbTpmdW5jdGlvbihhLGMpe3ZhciBlPVtdLGY9ZnVuY3Rpb24oYSxiKXtiPWQuaXNGdW5jdGlvbihiKT9iKCk6YixlW2UubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07Yz09PWImJihjPWQuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKTtpZihkLmlzQXJyYXkoYSl8fGEuanF1ZXJ5KWQuZWFjaChhLGZ1bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcih2YXIgZyBpbiBhKWJIKGcsYVtnXSxjLGYpO3JldHVybiBlLmpvaW4oIiYiKS5yZXBsYWNlKGJvLCIrIil9fSksZC5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9fSk7dmFyIGJLPWQubm93KCksYkw9LyhcPSlcPygmfCQpfCgpXD9cPygpL2k7ZC5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBkLmV4cGFuZG8rIl8iK2JLKyt9fSksZC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZSl7ZT10eXBlb2YgYi5kYXRhPT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxjLmpzb25wQ2FsbGJhY2t8fGMuanNvbnAhPW51bGx8fGIuanNvbnAhPT0hMSYmKGJMLnRlc3QoYi51cmwpfHxlJiZiTC50ZXN0KGIuZGF0YSkpKXt2YXIgZixnPWIuanNvbnBDYWxsYmFjaz1kLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD1hW2ddLGk9Yi51cmwsaj1iLmRhdGEsaz0iJDEiK2crIiQyIjtiLmpzb25wIT09ITEmJihpPWkucmVwbGFjZShiTCxrKSxiLnVybD09PWkmJihlJiYoaj1qLnJlcGxhY2UoYkwsaykpLGIuZGF0YT09PWomJihpKz0oL1w/Ly50ZXN0KGkpPyImIjoiPyIpK2IuanNvbnArIj0iK2cpKSksYi51cmw9aSxiLmRhdGE9aixhW2ddPWZ1bmN0aW9uKGEpe2Y9W2FdfSxiLmNvbXBsZXRlPVtmdW5jdGlvbigpe2FbZ109aDtpZihoKWYmJmQuaXNGdW5jdGlvbihoKSYmYVtnXShmWzBdKTtlbHNlIHRyeXtkZWxldGUgYVtnXX1jYXRjaChiKXt9fSxiLmNvbXBsZXRlXSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtmfHxkLmVycm9yKGcrIiB3YXMgbm90IGNhbGxlZCIpO3JldHVybiBmWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiI7cmV0dXJuInNjcmlwdCJ9fSksZC5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7ZC5nbG9iYWxFdmFsKGEpO3JldHVybiBhfX19KSxkLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7YS5jYWNoZT09PWImJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLGQuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgZCxlPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtkPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZC5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGQuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGQuc3JjPWEudXJsLGQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7aWYoIWQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZSYmZC5wYXJlbnROb2RlJiZlLnJlbW92ZUNoaWxkKGQpLGQ9YixjfHxnKDIwMCwic3VjY2VzcyIpfSxlLmluc2VydEJlZm9yZShkLGUuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZC5vbmxvYWQoMCwxKX19fX0pO3ZhciBiTT1kLm5vdygpLGJOPXt9LGJPLGJQO2QuYWpheFNldHRpbmdzLnhocj1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtpZihhLmxvY2F0aW9uLnByb3RvY29sIT09ImZpbGU6Iil0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe310cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYyl7fX06ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9O3RyeXtiUD1kLmFqYXhTZXR0aW5ncy54aHIoKX1jYXRjaChiUSl7fWQuc3VwcG9ydC5hamF4PSEhYlAsZC5zdXBwb3J0LmNvcnM9YlAmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYlAsYlA9YixkLnN1cHBvcnQuYWpheCYmZC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe2lmKCFiLmNyb3NzRG9tYWlufHxkLnN1cHBvcnQuY29ycyl7dmFyIGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXtiT3x8KGJPPTEsZChhKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7ZC5lYWNoKGJOLGZ1bmN0aW9uKGEsYil7Yi5vbnJlYWR5c3RhdGVjaGFuZ2UmJmIub25yZWFkeXN0YXRlY2hhbmdlKDEpfSl9KSk7dmFyIGc9Yi54aHIoKSxoO2IudXNlcm5hbWU/Zy5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jLGIudXNlcm5hbWUsYi5wYXNzd29yZCk6Zy5vcGVuKGIudHlwZSxiLnVybCxiLmFzeW5jKSwoIWIuY3Jvc3NEb21haW58fGIuaGFzQ29udGVudCkmJiFlWyJ4LXJlcXVlc3RlZC13aXRoIl0mJihlWyJ4LXJlcXVlc3RlZC13aXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e2QuZWFjaChlLGZ1bmN0aW9uKGEsYil7Zy5zZXRSZXF1ZXN0SGVhZGVyKGEsYil9KX1jYXRjaChpKXt9Zy5zZW5kKGIuaGFzQ29udGVudCYmYi5kYXRhfHxudWxsKSxjPWZ1bmN0aW9uKGEsZSl7aWYoYyYmKGV8fGcucmVhZHlTdGF0ZT09PTQpKXtjPTAsaCYmKGcub25yZWFkeXN0YXRlY2hhbmdlPWQubm9vcCxkZWxldGUgYk5baF0pO2lmKGUpZy5yZWFkeVN0YXRlIT09NCYmZy5hYm9ydCgpO2Vsc2V7dmFyIGk9Zy5zdGF0dXMsaixrPWcuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCksbD17fSxtPWcucmVzcG9uc2VYTUw7bSYmbS5kb2N1bWVudEVsZW1lbnQmJihsLnhtbD1tKSxsLnRleHQ9Zy5yZXNwb25zZVRleHQ7dHJ5e2o9Zy5zdGF0dXNUZXh0fWNhdGNoKG4pe2o9IiJ9aT1pPT09MD8hYi5jcm9zc0RvbWFpbnx8aj9rPzMwNDowOjMwMjppPT0xMjIzPzIwNDppLGYoaSxqLGwsayl9fX0sYi5hc3luYyYmZy5yZWFkeVN0YXRlIT09ND8oaD1iTSsrLGJOW2hdPWcsZy5vbnJlYWR5c3RhdGVjaGFuZ2U9Yyk6YygpfSxhYm9ydDpmdW5jdGlvbigpe2MmJmMoMCwxKX19fX0pO3ZhciBiUj17fSxiUz0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sYlQ9L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSxiVSxiVj1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtkLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGJXKCJzaG93IiwzKSxhLGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWU9dGhpc1tnXSxmPWUuc3R5bGUuZGlzcGxheSwhZC5fZGF0YShlLCJvbGRkaXNwbGF5IikmJmY9PT0ibm9uZSImJihmPWUuc3R5bGUuZGlzcGxheT0iIiksZj09PSIiJiZkLmNzcyhlLCJkaXNwbGF5Iik9PT0ibm9uZSImJmQuX2RhdGEoZSwib2xkZGlzcGxheSIsYlgoZS5ub2RlTmFtZSkpO2ZvcihnPTA7ZzxoO2crKyl7ZT10aGlzW2ddLGY9ZS5zdHlsZS5kaXNwbGF5O2lmKGY9PT0iInx8Zj09PSJub25lIillLnN0eWxlLmRpc3BsYXk9ZC5fZGF0YShlLCJvbGRkaXNwbGF5Iil8fCIifXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGJXKCJoaWRlIiwzKSxhLGIsYyk7Zm9yKHZhciBlPTAsZj10aGlzLmxlbmd0aDtlPGY7ZSsrKXt2YXIgZz1kLmNzcyh0aGlzW2VdLCJkaXNwbGF5Iik7ZyE9PSJub25lIiYmIWQuX2RhdGEodGhpc1tlXSwib2xkZGlzcGxheSIpJiZkLl9kYXRhKHRoaXNbZV0sIm9sZGRpc3BsYXkiLGcpfWZvcihlPTA7ZTxmO2UrKyl0aGlzW2VdLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3JldHVybiB0aGlzfSxfdG9nZ2xlOmQuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU9dHlwZW9mIGE9PT0iYm9vbGVhbiI7ZC5pc0Z1bmN0aW9uKGEpJiZkLmlzRnVuY3Rpb24oYik/dGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTphPT1udWxsfHxlP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWU/YTpkKHRoaXMpLmlzKCI6aGlkZGVuIik7ZCh0aGlzKVtiPyJzaG93IjoiaGlkZSJdKCl9KTp0aGlzLmFuaW1hdGUoYlcoInRvZ2dsZSIsMyksYSxiLGMpO3JldHVybiB0aGlzfSxmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9ZC5zcGVlZChiLGMsZSk7aWYoZC5pc0VtcHR5T2JqZWN0KGEpKXJldHVybiB0aGlzLmVhY2goZi5jb21wbGV0ZSk7cmV0dXJuIHRoaXNbZi5xdWV1ZT09PSExPyJlYWNoIjoicXVldWUiXShmdW5jdGlvbigpe3ZhciBiPWQuZXh0ZW5kKHt9LGYpLGMsZT10aGlzLm5vZGVUeXBlPT09MSxnPWUmJmQodGhpcykuaXMoIjpoaWRkZW4iKSxoPXRoaXM7Zm9yKGMgaW4gYSl7dmFyIGk9ZC5jYW1lbENhc2UoYyk7YyE9PWkmJihhW2ldPWFbY10sZGVsZXRlIGFbY10sYz1pKTtpZihhW2NdPT09ImhpZGUiJiZnfHxhW2NdPT09InNob3ciJiYhZylyZXR1cm4gYi5jb21wbGV0ZS5jYWxsKHRoaXMpO2lmKGUmJihjPT09ImhlaWdodCJ8fGM9PT0id2lkdGgiKSl7Yi5vdmVyZmxvdz1bdGhpcy5zdHlsZS5vdmVyZmxvdyx0aGlzLnN0eWxlLm92ZXJmbG93WCx0aGlzLnN0eWxlLm92ZXJmbG93WV07aWYoZC5jc3ModGhpcywiZGlzcGxheSIpPT09ImlubGluZSImJmQuY3NzKHRoaXMsImZsb2F0Iik9PT0ibm9uZSIpaWYoZC5zdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQpe3ZhciBqPWJYKHRoaXMubm9kZU5hbWUpO2o9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6KHRoaXMuc3R5bGUuZGlzcGxheT0iaW5saW5lIix0aGlzLnN0eWxlLnpvb209MSl9ZWxzZSB0aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayJ9ZC5pc0FycmF5KGFbY10pJiYoKGIuc3BlY2lhbEVhc2luZz1iLnNwZWNpYWxFYXNpbmd8fHt9KVtjXT1hW2NdWzFdLGFbY109YVtjXVswXSl9Yi5vdmVyZmxvdyE9bnVsbCYmKHRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpLGIuY3VyQW5pbT1kLmV4dGVuZCh7fSxhKSxkLmVhY2goYSxmdW5jdGlvbihjLGUpe3ZhciBmPW5ldyBkLmZ4KGgsYixjKTtpZihiUy50ZXN0KGUpKWZbZT09PSJ0b2dnbGUiP2c/InNob3ciOiJoaWRlIjplXShhKTtlbHNle3ZhciBpPWJULmV4ZWMoZSksaj1mLmN1cigpfHwwO2lmKGkpe3ZhciBrPXBhcnNlRmxvYXQoaVsyXSksbD1pWzNdfHwicHgiO2whPT0icHgiJiYoZC5zdHlsZShoLGMsKGt8fDEpK2wpLGo9KGt8fDEpL2YuY3VyKCkqaixkLnN0eWxlKGgsYyxqK2wpKSxpWzFdJiYoaz0oaVsxXT09PSItPSI/LTE6MSkqaytqKSxmLmN1c3RvbShqLGssbCl9ZWxzZSBmLmN1c3RvbShqLGUsIiIpfX0pO3JldHVybiEwfSl9LHN0b3A6ZnVuY3Rpb24oYSxiKXt2YXIgYz1kLnRpbWVyczthJiZ0aGlzLnF1ZXVlKFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIGE9Yy5sZW5ndGgtMTthPj0wO2EtLSljW2FdLmVsZW09PT10aGlzJiYoYiYmY1thXSghMCksYy5zcGxpY2UoYSwxKSl9KSxifHx0aGlzLmRlcXVldWUoKTtyZXR1cm4gdGhpc319KSxkLmVhY2goe3NsaWRlRG93bjpiVygic2hvdyIsMSksc2xpZGVVcDpiVygiaGlkZSIsMSksc2xpZGVUb2dnbGU6YlcoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2QuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksZC5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1hJiZ0eXBlb2YgYT09PSJvYmplY3QiP2QuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8ZC5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFkLmlzRnVuY3Rpb24oYikmJmJ9O2UuZHVyYXRpb249ZC5meC5vZmY/MDp0eXBlb2YgZS5kdXJhdGlvbj09PSJudW1iZXIiP2UuZHVyYXRpb246ZS5kdXJhdGlvbiBpbiBkLmZ4LnNwZWVkcz9kLmZ4LnNwZWVkc1tlLmR1cmF0aW9uXTpkLmZ4LnNwZWVkcy5fZGVmYXVsdCxlLm9sZD1lLmNvbXBsZXRlLGUuY29tcGxldGU9ZnVuY3Rpb24oKXtlLnF1ZXVlIT09ITEmJmQodGhpcykuZGVxdWV1ZSgpLGQuaXNGdW5jdGlvbihlLm9sZCkmJmUub2xkLmNhbGwodGhpcyl9O3JldHVybiBlfSxlYXNpbmc6e2xpbmVhcjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYytkKmF9LHN3aW5nOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybigtTWF0aC5jb3MoYSpNYXRoLlBJKS8yKy41KSpkK2N9fSx0aW1lcnM6W10sZng6ZnVuY3Rpb24oYSxiLGMpe3RoaXMub3B0aW9ucz1iLHRoaXMuZWxlbT1hLHRoaXMucHJvcD1jLGIub3JpZ3x8KGIub3JpZz17fSl9fSksZC5meC5wcm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSwoZC5meC5zdGVwW3RoaXMucHJvcF18fGQuZnguc3RlcC5fZGVmYXVsdCkodGhpcyl9LGN1cjpmdW5jdGlvbigpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRoaXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTt2YXIgYT1wYXJzZUZsb2F0KGQuY3NzKHRoaXMuZWxlbSx0aGlzLnByb3ApKTtyZXR1cm4gYXx8MH0sY3VzdG9tOmZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBnKGEpe3JldHVybiBlLnN0ZXAoYSl9dmFyIGU9dGhpcyxmPWQuZng7dGhpcy5zdGFydFRpbWU9ZC5ub3coKSx0aGlzLnN0YXJ0PWEsdGhpcy5lbmQ9Yix0aGlzLnVuaXQ9Y3x8dGhpcy51bml0fHwicHgiLHRoaXMubm93PXRoaXMuc3RhcnQsdGhpcy5wb3M9dGhpcy5zdGF0ZT0wLGcuZWxlbT10aGlzLmVsZW0sZygpJiZkLnRpbWVycy5wdXNoKGcpJiYhYlUmJihiVT1zZXRJbnRlcnZhbChmLnRpY2ssZi5pbnRlcnZhbCkpfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1kLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5zaG93PSEwLHRoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6MCx0aGlzLmN1cigpKSxkKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1kLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5oaWRlPSEwLHRoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGI9ZC5ub3coKSxjPSEwO2lmKGF8fGI+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQsdGhpcy5wb3M9dGhpcy5zdGF0ZT0xLHRoaXMudXBkYXRlKCksdGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT0hMDtmb3IodmFyIGUgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pdGhpcy5vcHRpb25zLmN1ckFuaW1bZV0hPT0hMCYmKGM9ITEpO2lmKGMpe2lmKHRoaXMub3B0aW9ucy5vdmVyZmxvdyE9bnVsbCYmIWQuc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzKXt2YXIgZj10aGlzLmVsZW0sZz10aGlzLm9wdGlvbnM7ZC5lYWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2Yuc3R5bGVbIm92ZXJmbG93IitiXT1nLm92ZXJmbG93W2FdfSl9dGhpcy5vcHRpb25zLmhpZGUmJmQodGhpcy5lbGVtKS5oaWRlKCk7aWYodGhpcy5vcHRpb25zLmhpZGV8fHRoaXMub3B0aW9ucy5zaG93KWZvcih2YXIgaCBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSlkLnN0eWxlKHRoaXMuZWxlbSxoLHRoaXMub3B0aW9ucy5vcmlnW2hdKTt0aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiExfXZhciBpPWItdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1pL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt2YXIgaj10aGlzLm9wdGlvbnMuc3BlY2lhbEVhc2luZyYmdGhpcy5vcHRpb25zLnNwZWNpYWxFYXNpbmdbdGhpcy5wcm9wXSxrPXRoaXMub3B0aW9ucy5lYXNpbmd8fChkLmVhc2luZy5zd2luZz8ic3dpbmciOiJsaW5lYXIiKTt0aGlzLnBvcz1kLmVhc2luZ1tqfHxrXSh0aGlzLnN0YXRlLGksMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbiksdGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MsdGhpcy51cGRhdGUoKTtyZXR1cm4hMH19LGQuZXh0ZW5kKGQuZngse3RpY2s6ZnVuY3Rpb24oKXt2YXIgYT1kLnRpbWVycztmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdKCl8fGEuc3BsaWNlKGItLSwxKTthLmxlbmd0aHx8ZC5meC5zdG9wKCl9LGludGVydmFsOjEzLHN0b3A6ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGJVKSxiVT1udWxsfSxzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihhKXtkLnN0eWxlKGEuZWxlbSwib3BhY2l0eSIsYS5ub3cpfSxfZGVmYXVsdDpmdW5jdGlvbihhKXthLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsP2EuZWxlbS5zdHlsZVthLnByb3BdPShhLnByb3A9PT0id2lkdGgifHxhLnByb3A9PT0iaGVpZ2h0Ij9NYXRoLm1heCgwLGEubm93KTphLm5vdykrYS51bml0OmEuZWxlbVthLnByb3BdPWEubm93fX19KSxkLmV4cHImJmQuZXhwci5maWx0ZXJzJiYoZC5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ3JlcChkLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0pO3ZhciBiWT0vXnQoPzphYmxlfGR8aCkkL2ksYlo9L14oPzpib2R5fGh0bWwpJC9pOyJnZXRCb3VuZGluZ0NsaWVudFJlY3QiaW4gYy5kb2N1bWVudEVsZW1lbnQ/ZC5mbi5vZmZzZXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXSxjO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtkLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBkLm9mZnNldC5ib2R5T2Zmc2V0KGIpO3RyeXtjPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goZSl7fXZhciBmPWIub3duZXJEb2N1bWVudCxnPWYuZG9jdW1lbnRFbGVtZW50O2lmKCFjfHwhZC5jb250YWlucyhnLGIpKXJldHVybiBjP3t0b3A6Yy50b3AsbGVmdDpjLmxlZnR9Ont0b3A6MCxsZWZ0OjB9O3ZhciBoPWYuYm9keSxpPWIkKGYpLGo9Zy5jbGllbnRUb3B8fGguY2xpZW50VG9wfHwwLGs9Zy5jbGllbnRMZWZ0fHxoLmNsaWVudExlZnR8fDAsbD1pLnBhZ2VZT2Zmc2V0fHxkLnN1cHBvcnQuYm94TW9kZWwmJmcuc2Nyb2xsVG9wfHxoLnNjcm9sbFRvcCxtPWkucGFnZVhPZmZzZXR8fGQuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxMZWZ0fHxoLnNjcm9sbExlZnQsbj1jLnRvcCtsLWosbz1jLmxlZnQrbS1rO3JldHVybnt0b3A6bixsZWZ0Om99fTpkLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO2lmKGEpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtkLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7aWYoIWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5ib2R5KXJldHVybiBkLm9mZnNldC5ib2R5T2Zmc2V0KGIpO2Qub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgYyxlPWIub2Zmc2V0UGFyZW50LGY9YixnPWIub3duZXJEb2N1bWVudCxoPWcuZG9jdW1lbnRFbGVtZW50LGk9Zy5ib2R5LGo9Zy5kZWZhdWx0VmlldyxrPWo/ai5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6Yi5jdXJyZW50U3R5bGUsbD1iLm9mZnNldFRvcCxtPWIub2Zmc2V0TGVmdDt3aGlsZSgoYj1iLnBhcmVudE5vZGUpJiZiIT09aSYmYiE9PWgpe2lmKGQub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZSYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxkLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYoIWQub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzfHwhYlkudGVzdChiLm5vZGVOYW1lKSkmJihsKz1wYXJzZUZsb2F0KGMuYm9yZGVyVG9wV2lkdGgpfHwwLG0rPXBhcnNlRmxvYXQoYy5ib3JkZXJMZWZ0V2lkdGgpfHwwKSxmPWUsZT1iLm9mZnNldFBhcmVudCksZC5vZmZzZXQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Qub2Zmc2V0LnN1cHBvcnRzRml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCImJihsKz1NYXRoLm1heChoLnNjcm9sbFRvcCxpLnNjcm9sbFRvcCksbSs9TWF0aC5tYXgoaC5zY3JvbGxMZWZ0LGkuc2Nyb2xsTGVmdCkpO3JldHVybnt0b3A6bCxsZWZ0Om19fSxkLm9mZnNldD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBhPWMuYm9keSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZSxmLGcsaCxpPXBhcnNlRmxvYXQoZC5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGo9IjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4Oyc+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OycgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiI7ZC5leHRlbmQoYi5zdHlsZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KSxiLmlubmVySFRNTD1qLGEuaW5zZXJ0QmVmb3JlKGIsYS5maXJzdENoaWxkKSxlPWIuZmlyc3RDaGlsZCxmPWUuZmlyc3RDaGlsZCxoPWUubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLHRoaXMuZG9lc05vdEFkZEJvcmRlcj1mLm9mZnNldFRvcCE9PTUsdGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscz1oLm9mZnNldFRvcD09PTUsZi5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGYuc3R5bGUudG9wPSIyMHB4Iix0aGlzLnN1cHBvcnRzRml4ZWRQb3NpdGlvbj1mLm9mZnNldFRvcD09PTIwfHxmLm9mZnNldFRvcD09PTE1LGYuc3R5bGUucG9zaXRpb249Zi5zdHlsZS50b3A9IiIsZS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGU9Zi5vZmZzZXRUb3A9PT0tNSx0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PWEub2Zmc2V0VG9wIT09aSxhLnJlbW92ZUNoaWxkKGIpLGE9Yj1lPWY9Zz1oPW51bGwsZC5vZmZzZXQuaW5pdGlhbGl6ZT1kLm5vb3B9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRUb3AsYz1hLm9mZnNldExlZnQ7ZC5vZmZzZXQuaW5pdGlhbGl6ZSgpLGQub2Zmc2V0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0JiYoYis9cGFyc2VGbG9hdChkLmNzcyhhLCJtYXJnaW5Ub3AiKSl8fDAsYys9cGFyc2VGbG9hdChkLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwKTtyZXR1cm57dG9wOmIsbGVmdDpjfX0sc2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1kLmNzcyhhLCJwb3NpdGlvbiIpO2U9PT0ic3RhdGljIiYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIGY9ZChhKSxnPWYub2Zmc2V0KCksaD1kLmNzcyhhLCJ0b3AiKSxpPWQuY3NzKGEsImxlZnQiKSxqPWU9PT0iYWJzb2x1dGUiJiZkLmluQXJyYXkoImF1dG8iLFtoLGldKT4tMSxrPXt9LGw9e30sbSxuO2omJihsPWYucG9zaXRpb24oKSksbT1qP2wudG9wOnBhcnNlSW50KGgsMTApfHwwLG49aj9sLmxlZnQ6cGFyc2VJbnQoaSwxMCl8fDAsZC5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmYuY3NzKGspfX0sZC5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGU9YloudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGQuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZC5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxlLnRvcCs9cGFyc2VGbG9hdChkLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxlLmxlZnQrPXBhcnNlRmxvYXQoZC5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZS50b3AsbGVmdDpjLmxlZnQtZS5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYoIWJaLnRlc3QoYS5ub2RlTmFtZSkmJmQuY3NzKGEsInBvc2l0aW9uIik9PT0ic3RhdGljIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYX0pfX0pLGQuZWFjaChbIkxlZnQiLCJUb3AiXSxmdW5jdGlvbihhLGMpe3ZhciBlPSJzY3JvbGwiK2M7ZC5mbltlXT1mdW5jdGlvbihjKXt2YXIgZj10aGlzWzBdLGc7aWYoIWYpcmV0dXJuIG51bGw7aWYoYyE9PWIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9YiQodGhpcyksZz9nLnNjcm9sbFRvKGE/ZChnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZChnKS5zY3JvbGxUb3AoKSk6dGhpc1tlXT1jfSk7Zz1iJChmKTtyZXR1cm4gZz8icGFnZVhPZmZzZXQiaW4gZz9nW2E/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXTpkLnN1cHBvcnQuYm94TW9kZWwmJmcuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2VdfHxnLmRvY3VtZW50LmJvZHlbZV06ZltlXX19KSxkLmVhY2goWyJIZWlnaHQiLCJXaWR0aCJdLGZ1bmN0aW9uKGEsYyl7dmFyIGU9Yy50b0xvd2VyQ2FzZSgpO2QuZm5bImlubmVyIitjXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP3BhcnNlRmxvYXQoZC5jc3ModGhpc1swXSxlLCJwYWRkaW5nIikpOm51bGx9LGQuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpc1swXT9wYXJzZUZsb2F0KGQuY3NzKHRoaXNbMF0sZSxhPyJtYXJnaW4iOiJib3JkZXIiKSk6bnVsbH0sZC5mbltlXT1mdW5jdGlvbihhKXt2YXIgZj10aGlzWzBdO2lmKCFmKXJldHVybiBhPT1udWxsP251bGw6dGhpcztpZihkLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1kKHRoaXMpO2NbZV0oYS5jYWxsKHRoaXMsYixjW2VdKCkpKX0pO2lmKGQuaXNXaW5kb3coZikpe3ZhciBnPWYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2NdO3JldHVybiBmLmRvY3VtZW50LmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCImJmd8fGYuZG9jdW1lbnQuYm9keVsiY2xpZW50IitjXXx8Z31pZihmLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZi5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZi5ib2R5WyJzY3JvbGwiK2NdLGYuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGYuYm9keVsib2Zmc2V0IitjXSxmLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBoPWQuY3NzKGYsZSksaT1wYXJzZUZsb2F0KGgpO3JldHVybiBkLmlzTmFOKGkpP2g6aX1yZXR1cm4gdGhpcy5jc3MoZSx0eXBlb2YgYT09PSJzdHJpbmciP2E6YSsicHgiKX19KX0pKHdpbmRvdyk7Cgo=]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.core.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSAxLjguNwogKgogKiBDb3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkKICovCihmdW5jdGlvbihjLGope2Z1bmN0aW9uIGsoYSl7cmV0dXJuIWMoYSkucGFyZW50cygpLmFuZFNlbGYoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gYy5jdXJDU1ModGhpcywidmlzaWJpbGl0eSIpPT09ImhpZGRlbiJ8fGMuZXhwci5maWx0ZXJzLmhpZGRlbih0aGlzKX0pLmxlbmd0aH1jLnVpPWMudWl8fHt9O2lmKCFjLnVpLnZlcnNpb24pe2MuZXh0ZW5kKGMudWkse3ZlcnNpb246IjEuOC43IixrZXlDb2RlOntBTFQ6MTgsQkFDS1NQQUNFOjgsQ0FQU19MT0NLOjIwLENPTU1BOjE4OCxDT01NQU5EOjkxLENPTU1BTkRfTEVGVDo5MSxDT01NQU5EX1JJR0hUOjkzLENPTlRST0w6MTcsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LElOU0VSVDo0NSxMRUZUOjM3LE1FTlU6OTMsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBBRF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVNUEFEX01VTFRJUExZOjEwNiwKTlVNUEFEX1NVQlRSQUNUOjEwOSxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNISUZUOjE2LFNQQUNFOjMyLFRBQjo5LFVQOjM4LFdJTkRPV1M6OTF9fSk7Yy5mbi5leHRlbmQoe19mb2N1czpjLmZuLmZvY3VzLGZvY3VzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBhPT09Im51bWJlciI/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YyhkKS5mb2N1cygpO2ImJmIuY2FsbChkKX0sYSl9KTp0aGlzLl9mb2N1cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHNjcm9sbFBhcmVudDpmdW5jdGlvbigpe3ZhciBhO2E9Yy5icm93c2VyLm1zaWUmJi8oc3RhdGljfHJlbGF0aXZlKS8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSl8fC9hYnNvbHV0ZS8udGVzdCh0aGlzLmNzcygicG9zaXRpb24iKSk/dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLyhyZWxhdGl2ZXxhYnNvbHV0ZXxmaXhlZCkvLnRlc3QoYy5jdXJDU1ModGhpcywKInBvc2l0aW9uIiwxKSkmJi8oYXV0b3xzY3JvbGwpLy50ZXN0KGMuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTp0aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4vKGF1dG98c2Nyb2xsKS8udGVzdChjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdyIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteSIsMSkrYy5jdXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEoMCk7cmV0dXJuL2ZpeGVkLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKXx8IWEubGVuZ3RoP2MoZG9jdW1lbnQpOmF9LHpJbmRleDpmdW5jdGlvbihhKXtpZihhIT09ailyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsYSk7aWYodGhpcy5sZW5ndGgpe2E9Yyh0aGlzWzBdKTtmb3IodmFyIGI7YS5sZW5ndGgmJmFbMF0hPT1kb2N1bWVudDspe2I9YS5jc3MoInBvc2l0aW9uIik7CmlmKGI9PT0iYWJzb2x1dGUifHxiPT09InJlbGF0aXZlInx8Yj09PSJmaXhlZCIpe2I9cGFyc2VJbnQoYS5jc3MoInpJbmRleCIpLDEwKTtpZighaXNOYU4oYikmJmIhPT0wKXJldHVybiBifWE9YS5wYXJlbnQoKX19cmV0dXJuIDB9LGRpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaW5kKChjLnN1cHBvcnQuc2VsZWN0c3RhcnQ/InNlbGVjdHN0YXJ0IjoibW91c2Vkb3duIikrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCl9KX0sZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5iaW5kKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfX0pO2MuZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBkKGYsZyxsLG0pe2MuZWFjaChlLGZ1bmN0aW9uKCl7Zy09cGFyc2VGbG9hdChjLmN1ckNTUyhmLCJwYWRkaW5nIit0aGlzLHRydWUpKXx8MDtpZihsKWctPXBhcnNlRmxvYXQoYy5jdXJDU1MoZiwKImJvcmRlciIrdGhpcysiV2lkdGgiLHRydWUpKXx8MDtpZihtKWctPXBhcnNlRmxvYXQoYy5jdXJDU1MoZiwibWFyZ2luIit0aGlzLHRydWUpKXx8MH0pO3JldHVybiBnfXZhciBlPWI9PT0iV2lkdGgiP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxoPWIudG9Mb3dlckNhc2UoKSxpPXtpbm5lcldpZHRoOmMuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDpjLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6Yy5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmMuZm4ub3V0ZXJIZWlnaHR9O2MuZm5bImlubmVyIitiXT1mdW5jdGlvbihmKXtpZihmPT09ailyZXR1cm4gaVsiaW5uZXIiK2JdLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2ModGhpcykuY3NzKGgsZCh0aGlzLGYpKyJweCIpfSl9O2MuZm5bIm91dGVyIitiXT1mdW5jdGlvbihmLGcpe2lmKHR5cGVvZiBmIT09Im51bWJlciIpcmV0dXJuIGlbIm91dGVyIitiXS5jYWxsKHRoaXMsZik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2ModGhpcykuY3NzKGgsCmQodGhpcyxmLHRydWUsZykrInB4Iil9KX19KTtjLmV4dGVuZChjLmV4cHJbIjoiXSx7ZGF0YTpmdW5jdGlvbihhLGIsZCl7cmV0dXJuISFjLmRhdGEoYSxkWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxkPWMuYXR0cihhLCJ0YWJpbmRleCIpO2lmKCJhcmVhIj09PWIpe2I9YS5wYXJlbnROb2RlO2Q9Yi5uYW1lO2lmKCFhLmhyZWZ8fCFkfHxiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ibWFwIilyZXR1cm4gZmFsc2U7YT1jKCJpbWdbdXNlbWFwPSMiK2QrIl0iKVswXTtyZXR1cm4hIWEmJmsoYSl9cmV0dXJuKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdChiKT8hYS5kaXNhYmxlZDoiYSI9PWI/YS5ocmVmfHwhaXNOYU4oZCk6IWlzTmFOKGQpKSYmayhhKX0sdGFiYmFibGU6ZnVuY3Rpb24oYSl7dmFyIGI9Yy5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuKGlzTmFOKGIpfHxiPj0wKSYmYyhhKS5pcygiOmZvY3VzYWJsZSIpfX0pOwpjKGZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuYm9keSxiPWEuYXBwZW5kQ2hpbGQoYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Yy5leHRlbmQoYi5zdHlsZSx7bWluSGVpZ2h0OiIxMDBweCIsaGVpZ2h0OiJhdXRvIixwYWRkaW5nOjAsYm9yZGVyV2lkdGg6MH0pO2Muc3VwcG9ydC5taW5IZWlnaHQ9Yi5vZmZzZXRIZWlnaHQ9PT0xMDA7Yy5zdXBwb3J0LnNlbGVjdHN0YXJ0PSJvbnNlbGVjdHN0YXJ0ImluIGI7YS5yZW1vdmVDaGlsZChiKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pO2MuZXh0ZW5kKGMudWkse3BsdWdpbjp7YWRkOmZ1bmN0aW9uKGEsYixkKXthPWMudWlbYV0ucHJvdG90eXBlO2Zvcih2YXIgZSBpbiBkKXthLnBsdWdpbnNbZV09YS5wbHVnaW5zW2VdfHxbXTthLnBsdWdpbnNbZV0ucHVzaChbYixkW2VdXSl9fSxjYWxsOmZ1bmN0aW9uKGEsYixkKXtpZigoYj1hLnBsdWdpbnNbYl0pJiZhLmVsZW1lbnRbMF0ucGFyZW50Tm9kZSlmb3IodmFyIGU9MDtlPGIubGVuZ3RoO2UrKylhLm9wdGlvbnNbYltlXVswXV0mJgpiW2VdWzFdLmFwcGx5KGEuZWxlbWVudCxkKX19LGNvbnRhaW5zOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTY6YSE9PWImJmEuY29udGFpbnMoYil9LGhhc1Njcm9sbDpmdW5jdGlvbihhLGIpe2lmKGMoYSkuY3NzKCJvdmVyZmxvdyIpPT09ImhpZGRlbiIpcmV0dXJuIGZhbHNlO2I9YiYmYj09PSJsZWZ0Ij8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCI7dmFyIGQ9ZmFsc2U7aWYoYVtiXT4wKXJldHVybiB0cnVlO2FbYl09MTtkPWFbYl0+MDthW2JdPTA7cmV0dXJuIGR9LGlzT3ZlckF4aXM6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBhPmImJmE8YitkfSxpc092ZXI6ZnVuY3Rpb24oYSxiLGQsZSxoLGkpe3JldHVybiBjLnVpLmlzT3ZlckF4aXMoYSxkLGgpJiZjLnVpLmlzT3ZlckF4aXMoYixlLGkpfX0pfX0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.mouse.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBNb3VzZSAxLjguNwogKgogKiBDb3B5cmlnaHQgMjAxMCwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCiAqCiAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTW91c2UKICoKICogRGVwZW5kczoKICoJanF1ZXJ5LnVpLndpZGdldC5qcwogKi8KKGZ1bmN0aW9uKGMpe2Mud2lkZ2V0KCJ1aS5tb3VzZSIse29wdGlvbnM6e2NhbmNlbDoiOmlucHV0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGIpe3JldHVybiBhLl9tb3VzZURvd24oYil9KS5iaW5kKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihiKXtpZih0cnVlPT09Yy5kYXRhKGIudGFyZ2V0LGEud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iikpe2MucmVtb3ZlRGF0YShiLnRhcmdldCxhLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpO2Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7cmV0dXJuIGZhbHNlfX0pO3RoaXMuc3RhcnRlZD1mYWxzZX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50PQphLm9yaWdpbmFsRXZlbnR8fHt9O2lmKCFhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoYSk7dGhpcy5fbW91c2VEb3duRXZlbnQ9YTt2YXIgYj10aGlzLGU9YS53aGljaD09MSxmPXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsPT0ic3RyaW5nIj9jKGEudGFyZ2V0KS5wYXJlbnRzKCkuYWRkKGEudGFyZ2V0KS5maWx0ZXIodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOmZhbHNlO2lmKCFlfHxmfHwhdGhpcy5fbW91c2VDYXB0dXJlKGEpKXJldHVybiB0cnVlO3RoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5O2lmKCF0aGlzLm1vdXNlRGVsYXlNZXQpdGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm1vdXNlRGVsYXlNZXQ9dHJ1ZX0sdGhpcy5vcHRpb25zLmRlbGF5KTtpZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9CnRoaXMuX21vdXNlU3RhcnQoYSkhPT1mYWxzZTtpZighdGhpcy5fbW91c2VTdGFydGVkKXthLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIHRydWV9fXRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGQpe3JldHVybiBiLl9tb3VzZU1vdmUoZCl9O3RoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihkKXtyZXR1cm4gYi5fbW91c2VVcChkKX07Yyhkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7YS5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBhLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkPXRydWV9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGEpe2lmKGMuYnJvd3Nlci5tc2llJiYhKGRvY3VtZW50LmRvY3VtZW50TW9kZT49OSkmJiFhLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChhKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21vdXNlRHJhZyhhKTsKcmV0dXJuIGEucHJldmVudERlZmF1bHQoKX1pZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGEpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGEpKSh0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxhKSE9PWZhbHNlKT90aGlzLl9tb3VzZURyYWcoYSk6dGhpcy5fbW91c2VVcChhKTtyZXR1cm4hdGhpcy5fbW91c2VTdGFydGVkfSxfbW91c2VVcDpmdW5jdGlvbihhKXtjKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSk7aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9ZmFsc2U7YS50YXJnZXQ9PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmYy5kYXRhKGEudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwKdHJ1ZSk7dGhpcy5fbW91c2VTdG9wKGEpfXJldHVybiBmYWxzZX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWEucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWEucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9fSl9KShqUXVlcnkpOwo7Cg==]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.sortable.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DShmdW5jdGlvbihhKXthLndpZGdldCgidWkubW91c2UiLHtvcHRpb25zOntjYW5jZWw6IjppbnB1dCxvcHRpb24iLGRpc3RhbmNlOjEsZGVsYXk6MH0sX21vdXNlSW5pdDpmdW5jdGlvbigpe3ZhciBiPXRoaXM7dGhpcy5lbGVtZW50LmJpbmQoIm1vdXNlZG93bi4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihjKXtyZXR1cm4gYi5fbW91c2VEb3duKGMpfSkuYmluZCgiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oYyl7aWYoYi5fcHJldmVudENsaWNrRXZlbnQpe2IuX3ByZXZlbnRDbGlja0V2ZW50PWZhbHNlO2Muc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7cmV0dXJuIGZhbHNlfX0pO3RoaXMuc3RhcnRlZD1mYWxzZX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSl9LF9tb3VzZURvd246ZnVuY3Rpb24oZCl7ZC5vcmlnaW5hbEV2ZW50PWQub3JpZ2luYWxFdmVudHx8e307aWYoZC5vcmlnaW5hbEV2ZW50Lm1vdXNlSGFuZGxlZCl7cmV0dXJufSh0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoZCkpO3RoaXMuX21vdXNlRG93bkV2ZW50PWQ7dmFyIGM9dGhpcyxlPShkLndoaWNoPT0xKSxiPSh0eXBlb2YgdGhpcy5vcHRpb25zLmNhbmNlbD09InN0cmluZyI/YShkLnRhcmdldCkucGFyZW50cygpLmFkZChkLnRhcmdldCkuZmlsdGVyKHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDpmYWxzZSk7aWYoIWV8fGJ8fCF0aGlzLl9tb3VzZUNhcHR1cmUoZCkpe3JldHVybiB0cnVlfXRoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5O2lmKCF0aGlzLm1vdXNlRGVsYXlNZXQpe3RoaXMuX21vdXNlRGVsYXlUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5tb3VzZURlbGF5TWV0PXRydWV9LHRoaXMub3B0aW9ucy5kZWxheSl9aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldChkKSYmdGhpcy5fbW91c2VEZWxheU1ldChkKSl7dGhpcy5fbW91c2VTdGFydGVkPSh0aGlzLl9tb3VzZVN0YXJ0KGQpIT09ZmFsc2UpO2lmKCF0aGlzLl9tb3VzZVN0YXJ0ZWQpe2QucHJldmVudERlZmF1bHQoKTtyZXR1cm4gdHJ1ZX19dGhpcy5fbW91c2VNb3ZlRGVsZWdhdGU9ZnVuY3Rpb24oZil7cmV0dXJuIGMuX21vdXNlTW92ZShmKX07dGhpcy5fbW91c2VVcERlbGVnYXRlPWZ1bmN0aW9uKGYpe3JldHVybiBjLl9tb3VzZVVwKGYpfTthKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKTsoYS5icm93c2VyLnNhZmFyaXx8ZC5wcmV2ZW50RGVmYXVsdCgpKTtkLm9yaWdpbmFsRXZlbnQubW91c2VIYW5kbGVkPXRydWU7cmV0dXJuIHRydWV9LF9tb3VzZU1vdmU6ZnVuY3Rpb24oYil7aWYoYS5icm93c2VyLm1zaWUmJiFiLmJ1dHRvbil7cmV0dXJuIHRoaXMuX21vdXNlVXAoYil9aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZURyYWcoYik7cmV0dXJuIGIucHJldmVudERlZmF1bHQoKX1pZih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGIpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGIpKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9KHRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsYikhPT1mYWxzZSk7KHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcoYik6dGhpcy5fbW91c2VVcChiKSl9cmV0dXJuICF0aGlzLl9tb3VzZVN0YXJ0ZWR9LF9tb3VzZVVwOmZ1bmN0aW9uKGIpe2EoZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKTtpZih0aGlzLl9tb3VzZVN0YXJ0ZWQpe3RoaXMuX21vdXNlU3RhcnRlZD1mYWxzZTt0aGlzLl9wcmV2ZW50Q2xpY2tFdmVudD0oYi50YXJnZXQ9PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCk7dGhpcy5fbW91c2VTdG9wKGIpfXJldHVybiBmYWxzZX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oYil7cmV0dXJuKE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWIucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWIucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlKX0sX21vdXNlRGVsYXlNZXQ6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oYil7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKGIpe30sX21vdXNlU3RvcDpmdW5jdGlvbihiKXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oYil7cmV0dXJuIHRydWV9fSl9KShqUXVlcnkpOzsvKg0gKiBqUXVlcnkgVUkgU29ydGFibGUgMS44DSAqDSAqIENvcHlyaWdodCAoYykgMjAxMCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpDSAqIGFuZCBHUEwgKEdQTC1MSUNFTlNFLnR4dCkgbGljZW5zZXMuDSAqDSAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvU29ydGFibGVzDSAqDSAqIERlcGVuZHM6DSAqCWpxdWVyeS51aS5jb3JlLmpzDSAqCWpxdWVyeS51aS5tb3VzZS5qcw0gKglqcXVlcnkudWkud2lkZ2V0LmpzDSAqLw0oZnVuY3Rpb24oYSl7YS53aWRnZXQoInVpLnNvcnRhYmxlIixhLnVpLm1vdXNlLHt3aWRnZXRFdmVudFByZWZpeDoic29ydCIsb3B0aW9uczp7YXBwZW5kVG86InBhcmVudCIsYXhpczpmYWxzZSxjb25uZWN0V2l0aDpmYWxzZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRyb3BPbkVtcHR5OnRydWUsZm9yY2VQbGFjZWhvbGRlclNpemU6ZmFsc2UsZm9yY2VIZWxwZXJTaXplOmZhbHNlLGdyaWQ6ZmFsc2UsaGFuZGxlOmZhbHNlLGhlbHBlcjoib3JpZ2luYWwiLGl0ZW1zOiI+ICoiLG9wYWNpdHk6ZmFsc2UscGxhY2Vob2xkZXI6ZmFsc2UscmV2ZXJ0OmZhbHNlLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjEwMDB9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnM7dGhpcy5jb250YWluZXJDYWNoZT17fTt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIik7dGhpcy5yZWZyZXNoKCk7dGhpcy5mbG9hdGluZz10aGlzLml0ZW1zLmxlbmd0aD8oL2xlZnR8cmlnaHQvKS50ZXN0KHRoaXMuaXRlbXNbMF0uaXRlbS5jc3MoImZsb2F0IikpOmZhbHNlO3RoaXMub2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZzZXQoKTt0aGlzLl9tb3VzZUluaXQoKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc29ydGFibGUgdWktc29ydGFibGUtZGlzYWJsZWQiKS5yZW1vdmVEYXRhKCJzb3J0YWJsZSIpLnVuYmluZCgiLnNvcnRhYmxlIik7dGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciBiPXRoaXMuaXRlbXMubGVuZ3RoLTE7Yj49MDtiLS0pe3RoaXMuaXRlbXNbYl0uaXRlbS5yZW1vdmVEYXRhKCJzb3J0YWJsZS1pdGVtIil9cmV0dXJuIHRoaXN9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSxmKXtpZih0aGlzLnJldmVydGluZyl7cmV0dXJuIGZhbHNlfWlmKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5vcHRpb25zLnR5cGU9PSJzdGF0aWMiKXtyZXR1cm4gZmFsc2V9dGhpcy5fcmVmcmVzaEl0ZW1zKGUpO3ZhciBkPW51bGwsYz10aGlzLGI9YShlLnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtpZihhLmRhdGEodGhpcywic29ydGFibGUtaXRlbSIpPT1jKXtkPWEodGhpcyk7cmV0dXJuIGZhbHNlfX0pO2lmKGEuZGF0YShlLnRhcmdldCwic29ydGFibGUtaXRlbSIpPT1jKXtkPWEoZS50YXJnZXQpfWlmKCFkKXtyZXR1cm4gZmFsc2V9aWYodGhpcy5vcHRpb25zLmhhbmRsZSYmIWYpe3ZhciBnPWZhbHNlO2EodGhpcy5vcHRpb25zLmhhbmRsZSxkKS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzPT1lLnRhcmdldCl7Zz10cnVlfX0pO2lmKCFnKXtyZXR1cm4gZmFsc2V9fXRoaXMuY3VycmVudEl0ZW09ZDt0aGlzLl9yZW1vdmVDdXJyZW50c0Zyb21JdGVtcygpO3JldHVybiB0cnVlfSxfbW91c2VTdGFydDpmdW5jdGlvbihlLGYsYil7dmFyIGc9dGhpcy5vcHRpb25zLGM9dGhpczt0aGlzLmN1cnJlbnRDb250YWluZXI9dGhpczt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKTt0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIoZSk7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO3RoaXMuX2NhY2hlTWFyZ2lucygpO3RoaXMuc2Nyb2xsUGFyZW50PXRoaXMuaGVscGVyLnNjcm9sbFBhcmVudCgpO3RoaXMub2Zmc2V0PXRoaXMuY3VycmVudEl0ZW0ub2Zmc2V0KCk7dGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnR9O3RoaXMuaGVscGVyLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO3RoaXMuY3NzUG9zaXRpb249dGhpcy5oZWxwZXIuY3NzKCJwb3NpdGlvbiIpO2EuZXh0ZW5kKHRoaXMub2Zmc2V0LHtjbGljazp7bGVmdDplLnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOmUucGFnZVktdGhpcy5vZmZzZXQudG9wfSxwYXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX0pO3RoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGUpO3RoaXMub3JpZ2luYWxQYWdlWD1lLnBhZ2VYO3RoaXMub3JpZ2luYWxQYWdlWT1lLnBhZ2VZOyhnLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGcuY3Vyc29yQXQpKTt0aGlzLmRvbVBvc2l0aW9uPXtwcmV2OnRoaXMuY3VycmVudEl0ZW0ucHJldigpWzBdLHBhcmVudDp0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdfTtpZih0aGlzLmhlbHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSl7dGhpcy5jdXJyZW50SXRlbS5oaWRlKCl9dGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKTtpZihnLmNvbnRhaW5tZW50KXt0aGlzLl9zZXRDb250YWlubWVudCgpfWlmKGcuY3Vyc29yKXtpZihhKCJib2R5IikuY3NzKCJjdXJzb3IiKSl7dGhpcy5fc3RvcmVkQ3Vyc29yPWEoImJvZHkiKS5jc3MoImN1cnNvciIpfWEoImJvZHkiKS5jc3MoImN1cnNvciIsZy5jdXJzb3IpfWlmKGcub3BhY2l0eSl7aWYodGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iikpe3RoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iil9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IixnLm9wYWNpdHkpfWlmKGcuekluZGV4KXtpZih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpKXt0aGlzLl9zdG9yZWRaSW5kZXg9dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKX10aGlzLmhlbHBlci5jc3MoInpJbmRleCIsZy56SW5kZXgpfWlmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiKXt0aGlzLm92ZXJmbG93T2Zmc2V0PXRoaXMuc2Nyb2xsUGFyZW50Lm9mZnNldCgpfXRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLHRoaXMuX3VpSGFzaCgpKTtpZighdGhpcy5fcHJlc2VydmVIZWxwZXJQcm9wb3J0aW9ucyl7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpfWlmKCFiKXtmb3IodmFyIGQ9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2Q+PTA7ZC0tKXt0aGlzLmNvbnRhaW5lcnNbZF0uX3RyaWdnZXIoImFjdGl2YXRlIixlLGMuX3VpSGFzaCh0aGlzKSl9fWlmKGEudWkuZGRtYW5hZ2VyKXthLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXN9aWYoYS51aS5kZG1hbmFnZXImJiFnLmRyb3BCZWhhdmlvdXIpe2EudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsZSl9dGhpcy5kcmFnZ2luZz10cnVlO3RoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKTt0aGlzLl9tb3VzZURyYWcoZSk7cmV0dXJuIHRydWV9LF9tb3VzZURyYWc6ZnVuY3Rpb24oZil7dGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGYpO3RoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIik7aWYoIXRoaXMubGFzdFBvc2l0aW9uQWJzKXt0aGlzLmxhc3RQb3NpdGlvbkFicz10aGlzLnBvc2l0aW9uQWJzfWlmKHRoaXMub3B0aW9ucy5zY3JvbGwpe3ZhciBnPXRoaXMub3B0aW9ucyxiPWZhbHNlO2lmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiKXtpZigodGhpcy5vdmVyZmxvd09mZnNldC50b3ArdGhpcy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0KS1mLnBhZ2VZPGcuc2Nyb2xsU2Vuc2l0aXZpdHkpe3RoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1iPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcCtnLnNjcm9sbFNwZWVkfWVsc2V7aWYoZi5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxnLnNjcm9sbFNlbnNpdGl2aXR5KXt0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9Yj10aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3AtZy5zY3JvbGxTcGVlZH19aWYoKHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aCktZi5wYWdlWDxnLnNjcm9sbFNlbnNpdGl2aXR5KXt0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCtnLnNjcm9sbFNwZWVkfWVsc2V7aWYoZi5wYWdlWC10aGlzLm92ZXJmbG93T2Zmc2V0LmxlZnQ8Zy5zY3JvbGxTZW5zaXRpdml0eSl7dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1iPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtZy5zY3JvbGxTcGVlZH19fWVsc2V7aWYoZi5wYWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxnLnNjcm9sbFNlbnNpdGl2aXR5KXtiPWEoZG9jdW1lbnQpLnNjcm9sbFRvcChhKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1nLnNjcm9sbFNwZWVkKX1lbHNle2lmKGEod2luZG93KS5oZWlnaHQoKS0oZi5wYWdlWS1hKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8Zy5zY3JvbGxTZW5zaXRpdml0eSl7Yj1hKGRvY3VtZW50KS5zY3JvbGxUb3AoYShkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZy5zY3JvbGxTcGVlZCl9fWlmKGYucGFnZVgtYShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpPGcuc2Nyb2xsU2Vuc2l0aXZpdHkpe2I9YShkb2N1bWVudCkuc2Nyb2xsTGVmdChhKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCktZy5zY3JvbGxTcGVlZCl9ZWxzZXtpZihhKHdpbmRvdykud2lkdGgoKS0oZi5wYWdlWC1hKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPGcuc2Nyb2xsU2Vuc2l0aXZpdHkpe2I9YShkb2N1bWVudCkuc2Nyb2xsTGVmdChhKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrZy5zY3JvbGxTcGVlZCl9fX1pZihiIT09ZmFsc2UmJmEudWkuZGRtYW5hZ2VyJiYhZy5kcm9wQmVoYXZpb3VyKXthLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGYpfX10aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5Iil7dGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4In1pZighdGhpcy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieCIpe3RoaXMuaGVscGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgifWZvcih2YXIgZD10aGlzLml0ZW1zLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgZT10aGlzLml0ZW1zW2RdLGM9ZS5pdGVtWzBdLGg9dGhpcy5faW50ZXJzZWN0c1dpdGhQb2ludGVyKGUpO2lmKCFoKXtjb250aW51ZX1pZihjIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLnBsYWNlaG9sZGVyW2g9PTE/Im5leHQiOiJwcmV2Il0oKVswXSE9YyYmIWEudWkuY29udGFpbnModGhpcy5wbGFjZWhvbGRlclswXSxjKSYmKHRoaXMub3B0aW9ucy50eXBlPT0ic2VtaS1keW5hbWljIj8hYS51aS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sYyk6dHJ1ZSkpe3RoaXMuZGlyZWN0aW9uPWg9PTE/ImRvd24iOiJ1cCI7aWYodGhpcy5vcHRpb25zLnRvbGVyYW5jZT09InBvaW50ZXIifHx0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKGUpKXt0aGlzLl9yZWFycmFuZ2UoZixlKX1lbHNle2JyZWFrfXRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZix0aGlzLl91aUhhc2goKSk7YnJlYWt9fXRoaXMuX2NvbnRhY3RDb250YWluZXJzKGYpO2lmKGEudWkuZGRtYW5hZ2VyKXthLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsZil9dGhpcy5fdHJpZ2dlcigic29ydCIsZix0aGlzLl91aUhhc2goKSk7dGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicztyZXR1cm4gZmFsc2V9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYyxkKXtpZighYyl7cmV0dXJufWlmKGEudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXIpe2EudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxjKX1pZih0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgYj10aGlzO3ZhciBlPWIucGxhY2Vob2xkZXIub2Zmc2V0KCk7Yi5yZXZlcnRpbmc9dHJ1ZTthKHRoaXMuaGVscGVyKS5hbmltYXRlKHtsZWZ0OmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdC1iLm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxMZWZ0KSx0b3A6ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcC1iLm1hcmdpbnMudG9wKyh0aGlzLm9mZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbFRvcCl9LHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtiLl9jbGVhcihjKX0pfWVsc2V7dGhpcy5fY2xlYXIoYyxkKX1yZXR1cm4gZmFsc2V9LGNhbmNlbDpmdW5jdGlvbigpe3ZhciBiPXRoaXM7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCgpO2lmKHRoaXMub3B0aW9ucy5oZWxwZXI9PSJvcmlnaW5hbCIpe3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpfWVsc2V7dGhpcy5jdXJyZW50SXRlbS5zaG93KCl9Zm9yKHZhciBjPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtjPj0wO2MtLSl7dGhpcy5jb250YWluZXJzW2NdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixudWxsLGIuX3VpSGFzaCh0aGlzKSk7aWYodGhpcy5jb250YWluZXJzW2NdLmNvbnRhaW5lckNhY2hlLm92ZXIpe3RoaXMuY29udGFpbmVyc1tjXS5fdHJpZ2dlcigib3V0IixudWxsLGIuX3VpSGFzaCh0aGlzKSk7dGhpcy5jb250YWluZXJzW2NdLmNvbnRhaW5lckNhY2hlLm92ZXI9MH19fWlmKHRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZSl7dGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pfWlmKHRoaXMub3B0aW9ucy5oZWxwZXIhPSJvcmlnaW5hbCImJnRoaXMuaGVscGVyJiZ0aGlzLmhlbHBlclswXS5wYXJlbnROb2RlKXt0aGlzLmhlbHBlci5yZW1vdmUoKX1hLmV4dGVuZCh0aGlzLHtoZWxwZXI6bnVsbCxkcmFnZ2luZzpmYWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmluYWxTb3J0Om51bGx9KTtpZih0aGlzLmRvbVBvc2l0aW9uLnByZXYpe2EodGhpcy5kb21Qb3NpdGlvbi5wcmV2KS5hZnRlcih0aGlzLmN1cnJlbnRJdGVtKX1lbHNle2EodGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQpLnByZXBlbmQodGhpcy5jdXJyZW50SXRlbSl9cmV0dXJuIHRoaXN9LHNlcmlhbGl6ZTpmdW5jdGlvbihkKXt2YXIgYj10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGQmJmQuY29ubmVjdGVkKTt2YXIgYz1bXTtkPWR8fHt9O2EoYikuZWFjaChmdW5jdGlvbigpe3ZhciBlPShhKGQuaXRlbXx8dGhpcykuYXR0cihkLmF0dHJpYnV0ZXx8ImlkIil8fCIiKS5tYXRjaChkLmV4cHJlc3Npb258fCgvKC4rKVstPV9dKC4rKS8pKTtpZihlKXtjLnB1c2goKGQua2V5fHxlWzFdKyJbXSIpKyI9IisoZC5rZXkmJmQuZXhwcmVzc2lvbj9lWzFdOmVbMl0pKX19KTtyZXR1cm4gYy5qb2luKCImIil9LHRvQXJyYXk6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5fZ2V0SXRlbXNBc2pRdWVyeShkJiZkLmNvbm5lY3RlZCk7dmFyIGM9W107ZD1kfHx7fTtiLmVhY2goZnVuY3Rpb24oKXtjLnB1c2goYShkLml0ZW18fHRoaXMpLmF0dHIoZC5hdHRyaWJ1dGV8fCJpZCIpfHwiIil9KTtyZXR1cm4gY30sX2ludGVyc2VjdHNXaXRoOmZ1bmN0aW9uKG0pe3ZhciBlPXRoaXMucG9zaXRpb25BYnMubGVmdCxkPWUrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCxrPXRoaXMucG9zaXRpb25BYnMudG9wLGo9ayt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodDt2YXIgZj1tLmxlZnQsYz1mK20ud2lkdGgsbj1tLnRvcCxpPW4rbS5oZWlnaHQ7dmFyIG89dGhpcy5vZmZzZXQuY2xpY2sudG9wLGg9dGhpcy5vZmZzZXQuY2xpY2subGVmdDt2YXIgZz0oaytvKT5uJiYoaytvKTxpJiYoZStoKT5mJiYoZStoKTxjO2lmKHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJwb2ludGVyInx8dGhpcy5vcHRpb25zLmZvcmNlUG9pbnRlckZvckNvbnRhaW5lcnN8fCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlIT0icG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9hdGluZz8id2lkdGgiOiJoZWlnaHQiXT5tW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0pKXtyZXR1cm4gZ31lbHNle3JldHVybihmPGUrKHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMikmJmQtKHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMik8YyYmbjxrKyh0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yKSYmai0odGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMik8aSl9fSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKGQpe3ZhciBlPWEudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLnRvcCt0aGlzLm9mZnNldC5jbGljay50b3AsZC50b3AsZC5oZWlnaHQpLGM9YS51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0LGQubGVmdCxkLndpZHRoKSxnPWUmJmMsYj10aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKSxmPXRoaXMuX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCk7aWYoIWcpe3JldHVybiBmYWxzZX1yZXR1cm4gdGhpcy5mbG9hdGluZz8oKChmJiZmPT0icmlnaHQiKXx8Yj09ImRvd24iKT8yOjEpOihiJiYoYj09ImRvd24iPzI6MSkpfSxfaW50ZXJzZWN0c1dpdGhTaWRlczpmdW5jdGlvbihlKXt2YXIgYz1hLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGUudG9wKyhlLmhlaWdodC8yKSxlLmhlaWdodCksZD1hLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsZS5sZWZ0KyhlLndpZHRoLzIpLGUud2lkdGgpLGI9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksZj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO2lmKHRoaXMuZmxvYXRpbmcmJmYpe3JldHVybigoZj09InJpZ2h0IiYmZCl8fChmPT0ibGVmdCImJiFkKSl9ZWxzZXtyZXR1cm4gYiYmKChiPT0iZG93biImJmMpfHwoYj09InVwIiYmIWMpKX19LF9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIGIhPTAmJihiPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gYiE9MCYmKGI+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJlc2g6ZnVuY3Rpb24oYil7dGhpcy5fcmVmcmVzaEl0ZW1zKGIpO3RoaXMucmVmcmVzaFBvc2l0aW9ucygpO3JldHVybiB0aGlzfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnM7cmV0dXJuIGIuY29ubmVjdFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bYi5jb25uZWN0V2l0aF06Yi5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24oYil7dmFyIGw9dGhpczt2YXIgZz1bXTt2YXIgZT1bXTt2YXIgaD10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGgmJmIpe2Zvcih2YXIgZD1oLmxlbmd0aC0xO2Q+PTA7ZC0tKXt2YXIgaz1hKGhbZF0pO2Zvcih2YXIgYz1rLmxlbmd0aC0xO2M+PTA7Yy0tKXt2YXIgZj1hLmRhdGEoa1tjXSwic29ydGFibGUiKTtpZihmJiZmIT10aGlzJiYhZi5vcHRpb25zLmRpc2FibGVkKXtlLnB1c2goW2EuaXNGdW5jdGlvbihmLm9wdGlvbnMuaXRlbXMpP2Yub3B0aW9ucy5pdGVtcy5jYWxsKGYuZWxlbWVudCk6YShmLm9wdGlvbnMuaXRlbXMsZi5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLGZdKX19fX1lLnB1c2goW2EuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuaXRlbXMpP3RoaXMub3B0aW9ucy5pdGVtcy5jYWxsKHRoaXMuZWxlbWVudCxudWxsLHtvcHRpb25zOnRoaXMub3B0aW9ucyxpdGVtOnRoaXMuY3VycmVudEl0ZW19KTphKHRoaXMub3B0aW9ucy5pdGVtcyx0aGlzLmVsZW1lbnQpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpLm5vdCgiLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIiksdGhpc10pO2Zvcih2YXIgZD1lLmxlbmd0aC0xO2Q+PTA7ZC0tKXtlW2RdWzBdLmVhY2goZnVuY3Rpb24oKXtnLnB1c2godGhpcyl9KX1yZXR1cm4gYShnKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YShzb3J0YWJsZS1pdGVtKSIpO2Zvcih2YXIgYz0wO2M8dGhpcy5pdGVtcy5sZW5ndGg7YysrKXtmb3IodmFyIGI9MDtiPGQubGVuZ3RoO2IrKyl7aWYoZFtiXT09dGhpcy5pdGVtc1tjXS5pdGVtWzBdKXt0aGlzLml0ZW1zLnNwbGljZShjLDEpfX19fSxfcmVmcmVzaEl0ZW1zOmZ1bmN0aW9uKGIpe3RoaXMuaXRlbXM9W107dGhpcy5jb250YWluZXJzPVt0aGlzXTt2YXIgaD10aGlzLml0ZW1zO3ZhciBwPXRoaXM7dmFyIGY9W1thLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYix7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6YSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV07dmFyIGw9dGhpcy5fY29ubmVjdFdpdGgoKTtpZihsKXtmb3IodmFyIGU9bC5sZW5ndGgtMTtlPj0wO2UtLSl7dmFyIG09YShsW2VdKTtmb3IodmFyIGQ9bS5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGc9YS5kYXRhKG1bZF0sInNvcnRhYmxlIik7aWYoZyYmZyE9dGhpcyYmIWcub3B0aW9ucy5kaXNhYmxlZCl7Zi5wdXNoKFthLmlzRnVuY3Rpb24oZy5vcHRpb25zLml0ZW1zKT9nLm9wdGlvbnMuaXRlbXMuY2FsbChnLmVsZW1lbnRbMF0sYix7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6YShnLm9wdGlvbnMuaXRlbXMsZy5lbGVtZW50KSxnXSk7dGhpcy5jb250YWluZXJzLnB1c2goZyl9fX19Zm9yKHZhciBlPWYubGVuZ3RoLTE7ZT49MDtlLS0pe3ZhciBrPWZbZV1bMV07dmFyIGM9ZltlXVswXTtmb3IodmFyIGQ9MCxuPWMubGVuZ3RoO2Q8bjtkKyspe3ZhciBvPWEoY1tkXSk7by5kYXRhKCJzb3J0YWJsZS1pdGVtIixrKTtoLnB1c2goe2l0ZW06byxpbnN0YW5jZTprLHdpZHRoOjAsaGVpZ2h0OjAsbGVmdDowLHRvcDowfSl9fX0scmVmcmVzaFBvc2l0aW9uczpmdW5jdGlvbihiKXtpZih0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXIpe3RoaXMub2Zmc2V0LnBhcmVudD10aGlzLl9nZXRQYXJlbnRPZmZzZXQoKX1mb3IodmFyIGQ9dGhpcy5pdGVtcy5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGU9dGhpcy5pdGVtc1tkXTt2YXIgYz10aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudD9hKHRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50LGUuaXRlbSk6ZS5pdGVtO2lmKCFiKXtlLndpZHRoPWMub3V0ZXJXaWR0aCgpO2UuaGVpZ2h0PWMub3V0ZXJIZWlnaHQoKX12YXIgZj1jLm9mZnNldCgpO2UubGVmdD1mLmxlZnQ7ZS50b3A9Zi50b3B9aWYodGhpcy5vcHRpb25zLmN1c3RvbSYmdGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycyl7dGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycy5jYWxsKHRoaXMpfWVsc2V7Zm9yKHZhciBkPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtkPj0wO2QtLSl7dmFyIGY9dGhpcy5jb250YWluZXJzW2RdLmVsZW1lbnQub2Zmc2V0KCk7dGhpcy5jb250YWluZXJzW2RdLmNvbnRhaW5lckNhY2hlLmxlZnQ9Zi5sZWZ0O3RoaXMuY29udGFpbmVyc1tkXS5jb250YWluZXJDYWNoZS50b3A9Zi50b3A7dGhpcy5jb250YWluZXJzW2RdLmNvbnRhaW5lckNhY2hlLndpZHRoPXRoaXMuY29udGFpbmVyc1tkXS5lbGVtZW50Lm91dGVyV2lkdGgoKTt0aGlzLmNvbnRhaW5lcnNbZF0uY29udGFpbmVyQ2FjaGUuaGVpZ2h0PXRoaXMuY29udGFpbmVyc1tkXS5lbGVtZW50Lm91dGVySGVpZ2h0KCl9fXJldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZCl7dmFyIGI9ZHx8dGhpcyxlPWIub3B0aW9ucztpZighZS5wbGFjZWhvbGRlcnx8ZS5wbGFjZWhvbGRlci5jb25zdHJ1Y3Rvcj09U3RyaW5nKXt2YXIgYz1lLnBsYWNlaG9sZGVyO2UucGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZj1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYi5jdXJyZW50SXRlbVswXS5ub2RlTmFtZSkpLmFkZENsYXNzKGN8fGIuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilbMF07aWYoIWMpe2Yuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIn1yZXR1cm4gZn0sdXBkYXRlOmZ1bmN0aW9uKGYsZyl7aWYoYyYmIWUuZm9yY2VQbGFjZWhvbGRlclNpemUpe3JldHVybn1pZighZy5oZWlnaHQoKSl7Zy5oZWlnaHQoYi5jdXJyZW50SXRlbS5pbm5lckhlaWdodCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nVG9wIil8fDAsMTApLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nQm90dG9tIil8fDAsMTApKX1pZighZy53aWR0aCgpKXtnLndpZHRoKGIuY3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGIuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChiLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKX19fX1iLnBsYWNlaG9sZGVyPWEoZS5wbGFjZWhvbGRlci5lbGVtZW50LmNhbGwoYi5lbGVtZW50LGIuY3VycmVudEl0ZW0pKTtiLmN1cnJlbnRJdGVtLmFmdGVyKGIucGxhY2Vob2xkZXIpO2UucGxhY2Vob2xkZXIudXBkYXRlKGIsYi5wbGFjZWhvbGRlcil9LF9jb250YWN0Q29udGFpbmVyczpmdW5jdGlvbihiKXt2YXIgZD1udWxsLGs9bnVsbDtmb3IodmFyIGY9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2Y+PTA7Zi0tKXtpZihhLnVpLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ZdLmVsZW1lbnRbMF0pKXtjb250aW51ZX1pZih0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lcnNbZl0uY29udGFpbmVyQ2FjaGUpKXtpZihkJiZhLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tmXS5lbGVtZW50WzBdLGQuZWxlbWVudFswXSkpe2NvbnRpbnVlfWQ9dGhpcy5jb250YWluZXJzW2ZdO2s9Zn1lbHNle2lmKHRoaXMuY29udGFpbmVyc1tmXS5jb250YWluZXJDYWNoZS5vdmVyKXt0aGlzLmNvbnRhaW5lcnNbZl0uX3RyaWdnZXIoIm91dCIsYix0aGlzLl91aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tmXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fX1pZighZCl7cmV0dXJufWlmKHRoaXMuY29udGFpbmVycy5sZW5ndGg9PT0xKXt0aGlzLmNvbnRhaW5lcnNba10uX3RyaWdnZXIoIm92ZXIiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRhaW5lcnNba10uY29udGFpbmVyQ2FjaGUub3Zlcj0xfWVsc2V7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyIT10aGlzLmNvbnRhaW5lcnNba10pe3ZhciBoPTEwMDAwO3ZhciBnPW51bGw7dmFyIGM9dGhpcy5wb3NpdGlvbkFic1t0aGlzLmNvbnRhaW5lcnNba10uZmxvYXRpbmc/ImxlZnQiOiJ0b3AiXTtmb3IodmFyIGU9dGhpcy5pdGVtcy5sZW5ndGgtMTtlPj0wO2UtLSl7aWYoIWEudWkuY29udGFpbnModGhpcy5jb250YWluZXJzW2tdLmVsZW1lbnRbMF0sdGhpcy5pdGVtc1tlXS5pdGVtWzBdKSl7Y29udGludWV9dmFyIGw9dGhpcy5pdGVtc1tlXVt0aGlzLmNvbnRhaW5lcnNba10uZmxvYXRpbmc/ImxlZnQiOiJ0b3AiXTtpZihNYXRoLmFicyhsLWMpPGgpe2g9TWF0aC5hYnMobC1jKTtnPXRoaXMuaXRlbXNbZV19fWlmKCFnJiYhdGhpcy5vcHRpb25zLmRyb3BPbkVtcHR5KXtyZXR1cm59dGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMuY29udGFpbmVyc1trXTtnP3RoaXMuX3JlYXJyYW5nZShiLGcsbnVsbCx0cnVlKTp0aGlzLl9yZWFycmFuZ2UoYixudWxsLHRoaXMuY29udGFpbmVyc1trXS5lbGVtZW50LHRydWUpO3RoaXMuX3RyaWdnZXIoImNoYW5nZSIsYix0aGlzLl91aUhhc2goKSk7dGhpcy5jb250YWluZXJzW2tdLl90cmlnZ2VyKCJjaGFuZ2UiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIudXBkYXRlKHRoaXMuY3VycmVudENvbnRhaW5lcix0aGlzLnBsYWNlaG9sZGVyKTt0aGlzLmNvbnRhaW5lcnNba10uX3RyaWdnZXIoIm92ZXIiLGIsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRhaW5lcnNba10uY29udGFpbmVyQ2FjaGUub3Zlcj0xfX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcy5vcHRpb25zO3ZhciBiPWEuaXNGdW5jdGlvbihkLmhlbHBlcik/YShkLmhlbHBlci5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2MsdGhpcy5jdXJyZW50SXRlbV0pKTooZC5oZWxwZXI9PSJjbG9uZSI/dGhpcy5jdXJyZW50SXRlbS5jbG9uZSgpOnRoaXMuY3VycmVudEl0ZW0pO2lmKCFiLnBhcmVudHMoImJvZHkiKS5sZW5ndGgpe2EoZC5hcHBlbmRUbyE9InBhcmVudCI/ZC5hcHBlbmRUbzp0aGlzLmN1cnJlbnRJdGVtWzBdLnBhcmVudE5vZGUpWzBdLmFwcGVuZENoaWxkKGJbMF0pfWlmKGJbMF09PXRoaXMuY3VycmVudEl0ZW1bMF0pe3RoaXMuX3N0b3JlZENTUz17d2lkdGg6dGhpcy5jdXJyZW50SXRlbVswXS5zdHlsZS53aWR0aCxoZWlnaHQ6dGhpcy5jdXJyZW50SXRlbVswXS5zdHlsZS5oZWlnaHQscG9zaXRpb246dGhpcy5jdXJyZW50SXRlbS5jc3MoInBvc2l0aW9uIiksdG9wOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJ0b3AiKSxsZWZ0OnRoaXMuY3VycmVudEl0ZW0uY3NzKCJsZWZ0Iil9fWlmKGJbMF0uc3R5bGUud2lkdGg9PSIifHxkLmZvcmNlSGVscGVyU2l6ZSl7Yi53aWR0aCh0aGlzLmN1cnJlbnRJdGVtLndpZHRoKCkpfWlmKGJbMF0uc3R5bGUuaGVpZ2h0PT0iInx8ZC5mb3JjZUhlbHBlclNpemUpe2IuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpfXJldHVybiBifSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihiKXtpZih0eXBlb2YgYj09InN0cmluZyIpe2I9Yi5zcGxpdCgiICIpfWlmKGEuaXNBcnJheShiKSl7Yj17bGVmdDorYlswXSx0b3A6K2JbMV18fDB9fWlmKCJsZWZ0IiBpbiBiKXt0aGlzLm9mZnNldC5jbGljay5sZWZ0PWIubGVmdCt0aGlzLm1hcmdpbnMubGVmdH1pZigicmlnaHQiIGluIGIpe3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQ9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC1iLnJpZ2h0K3RoaXMubWFyZ2lucy5sZWZ0fWlmKCJ0b3AiIGluIGIpe3RoaXMub2Zmc2V0LmNsaWNrLnRvcD1iLnRvcCt0aGlzLm1hcmdpbnMudG9wfWlmKCJib3R0b20iIGluIGIpe3RoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1iLmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wfX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciBiPXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO2lmKHRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmYS51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpe2IubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpO2IudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKX1pZigodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHkpfHwodGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZSYmdGhpcy5vZmZzZXRQYXJlbnRbMF0udGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0iaHRtbCImJmEuYnJvd3Nlci5tc2llKSl7Yj17dG9wOjAsbGVmdDowfX1yZXR1cm57dG9wOmIudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmIubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5jc3NQb3NpdGlvbj09InJlbGF0aXZlIil7dmFyIGI9dGhpcy5jdXJyZW50SXRlbS5wb3NpdGlvbigpO3JldHVybnt0b3A6Yi50b3AtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygidG9wIiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OmIubGVmdC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJsZWZ0IiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9fWVsc2V7cmV0dXJue3RvcDowLGxlZnQ6MH19fSxfY2FjaGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OihwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCksdG9wOihwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luVG9wIiksMTApfHwwKX19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2lmKGUuY29udGFpbm1lbnQ9PSJwYXJlbnQiKXtlLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGV9aWYoZS5jb250YWlubWVudD09ImRvY3VtZW50Inx8ZS5jb250YWlubWVudD09IndpbmRvdyIpe3RoaXMuY29udGFpbm1lbnQ9WzAtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCwwLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGEoZS5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1bWVudDp3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoYShlLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRvdykuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdfWlmKCEoL14oZG9jdW1lbnR8d2luZG93fHBhcmVudCkkLykudGVzdChlLmNvbnRhaW5tZW50KSl7dmFyIGM9YShlLmNvbnRhaW5tZW50KVswXTt2YXIgZD1hKGUuY29udGFpbm1lbnQpLm9mZnNldCgpO3ZhciBiPShhKGMpLmNzcygib3ZlcmZsb3ciKSE9ImhpZGRlbiIpO3RoaXMuY29udGFpbm1lbnQ9W2QubGVmdCsocGFyc2VJbnQoYShjKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsZC50b3ArKHBhcnNlSW50KGEoYykuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGEoYykuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLGQubGVmdCsoYj9NYXRoLm1heChjLnNjcm9sbFdpZHRoLGMub2Zmc2V0V2lkdGgpOmMub2Zmc2V0V2lkdGgpLShwYXJzZUludChhKGMpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYShjKS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxkLnRvcCsoYj9NYXRoLm1heChjLnNjcm9sbEhlaWdodCxjLm9mZnNldEhlaWdodCk6Yy5vZmZzZXRIZWlnaHQpLShwYXJzZUludChhKGMpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludChhKGMpLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19fSxfY29udmVydFBvc2l0aW9uVG86ZnVuY3Rpb24oZixoKXtpZighaCl7aD10aGlzLnBvc2l0aW9ufXZhciBjPWY9PSJhYnNvbHV0ZSI/MTotMTt2YXIgZT10aGlzLm9wdGlvbnMsYj10aGlzLmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmYS51aS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkpP3RoaXMub2Zmc2V0UGFyZW50OnRoaXMuc2Nyb2xsUGFyZW50LGc9KC8oaHRtbHxib2R5KS9pKS50ZXN0KGJbMF0udGFnTmFtZSk7cmV0dXJue3RvcDooaC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpjLShhLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOihnPzA6Yi5zY3JvbGxUb3AoKSkpKmMpKSxsZWZ0OihoLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpjK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KmMtKGEuYnJvd3Nlci5zYWZhcmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmc/MDpiLnNjcm9sbExlZnQoKSkqYykpfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24oZSl7dmFyIGg9dGhpcy5vcHRpb25zLGI9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmEudWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxpPSgvKGh0bWx8Ym9keSkvaSkudGVzdChiWzBdLnRhZ05hbWUpO2lmKHRoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9dGhpcy5vZmZzZXRQYXJlbnRbMF0pKXt0aGlzLm9mZnNldC5yZWxhdGl2ZT10aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfXZhciBkPWUucGFnZVg7dmFyIGM9ZS5wYWdlWTtpZih0aGlzLm9yaWdpbmFsUG9zaXRpb24pe2lmKHRoaXMuY29udGFpbm1lbnQpe2lmKGUucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdKXtkPXRoaXMuY29udGFpbm1lbnRbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdH1pZihlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdKXtjPXRoaXMuY29udGFpbm1lbnRbMV0rdGhpcy5vZmZzZXQuY2xpY2sudG9wfWlmKGUucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdKXtkPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdH1pZihlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKXtjPXRoaXMuY29udGFpbm1lbnRbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wfX1pZihoLmdyaWQpe3ZhciBnPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChjLXRoaXMub3JpZ2luYWxQYWdlWSkvaC5ncmlkWzFdKSpoLmdyaWRbMV07Yz10aGlzLmNvbnRhaW5tZW50PyghKGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV18fGctdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRbM10pP2c6KCEoZy10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSk/Zy1oLmdyaWRbMV06ZytoLmdyaWRbMV0pKTpnO3ZhciBmPXRoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChkLXRoaXMub3JpZ2luYWxQYWdlWCkvaC5ncmlkWzBdKSpoLmdyaWRbMF07ZD10aGlzLmNvbnRhaW5tZW50PyghKGYtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdfHxmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSk/ZjooIShmLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSk/Zi1oLmdyaWRbMF06ZitoLmdyaWRbMF0pKTpmfX1yZXR1cm57dG9wOihjLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoYS5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTooaT8wOmIuc2Nyb2xsVG9wKCkpKSkpLGxlZnQ6KGQtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KyhhLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTppPzA6Yi5zY3JvbGxMZWZ0KCkpKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGcsZixjLGUpe2M/Y1swXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTpmLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwodGhpcy5kaXJlY3Rpb249PSJkb3duIj9mLml0ZW1bMF06Zi5pdGVtWzBdLm5leHRTaWJsaW5nKSk7dGhpcy5jb3VudGVyPXRoaXMuY291bnRlcj8rK3RoaXMuY291bnRlcjoxO3ZhciBkPXRoaXMsYj10aGlzLmNvdW50ZXI7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihiPT1kLmNvdW50ZXIpe2QucmVmcmVzaFBvc2l0aW9ucyghZSl9fSwwKX0sX2NsZWFyOmZ1bmN0aW9uKGQsZSl7dGhpcy5yZXZlcnRpbmc9ZmFsc2U7dmFyIGY9W10sYj10aGlzO2lmKCF0aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbVswXS5wYXJlbnROb2RlKXt0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKX10aGlzLl9ub0ZpbmFsU29ydD1udWxsO2lmKHRoaXMuaGVscGVyWzBdPT10aGlzLmN1cnJlbnRJdGVtWzBdKXtmb3IodmFyIGMgaW4gdGhpcy5fc3RvcmVkQ1NTKXtpZih0aGlzLl9zdG9yZWRDU1NbY109PSJhdXRvInx8dGhpcy5fc3RvcmVkQ1NTW2NdPT0ic3RhdGljIil7dGhpcy5fc3RvcmVkQ1NTW2NdPSIifX10aGlzLmN1cnJlbnRJdGVtLmNzcyh0aGlzLl9zdG9yZWRDU1MpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKX1lbHNle3RoaXMuY3VycmVudEl0ZW0uc2hvdygpfWlmKHRoaXMuZnJvbU91dHNpZGUmJiFlKXtmLnB1c2goZnVuY3Rpb24oZyl7dGhpcy5fdHJpZ2dlcigicmVjZWl2ZSIsZyx0aGlzLl91aUhhc2godGhpcy5mcm9tT3V0c2lkZSkpfSl9aWYoKHRoaXMuZnJvbU91dHNpZGV8fHRoaXMuZG9tUG9zaXRpb24ucHJldiE9dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF18fHRoaXMuZG9tUG9zaXRpb24ucGFyZW50IT10aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdKSYmIWUpe2YucHVzaChmdW5jdGlvbihnKXt0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLGcsdGhpcy5fdWlIYXNoKCkpfSl9aWYoIWEudWkuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuY3VycmVudEl0ZW1bMF0pKXtpZighZSl7Zi5wdXNoKGZ1bmN0aW9uKGcpe3RoaXMuX3RyaWdnZXIoInJlbW92ZSIsZyx0aGlzLl91aUhhc2goKSl9KX1mb3IodmFyIGM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2M+PTA7Yy0tKXtpZihhLnVpLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tjXS5lbGVtZW50WzBdLHRoaXMuY3VycmVudEl0ZW1bMF0pJiYhZSl7Zi5wdXNoKChmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oaCl7Zy5fdHJpZ2dlcigicmVjZWl2ZSIsaCx0aGlzLl91aUhhc2godGhpcykpfX0pLmNhbGwodGhpcyx0aGlzLmNvbnRhaW5lcnNbY10pKTtmLnB1c2goKGZ1bmN0aW9uKGcpe3JldHVybiBmdW5jdGlvbihoKXtnLl90cmlnZ2VyKCJ1cGRhdGUiLGgsdGhpcy5fdWlIYXNoKHRoaXMpKX19KS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2NdKSl9fX1mb3IodmFyIGM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2M+PTA7Yy0tKXtpZighZSl7Zi5wdXNoKChmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oaCl7Zy5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsaCx0aGlzLl91aUhhc2godGhpcykpfX0pLmNhbGwodGhpcyx0aGlzLmNvbnRhaW5lcnNbY10pKX1pZih0aGlzLmNvbnRhaW5lcnNbY10uY29udGFpbmVyQ2FjaGUub3Zlcil7Zi5wdXNoKChmdW5jdGlvbihnKXtyZXR1cm4gZnVuY3Rpb24oaCl7Zy5fdHJpZ2dlcigib3V0IixoLHRoaXMuX3VpSGFzaCh0aGlzKSl9fSkuY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tjXSkpO3RoaXMuY29udGFpbmVyc1tjXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fWlmKHRoaXMuX3N0b3JlZEN1cnNvcil7YSgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpfWlmKHRoaXMuX3N0b3JlZE9wYWNpdHkpe3RoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsdGhpcy5fc3RvcmVkT3BhY2l0eSl9aWYodGhpcy5fc3RvcmVkWkluZGV4KXt0aGlzLmhlbHBlci5jc3MoInpJbmRleCIsdGhpcy5fc3RvcmVkWkluZGV4PT0iYXV0byI/IiI6dGhpcy5fc3RvcmVkWkluZGV4KX10aGlzLmRyYWdnaW5nPWZhbHNlO2lmKHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCl7aWYoIWUpe3RoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLGQsdGhpcy5fdWlIYXNoKCkpO2Zvcih2YXIgYz0wO2M8Zi5sZW5ndGg7YysrKXtmW2NdLmNhbGwodGhpcyxkKX10aGlzLl90cmlnZ2VyKCJzdG9wIixkLHRoaXMuX3VpSGFzaCgpKX1yZXR1cm4gZmFsc2V9aWYoIWUpe3RoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLGQsdGhpcy5fdWlIYXNoKCkpfXRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTtpZih0aGlzLmhlbHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSl7dGhpcy5oZWxwZXIucmVtb3ZlKCl9dGhpcy5oZWxwZXI9bnVsbDtpZighZSl7Zm9yKHZhciBjPTA7YzxmLmxlbmd0aDtjKyspe2ZbY10uY2FsbCh0aGlzLGQpfXRoaXMuX3RyaWdnZXIoInN0b3AiLGQsdGhpcy5fdWlIYXNoKCkpfXRoaXMuZnJvbU91dHNpZGU9ZmFsc2U7cmV0dXJuIHRydWV9LF90cmlnZ2VyOmZ1bmN0aW9uKCl7aWYoYS5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5KHRoaXMsYXJndW1lbnRzKT09PWZhbHNlKXt0aGlzLmNhbmNlbCgpfX0sX3VpSGFzaDpmdW5jdGlvbihjKXt2YXIgYj1jfHx0aGlzO3JldHVybntoZWxwZXI6Yi5oZWxwZXIscGxhY2Vob2xkZXI6Yi5wbGFjZWhvbGRlcnx8YShbXSkscG9zaXRpb246Yi5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOmIub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6Yi5wb3NpdGlvbkFicyxpdGVtOmIuY3VycmVudEl0ZW0sc2VuZGVyOmM/Yy5lbGVtZW50Om51bGx9fX0pO2EuZXh0ZW5kKGEudWkuc29ydGFibGUse3ZlcnNpb246IjEuOCJ9KX0pKGpRdWVyeSk7Ow==]]></data>
	</file>
	<file>
	  <filename>/js/jq.ui.widget.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpRdWVyeSBVSSBXaWRnZXQgMS44LjcKICoKICogQ29weXJpZ2h0IDIwMTAsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1dpZGdldAogKi8KKGZ1bmN0aW9uKGIsail7aWYoYi5jbGVhbkRhdGEpe3ZhciBrPWIuY2xlYW5EYXRhO2IuY2xlYW5EYXRhPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wLGQ7KGQ9YVtjXSkhPW51bGw7YysrKWIoZCkudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpO2soYSl9fWVsc2V7dmFyIGw9Yi5mbi5yZW1vdmU7Yi5mbi5yZW1vdmU9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoIWMpaWYoIWF8fGIuZmlsdGVyKGEsW3RoaXNdKS5sZW5ndGgpYigiKiIsdGhpcykuYWRkKFt0aGlzXSkuZWFjaChmdW5jdGlvbigpe2IodGhpcykudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfSk7cmV0dXJuIGwuY2FsbChiKHRoaXMpLGEsYyl9KX19Yi53aWRnZXQ9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKVswXSxmO2E9YS5zcGxpdCgiLiIpWzFdO2Y9ZSsiLSIrYTtpZighZCl7ZD1jO2M9Yi5XaWRnZXR9Yi5leHByWyI6Il1bZl09ZnVuY3Rpb24oaCl7cmV0dXJuISFiLmRhdGEoaCwKYSl9O2JbZV09YltlXXx8e307YltlXVthXT1mdW5jdGlvbihoLGcpe2FyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldChoLGcpfTtjPW5ldyBjO2Mub3B0aW9ucz1iLmV4dGVuZCh0cnVlLHt9LGMub3B0aW9ucyk7YltlXVthXS5wcm90b3R5cGU9Yi5leHRlbmQodHJ1ZSxjLHtuYW1lc3BhY2U6ZSx3aWRnZXROYW1lOmEsd2lkZ2V0RXZlbnRQcmVmaXg6YltlXVthXS5wcm90b3R5cGUud2lkZ2V0RXZlbnRQcmVmaXh8fGEsd2lkZ2V0QmFzZUNsYXNzOmZ9LGQpO2Iud2lkZ2V0LmJyaWRnZShhLGJbZV1bYV0pfTtiLndpZGdldC5icmlkZ2U9ZnVuY3Rpb24oYSxjKXtiLmZuW2FdPWZ1bmN0aW9uKGQpe3ZhciBlPXR5cGVvZiBkPT09InN0cmluZyIsZj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaD10aGlzO2Q9IWUmJmYubGVuZ3RoP2IuZXh0ZW5kLmFwcGx5KG51bGwsW3RydWUsZF0uY29uY2F0KGYpKTpkO2lmKGUmJmQuY2hhckF0KDApPT09Il8iKXJldHVybiBoOwplP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBnPWIuZGF0YSh0aGlzLGEpLGk9ZyYmYi5pc0Z1bmN0aW9uKGdbZF0pP2dbZF0uYXBwbHkoZyxmKTpnO2lmKGkhPT1nJiZpIT09ail7aD1pO3JldHVybiBmYWxzZX19KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZz1iLmRhdGEodGhpcyxhKTtnP2cub3B0aW9uKGR8fHt9KS5faW5pdCgpOmIuZGF0YSh0aGlzLGEsbmV3IGMoZCx0aGlzKSl9KTtyZXR1cm4gaH19O2IuV2lkZ2V0PWZ1bmN0aW9uKGEsYyl7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGEsYyl9O2IuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixvcHRpb25zOntkaXNhYmxlZDpmYWxzZX0sX2NyZWF0ZVdpZGdldDpmdW5jdGlvbihhLGMpe2IuZGF0YShjLHRoaXMud2lkZ2V0TmFtZSx0aGlzKTt0aGlzLmVsZW1lbnQ9YihjKTt0aGlzLm9wdGlvbnM9Yi5leHRlbmQodHJ1ZSx7fSx0aGlzLm9wdGlvbnMsCnRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxhKTt2YXIgZD10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJyZW1vdmUuIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oKXtkLmRlc3Ryb3koKX0pO3RoaXMuX2NyZWF0ZSgpO3RoaXMuX3RyaWdnZXIoImNyZWF0ZSIpO3RoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gYi5tZXRhZGF0YSYmYi5tZXRhZGF0YS5nZXQodGhpcy5lbGVtZW50WzBdKVt0aGlzLndpZGdldE5hbWVdfSxfY3JlYXRlOmZ1bmN0aW9uKCl7fSxfaW5pdDpmdW5jdGlvbigpe30sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSkucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpO3RoaXMud2lkZ2V0KCkudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIil9LAp3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50fSxvcHRpb246ZnVuY3Rpb24oYSxjKXt2YXIgZD1hO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiBiLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKHR5cGVvZiBhPT09InN0cmluZyIpe2lmKGM9PT1qKXJldHVybiB0aGlzLm9wdGlvbnNbYV07ZD17fTtkW2FdPWN9dGhpcy5fc2V0T3B0aW9ucyhkKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcztiLmVhY2goYSxmdW5jdGlvbihkLGUpe2MuX3NldE9wdGlvbihkLGUpfSk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oYSxjKXt0aGlzLm9wdGlvbnNbYV09YztpZihhPT09ImRpc2FibGVkIil0aGlzLndpZGdldCgpW2M/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsYyk7cmV0dXJuIHRoaXN9LAplbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsZmFsc2UpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLHRydWUpfSxfdHJpZ2dlcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcy5vcHRpb25zW2FdO2M9Yi5FdmVudChjKTtjLnR5cGU9KGE9PT10aGlzLndpZGdldEV2ZW50UHJlZml4P2E6dGhpcy53aWRnZXRFdmVudFByZWZpeCthKS50b0xvd2VyQ2FzZSgpO2Q9ZHx8e307aWYoYy5vcmlnaW5hbEV2ZW50KXthPWIuZXZlbnQucHJvcHMubGVuZ3RoO2Zvcih2YXIgZjthOyl7Zj1iLmV2ZW50LnByb3BzWy0tYV07Y1tmXT1jLm9yaWdpbmFsRXZlbnRbZl19fXRoaXMuZWxlbWVudC50cmlnZ2VyKGMsZCk7cmV0dXJuIShiLmlzRnVuY3Rpb24oZSkmJmUuY2FsbCh0aGlzLmVsZW1lbnRbMF0sYyxkKT09PWZhbHNlfHxjLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19fSkoalF1ZXJ5KTsKOwo=]]></data>
	</file>
	<file>
	  <filename>/js/jsLoader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIGpzTG9hZGVyIC0gQSBKYXZhU2NyaXB0IGNsYXNzIHRvIGR5bmFtaWNhbGx5IGxvYWQganMgZmlsZXMgd2hlbiBuZWVkZWQKICogQGF1dGhvciBHZW9yZyBCdXNjaCAoZ2VvcmcuYnVzY2hAZ214Lm5ldCkKICogQGNvcHlyaWdodCAyMDExIEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogKiBAdmVyc2lvbiAxLjAKICogQGxpY2Vuc2UgR1BMCiAqLwoKaWYodHlwZW9mIGpzTG9hZGVyID09ICd1bmRlZmluZWQnKSB7Cglqc0xvYWRlciA9IHsKCQlkZWJ1ZzogZmFsc2UsCgkJbG9hZFNjcmlwdHM6IGZ1bmN0aW9uKCkgewoJCQl2YXIgaSA9IHRoaXMubG9hZGVycy5sZW5ndGg7CgkJCXRoaXMubG9hZGVycy5wdXNoKG5ldyB0aGlzLm9iamVjdChpKSk7CgkJCXZhciBhcmdzID0gKGFyZ3VtZW50c1swXSAmJiB0aGlzLnR5cGVPZihhcmd1bWVudHNbMF0pID09ICdvYmplY3QnID8gYXJndW1lbnRzWzBdIDogJycpOwoJCQlpZih0aGlzLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJY29uc29sZS5sb2coInN0YXJ0IGxvYWRpbmcgcHJvY2VzcyAiK2krIjtcbmFyZ3VtZW50czoiKTsKCQkJCWNvbnNvbGUubG9nKGFyZ3MpOwoJCQl9CgkJCXRoaXMubG9hZGVyc1tpXS5pbml0KGFyZ3MpOwoJCX0sCgkJbG9hZGVyczpuZXcgQXJyYXkoKSwKCQl0eXBlT2Y6IGZ1bmN0aW9uICh2YWx1ZSkgewoJCQl2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTsKCQkJaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7CgkJCQlpZiAodmFsdWUpIHsKCQkJCQlpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewoJCQkJCQl0eXBlID0gJ2FycmF5JzsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXR5cGUgPSAnbnVsbCc7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIHR5cGU7CgkJfSwKCQlvYmplY3Q6IGZ1bmN0aW9uKGlkKSB7CgkJCXRoaXMuaWQgPSBpZDsKCQkJdGhpcy5vcHRpb25zID0gewoJCQkJaW5pdFRpbWVPdXQ6MTAwLAoJCQkJbG9hZFRpbWVPdXQ6MTAwMDAsCgkJCQlpbnRlcnZhbDoxMDAsCgkJCQljYWxsQmFjazogZnVuY3Rpb24gKHJlYWR5KSB7fSwKCQkJCWRlYnVnOmpzTG9hZGVyLmRlYnVnCgkJCX07CgkJCXRoaXMucmVhZHkgPSBmdW5jdGlvbiAoKSB7CgkJCQlmb3IodmFyIHggaW4gdGhpcy5zY3JpcHRzKSB7CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1t4XS5yZWFkeSgpKSB7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1t4XS5jYWxsQmFja0NhbGxlZCkgewoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfQoJCQkJaWYoIXRoaXMub3B0aW9ucy5kZWJ1ZykgewoJCQkJCWRlbGV0ZSBqc0xvYWRlci5sb2FkZXJzW3RoaXMuaWRdOwoJCQkJfQoJCQkJcmV0dXJuIHRydWU7CgkJCX07CgkJCXRoaXMuc2NyaXB0cyA9IHt9OwoJCQl0aGlzLmluaXQgPSBmdW5jdGlvbigpIHsKCQkJCWlmKGFyZ3VtZW50c1swXSAmJiBqc0xvYWRlci50eXBlT2YoYXJndW1lbnRzWzBdKSA9PSAnb2JqZWN0JykgewoJCQkJCWZvciAodmFyIGkgaW4gYXJndW1lbnRzWzBdKSB7CgkJCQkJCWlmICh0eXBlb2YgdGhpcy5vcHRpb25zW2ldICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCQl0aGlzLm9wdGlvbnNbaV0gPSBhcmd1bWVudHNbMF1baV07CgkJCQkJCX0KCQkJCQl9CgkJCQkJaWYodHlwZW9mIGFyZ3VtZW50c1swXS5zY3JpcHRzICE9ICd1bmRlZmluZWQnICYmIGpzTG9hZGVyLnR5cGVPZihhcmd1bWVudHNbMF0uc2NyaXB0cykgPT0gJ29iamVjdCcpIHsKCQkJCQkJdmFyIGNvdW50ID0gMDsKCQkJCQkJdmFyIHNlbGYgPSB0aGlzOwoJCQkJCQlmb3IgKHZhciBqIGluIGFyZ3VtZW50c1swXS5zY3JpcHRzKSB7CgkJCQkJCQl2YXIgc2NyaXB0ID0gewoJCQkJCQkJCWluaXRUaW1lT3V0OiBzZWxmLm9wdGlvbnMuaW5pdFRpbWVPdXQsCgkJCQkJCQkJbG9hZFRpbWVPdXQ6IHNlbGYub3B0aW9ucy5sb2FkVGltZU91dCwKCQkJCQkJCQlpbnRlcnZhbDogc2VsZi5vcHRpb25zLmludGVydmFsLAoJCQkJCQkJCWNhbGxCYWNrOiBmdW5jdGlvbihyZWFkeSkge30sCgkJCQkJCQkJdXJsOicnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2Ygd2luZG93W3RoaXMuaWRdICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9OwoJCQkJCQkJZm9yICh2YXIgbiBpbiBhcmd1bWVudHNbMF0uc2NyaXB0c1tqXSkgewoJCQkJCQkJCWlmKHR5cGVvZiBzY3JpcHRbbl0gIT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJCQkJc2NyaXB0W25dID0gYXJndW1lbnRzWzBdLnNjcmlwdHNbal1bbl07CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJc2NyaXB0LnRpbWVFbGFwc2VkID0gMDsKCQkJCQkJCXNjcmlwdC5pZCA9IGo7CgkJCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSBmYWxzZTsKCQkJCQkJCXNjcmlwdC5sb2FkZWQgPSBmdW5jdGlvbigpIHsKCQkJCQkJCQl2YXIgc2NyaXB0RWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKCQkJCQkJCQlmb3IodmFyIGk9MDsgaTxzY3JpcHRFbG1zLmxlbmd0aDsgaSsrKSB7CgkJCQkJCQkJCWZvcih2YXIgaj0wOyBqPHNjcmlwdEVsbXNbaV0uYXR0cmlidXRlcy5sZW5ndGg7IGorKykgewoJCQkJCQkJCQkJaWYoc2NyaXB0RWxtc1tpXS5hdHRyaWJ1dGVzW2pdLm5hbWUgPT0gJ3NyYycgJiYgc2NyaXB0RWxtc1tpXS5hdHRyaWJ1dGVzW2pdLm5vZGVWYWx1ZSA9PSB0aGlzLnVybCkgewoJCQkJCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQkJCQkJfQoJCQkJCQkJCQl9CgkJCQkJCQkJfQoJCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJCX07CgkJCQkJCQl0aGlzLnNjcmlwdHNbc2NyaXB0LmlkXSA9IHNjcmlwdDsKCQkJCQkJCWNvdW50Kys7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQlmb3IodmFyIGkgaW4gdGhpcy5zY3JpcHRzKSB7CgkJCQkJaWYoIXRoaXMuc2NyaXB0c1tpXS5yZWFkeSgpICYmICF0aGlzLnNjcmlwdHNbaV0ubG9hZGVkKCkpIHsKCQkJCQkJc2V0VGltZW91dCgianNMb2FkZXIubG9hZGVyc1siK3RoaXMuaWQrIl0ubG9hZChqc0xvYWRlci5sb2FkZXJzWyIrdGhpcy5pZCsiXS5zY3JpcHRzWyciK2krIiddKSIsIHRoaXMuc2NyaXB0c1tpXS5pbml0VGltZU91dCk7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQkJCQlpZih0aGlzLm9wdGlvbnMuZGVidWcgJiYgdHlwZW9mIGNvbnNvbGUubG9nICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCWNvbnNvbGUubG9nKCJqcyAnIiArIHRoaXMuc2NyaXB0c1tpXS5pZCArICInIGxvYWRlZCBhbmQgcmVhZHk7XG5wcm9jZXNzaW5nIHNjcmlwdCBjYWxsQmFjayBmdW5jdGlvbi4uLiIpOwoJCQkJCX0KCQkJCQl0aGlzLnNjcmlwdHNbaV0uY2FsbEJhY2sodHJ1ZSk7CgkJCQkJdGhpcy5zY3JpcHRzW2ldLmNhbGxCYWNrQ2FsbGVkID0gdHJ1ZTsKCQkJCQlpZighdGhpcy5vcHRpb25zLmRlYnVnKSB7CgkJCQkJCWRlbGV0ZSB0aGlzLnNjcmlwdHNbaV07CgkJCQkJfQoJCQkJfQoJCQkJaWYodGhpcy5yZWFkeSgpKSB7CgkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQljb25zb2xlLmxvZygiYWxsIHNjcmlwdHMgb2YgbG9hZGluZyBwcm9jZXNzICIrdGhpcy5pZCsiIHJlYWR5O1xucHJvY2Vzc2luZyBnbG9iYWwgY2FsbEJhY2sgZnVuY3Rpb24uLiIpOwoJCQkJCX0KCQkJCQl0aGlzLm9wdGlvbnMuY2FsbEJhY2sodHJ1ZSk7CgkJCQkJaWYoIXRoaXMub3B0aW9ucy5kZWJ1ZykgewoJCQkJCQlkZWxldGUganNMb2FkZXIubG9hZGVyc1t0aGlzLmlkXTsKCQkJCQl9CgkJCQl9CgkJCX07CgkJCXRoaXMubG9hZCA9IGZ1bmN0aW9uKHNjcmlwdCkgewoJCQkJaWYoIXNjcmlwdC5yZWFkeSgpICYmICFzY3JpcHQubG9hZGVkKCkpIHsKCQkJCQl2YXIgbG9hZCA9IHRydWU7CgkJCQkJZm9yKHZhciBpPTA7IGk8anNMb2FkZXIubG9hZGVycy5sZW5ndGg7IGkrKykgewoJCQkJCQlpZih0eXBlb2YganNMb2FkZXIubG9hZGVyc1tpXSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YganNMb2FkZXIubG9hZGVyc1tpXS5zY3JpcHRzICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqc0xvYWRlci5sb2FkZXJzW2ldLnNjcmlwdHNbc2NyaXB0LmlkXSAhPSAndW5kZWZpbmVkJyAmJiBqc0xvYWRlci5sb2FkZXJzW2ldLnNjcmlwdHNbc2NyaXB0LmlkXS5sb2FkZWQoKSkgewoJCQkJCQkJbG9hZCA9IGZhbHNlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmKGxvYWQpIHsKCQkJCQkJdmFyIHNjcmlwdEVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwoJCQkJCQlzY3JpcHRFbG0uc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQvamF2YXNjcmlwdCIpOwoJCQkJCQlzY3JpcHRFbG0uc2V0QXR0cmlidXRlKCJzcmMiLCBzY3JpcHQudXJsKTsKCQkJCQkJaWYgKHR5cGVvZiBzY3JpcHRFbG0gIT0gInVuZGVmaW5lZCIpIHsKCQkJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoc2NyaXB0RWxtKTsKCQkJCQkJfQoJCQkJCQlpZih0aGlzLm9wdGlvbnMuZGVidWcgJiYgdHlwZW9mIGNvbnNvbGUubG9nICE9ICd1bmRlZmluZWQnKSB7CgkJCQkJCQljb25zb2xlLmxvZygianMgJyIgKyBzY3JpcHQuaWQgKyAiJyBsb2FkZWQ7XG53YWl0aW5nIGZvciByZWFkeS4uLiIpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJaWYgKCFzY3JpcHQucmVhZHkoKSkgewoJCQkJCWlmIChzY3JpcHQudGltZUVsYXBzZWQgPD0gc2NyaXB0LmxvYWRUaW1lT3V0KSB7CgkJCQkJCXRoaXMuc2NyaXB0c1tzY3JpcHQuaWRdLnRpbWVFbGFwc2VkID0gZXZhbChzY3JpcHQudGltZUVsYXBzZWQgKyBzY3JpcHQuaW50ZXJ2YWwpOwoJCQkJCQlzZXRUaW1lb3V0KCJqc0xvYWRlci5sb2FkZXJzWyIrdGhpcy5pZCsiXS5sb2FkKGpzTG9hZGVyLmxvYWRlcnNbIit0aGlzLmlkKyJdLnNjcmlwdHNbJyIrc2NyaXB0LmlkKyInXSkiLCAgc2NyaXB0LmludGVydmFsKTsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQkJdmFyIG1zZyA9ICJFcnJvcjogVGltZWQgb3V0IHdoaWxlIGxvYWRpbmcganMgJyIgKyBzY3JpcHQuaWQgKyAiJ1xuIjsKCQkJCQkJCWZvciAodmFyIG4gaW4gc2NyaXB0KSB7CgkJCQkJCQkJbXNnID0gbXNnICsgbiArICc6ICcgKyBzY3JpcHRbbl0gKyAiXG4iOwoJCQkJCQkJfQoJCQkJCQkJY29uc29sZS5sb2cobXNnKTsKCQkJCQkJfQoJCQkJCQlzY3JpcHQuY2FsbEJhY2soZmFsc2UpOwoJCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSB0cnVlOwoJCQkJCQlpZighdGhpcy5vcHRpb25zLmRlYnVnKSB7CgkJCQkJCQlkZWxldGUgdGhpcy5zY3JpcHRzW3NjcmlwdC5pZF07CgkJCQkJCX0KCQkJCQkJcmV0dXJuOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UgewoJCQkJCWlmKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB0eXBlb2YgY29uc29sZS5sb2cgIT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQkJY29uc29sZS5sb2coImpzICciICsgc2NyaXB0LmlkICsgIicgbG9hZGVkIGFuZCByZWFkeTtcbnByb2Nlc3Npbmcgc2NyaXB0IGNhbGxCYWNrIGZ1bmN0aW9uLi4uIik7CgkJCQkJfQoJCQkJCXNjcmlwdC5jYWxsQmFjayh0cnVlKTsKCQkJCQlzY3JpcHQuY2FsbEJhY2tDYWxsZWQgPSB0cnVlOwoJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZGVidWcpIHsKCQkJCQkJZGVsZXRlIHRoaXMuc2NyaXB0c1tzY3JpcHQuaWRdOwoJCQkJCX0KCQkJCQlpZih0aGlzLnJlYWR5KCkpIHsKCQkJCQkJaWYodGhpcy5vcHRpb25zLmRlYnVnICYmIHR5cGVvZiBjb25zb2xlLmxvZyAhPSAndW5kZWZpbmVkJykgewoJCQkJCQkJY29uc29sZS5sb2coImFsbCBzY3JpcHRzIG9mIGxvYWRpbmcgcHJvY2VzcyAiK3RoaXMuaWQrIiByZWFkeTtcbnByb2Nlc3NpbmcgZ2xvYmFsIGNhbGxCYWNrIGZ1bmN0aW9uLi4iKTsKCQkJCQkJfQoJCQkJCQl0aGlzLm9wdGlvbnMuY2FsbEJhY2sodHJ1ZSk7CgkJCQkJCWlmKCF0aGlzLm9wdGlvbnMuZGVidWcpIHsKCQkJCQkJCWRlbGV0ZSBqc0xvYWRlci5sb2FkZXJzW3RoaXMuaWRdOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9OwoJCQlyZXR1cm4gdGhpczsKCQl9Cgl9Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0Vyd2VpdGVydGVyIEluaGFsdCc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ0Vyd2VpdGVydGUgT3B0aW9uZW4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBBZHZhbmNlZENvbnRlbnQgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGluc3RhbGxpZXJ0Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWwgQWR2YW5jZWRDb250ZW50ICVzIHd1cmRlIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdXb2xsZW4gU2llIGRhcyBNb2R1bCBBZHZhbmNlZENvbnRlbnQgd2lya2xpY2ggZGVpbnN0YWxsaWVyZW4/JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGllc2VyIEJsb2NrIHdpcmQgbWVocmZhY2ggaW0gVGVtcGxhdGUgdmVyd2VuZGV0LiBTaWUgc2VoZW4gaGllciBudXIgZGVuIGVyc3RlbiBCbG9jay48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IERlciBCYXNpcy1JbmhhbHRzLUVpZ2Vuc2NoYWZ0cy1OYW1lICYjMDM5OyVzJiMwMzk7IGthbm4gbmljaHQgYWxzIFdlcnQgZiZ1dW1sO3IgZGVuIFBhcmFtZXRlciAmIzAzOTtibG9jayYjMDM5OyB2ZXJ3ZW5kZXQgd2VyZGVuLiA8YnIgLz5EaWVzZXIgQmxvY2sgaXN0IGluYWt0aXYuIE51ciBkZXIgZXJzdGUgQmxvY2sgd2lyZCBhbmdlemVpZ3QuIFByJnV1bWw7ZmVuIFNpZSBJaHIgU2VpdGVuLVRlbXBsYXRlIHVuZCB3JmF1bWw7aGxlbiBTaWUgZiZ1dW1sO3IgZGVuIFBhcmFtZXRlciAmIzAzOTtibG9jayYjMDM5OyBlaW5lbiBhbmRlcmVuIFdlcnQuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ0RhcyBFbmRkYXR1bSBtdXNzIGhpbnRlciBkZW0gU3RhcnRkYXR1bSBsaWVnZW4uJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0FrdHVlbGxlcyBWZXJ6ZWljaG5pcyc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnQmlsZGdyJm91bWw7JnN6bGlnO2UnOwokbGFuZ1snc2l6ZSddID0gJ0RhdGVpZ3Imb3VtbDsmc3psaWc7ZSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnVm9tICZ1dW1sO2Jlcmdlb3JkbmV0ZW4gRWxlbWVudCB2ZXJlcmJiYXInOwokbGFuZ1snbm9uZSddID0gJ25pY2h0cyc7CiRsYW5nWydpbnZhbGlkJ10gPSAndW5nJnV1bWw7bHRpZyc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVW5nJnV1bWw7bHRpZ2VyIFdlcnQgJiMwMzk7JXMmIzAzOTsgZGVzIFBhcmFtZXRlcnMgYmxvY2tfdHlwZSBpbSBCbG9jayAmIzAzOTslcyYjMDM5Oy48YnIgLz5CaXR0ZSBwciZ1dW1sO2ZlbiBTaWUgSWhyIFNlaXRlbi1UZW1wbGF0ZS48L2VtPic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRfYmxvY2twYXJhbXMnXSA9ICc8ZW0+PHN0cm9uZz5GZWhsZXI6PC9zdHJvbmc+IFVuenVyZWljaGVuZGUgcGFyYW1ldGVyLiA8YnIgLz5GZWhsZW5kZXIgcGFyYW0gJiMwMzk7JXMmIzAzOTsgZiZ1dW1sO3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsuICZVdW1sO2JlcnByJnV1bWw7ZmVuIFNpZSBJaHIgU2VpdGVuLVRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVpbic7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0Zyb250ZW5kLVp1Z3JpZmYnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnU2VpdGUsIGF1ZiBkaWUgd2VpdGVyZ2VsZWl0ZXQgd2lyZCwgd2VubiBkZXIgWnVncmlmZiBuaWNodCBlcmxhdWJ0IGlzdCc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnQW5tZWxkZS1Gb3JtdWxhciBhbnplaWdlbic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdOdXIgZiZ1dW1sO3IgcmVnaXN0cmllcnRlIE51dHplcic7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrICc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnQWJsYXVmZGF0dW0gdmVyd2VuZGVuJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0ZGF0dW0nOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VuZGRhdHVtJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrLUluaGFsdCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdTZWl0ZSBhdWYgaW5ha3RpdiBzZXR6ZW4nOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1NlaXRlIGwmb3VtbDtzY2hlbic7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdBa3Rpb24gYmVpbSBEZWluc3RhbGxpZXJlbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ0FsbGUgU2VpdGVuIGF1ZiBUeXAgJnF1b3Q7SW5oYWx0JnF1b3Q7IHNldHplbic7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ0FsbGUgU2VpdGVuIGF1ZiBUeXAgJnF1b3Q7SW5oYWx0JnF1b3Q7IHNldHplbiB1bmQgenVnZWgmb3VtbDtyaWdlIEJsJm91bWw7Y2tlIGwmb3VtbDtzY2hlbic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdFaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVydCc7CiRsYW5nWydzdWNjZXNzJ10gPSAnT0snOwokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXInOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdBbGxlIFNlaXRlbiB2b20gVHlwICZxdW90O0Vyd2VpdGVydGVyIEluaGFsdCZxdW90OyBsJm91bWw7c2NoZW4nOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICdBbGxlIFNlaXRlbiB2b20gVHlwICVzIGF1ZiBUeXAgJXMgc2V0emVuLic7CiRsYW5nWydjb25maXJtaW1wb3J0J10gPSAnV29sbGVuIFNpZSB3aXJrbGljaCBkZW4gSW5oYWx0cy1UeXAgYWxsZXIgSW5oYWx0c3NlaXRlbiAmYXVtbDtuZGVybj8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdEaWVzZSBOYWNocmljaHQgdmVyYmVyZ2VuJzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ1N0YW5kYXJkLUVpbnN0ZWxsdW5nZW4gZiZ1dW1sO3IgJnF1b3Q7RXJ3ZWl0ZXJ0ZXIgSW5oYWx0JnF1b3Q7JzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAnVVJMLVBhcmFtZXRlciwgZGVyIGJlaSBVbWxlaXR1bmcgYW5nZWhhbmdlbiB3ZXJkZW4gc29sbCc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1NtYXJ0eSB2ZXJ3ZW5kZW4sIHVtIGRpZSBQYXJhbWV0ZXIgenUgdmVyYXJiZWl0ZW4nOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5GZWhsZXI6PC9zdHJvbmc+IE1vZHVsIGtvbm50ZSBuaWNodCBnZWxhZGVuIHdlcmRlbiAmIzAzOTslcyYjMDM5Oy4gKERlZmluaWVydCBmJnV1bWw7ciBCbG9jayAmIzAzOTslcyYjMDM5OyAgaW4gSWhyZW4gU2VpdGVuLVRlbXBsYXRlLi4pPC9lbT4nOwokbGFuZ1snZXJyb3JfY29udGVudGJsb2NrX3N1cHBvcnQnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gTW9kdWxlICYjMDM5OyVzJiMwMzk7IGRvZXMgbm90IHN1cHBvcnQgY29udGVudGJsb2Nrcy4gKERlZmluZWQgZm9yIGJsb2NrICYjMDM5OyVzJiMwMzk7IGluIHlvdXIgcGFnZSB0ZW1wbGF0ZS4pPC9lbT4nOwokbGFuZ1snc3VjY2Vzc19pbXBvcnRwYWdlcyddID0gJ0FsbGUgU2VpdGVuIGRlcyBUeXBzICVzIGVyZm9sZ3JlaWNoIGdlJmF1bWw7bmRlcnQgaW4gJXMnOwokbGFuZ1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddID0gJ1plaWdlIEFkdmFuY2VkQ29udGVudCBUYWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIEVpbnN0ZWxsdW5nZW4gYW56ZWlnZW4nOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ0luaGFsdHNibCZvdW1sO2NrZSc7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gPSAnY29udGVudCBibG9jayBtZXNzYWdlJzsKJGxhbmdbJ2Jsb2NrX2dyb3VwcyddID0gJ0Jsb2NrZ3J1cHBlJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncHJvIFNlaXRlJzsKJGxhbmdbJ3Blcl90ZW1wbGF0ZSddID0gJ3BybyBUZW1wbGF0ZSc7CiRsYW5nWydib3RoMSddID0gJ1RlbXBsYXRlIE9ERVIgU2VpdGUgJzsKJGxhbmdbJ2JvdGgyJ10gPSAnVGVtcGxhdGUgVU5EIFNlaXRlJzsKJGxhbmdbJ2NvbnRlbnQnXSA9ICdJbmhhbHQnOwokbGFuZ1snY29udGVudDInXSA9ICdFcndlaXRlcnRlciBJbmhhbHQnOwokbGFuZ1sncHJlZnMnXSA9ICdFaW5zdGVsbHVuZ2VuJzsKJGxhbmdbJ211bHRpX2lucHV0J10gPSAnTXVsdGkgSW5wdXRzJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbCddID0gJ011bHRpIElucHV0IFRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdOZXVlcyBtdWx0aSBpbnB1dCBoaW56dWcmdXVtbDtnZW4nOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ05ldWVzIG11bHRpIGlucHV0IHRlbXBsYXRlIGhpbnp1ZiZ1dW1sO2dlbic7CiRsYW5nWydpbnB1dF9pZCddID0gJ0VpbmdhYmUtSUQnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnRWluZ2FiZWZlbGRlcic7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpc3QgZWluIFBmbGljaHRmZWxkIHVuZCBkYXJmIG5pY2h0IGxlZXIgc2VpbiAnOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnRWluZ2FiZWZlbGRlciBpc3QgZWluIFBmbGljaHRmZWxkIHVuZCBkYXJmIG5pY2h0IGxlZXIgc2Vpbi4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdLZWluZSBFaW5nYWJlLUlEIGFuZ2VnZWJlbiBvZGVyIEVpbmdhYmUtSUQgaXN0IGJlcmVpdHMgdm9yaGFuZGVuLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdFaW5nYWJlLUlEIHdpcmQgYmVyZWl0cyB2ZXJ3ZW5kZXQuIFcmYXVtbDtobGVuIFNpZSBlaW5lIGFuZGVyZS4gKE11c3MgZWluZGV1dGlnIHNlaW4pJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgaGluenVnZWYmdXVtbDtndC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfZGVsZXRlZCddID0gJ011bHRpIElucHV0IGdlbCZvdW1sO3NjaHQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGhpbnp1Z2VmJnV1bWw7Z3QuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGdlbCZvdW1sO3NjaHQuJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ0F1c2dldyZhdW1sO2hsdGUgRWxlbWVudGUgbCZvdW1sO3NjaGVuJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnV29sbGVuIFNpZSB3aXJrbGljaCwgZGllc2VzIEVsZW1lbnQgbCZvdW1sO3NjaGVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ1dvbGxlbiBTaWUgd2lya2xpY2gsIGRpZSBhdXNnZXcmYXVtbDtobHRlbiBFbGVtZW50ZSBsJm91bWw7c2NoZW4/JzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlLVZhcmlhYmxlbjo8L3N0cm9uZz48L3A+CjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpc3QgZWluIEFycmF5IHdlbGNoZXMgYWxsZSBJbnB1dC1FbGVtZW50ZSBkZXMgTXVsdGlJbnB1dCBCbG9ja3MgZW50aCZhdW1sO3QuPGJyIC8+CkplZGVzIElucHV0LUVsZW1lbnQgaXN0IHdpZWRlcnVtIGVpbiBBcnJheSB3ZWxjaGVzIGFsbGUgUGFyYW1ldGVyIGVudGjDpGx0LiA8YnIgLz4KKFNpZWhlIE1vZHVsaGlsZmUpPGJyIC8+Clp1c8OkdHpsaWNoZXIgUGFyYW1ldGVyIGlzdCAmcXVvdDtpbnB1dCZxdW90Oy4gRGllc2VyIGdpYnQgZGFzIElucHV0ZmVsZCBhdXMuPGJyIC8+ClVtIGF1ZiBkaWUgUGFyYW1hdGVyIHp1enVncmVpZmVuIHdpcmQgZGVyIFB1bmt0LVN5bnRheCB2ZXJ3ZW5kZXQuPGJyIC8+CkJlaXNwaWVsOjwvcD4KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19Cgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+CnsvZm9yZWFjaH08L2NvZGU+PC9wcmU+JzsKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8YnIgLz4KPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4KPHA+RGllc2VzIE1vZHVsIGJpZXRldCBlaW5lbiB3ZWl0ZXJlbiBJbmhhbHRzdHlwZW4gIkVyd2VpdGVydGVyIEluaGFsdCIuPGJyIC8+Ck1pdCBkaWVzZW0gSW5oYWx0c3R5cGVuIGthbm4gZGllIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGZsZXhpYmVsIGdlc3RhbHRldCB3ZXJkZW4sIGluZGVtIG1hbiBpbSBTZWl0ZW4tVGVtcGxhdGUgZGVuIGVpbnplbG5lbiBJbmhhbHRzYmwmb3VtbDtja2VuIHdlaXRlcmUgUGFyYW1ldGVyIGhpbnp1ZiZ1dW1sO2d0LjxiciAvPgpJbmhhbHRzYmwmb3VtbDtja2UgayZvdW1sO25uZW4gaW4gRm9ybSB2ZXJzY2hpZWRlbmVyIElucHV0LUZlbGRlciB3aWUgRHJvcGRvd25zLCBNZWhyZmFjaGF1c3dhaGxmZWxkZXIgb2RlciBDaGVja2JveGVuIGRhcmdlc3RlbGx0IHdlcmRlbi48YnIgLz4KRGllIElucHV0LUZlbGRlciBrJm91bWw7bm5lbiB3ZWl0ZXJoaW4gaW4gZWlnZW5lbiBUYWJzIGFuZ2V6ZWlndCBvZGVyIGluIEdydXBwZW4genVzYW1tZW5nZWZhc3N0IHdlcmRlbi48YnIgLz4KQXXDn2VyZGVtIGhhdCBtYW4gZGllIE0mb3VtbDtnbGljaGtlaXQsIFNlaXRlbiBvZGVyIGVpbnplbG5lIEJsJm91bWw7Y2tlIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgR3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZnJlaXp1Z2ViZW4uPGJyIC8+CkRpZSBFaW5zdGVsbHVuZ2VuIGRlcyBCZW51dHplcnp1Z3JpZmZzIHNpbmQgYXVmIHVudGVyZ2VvcmRuZXRlIFNlaXRlbiB2ZXJyZWJiYXIuPC9wPgo8cD5EaWUgUGFyYW1ldGVyIGsmb3VtbDtubmVuIGF1w59lcmRlbSBtaXQgSGlsZmUgdm9uIGVpbmZhY2hlbSBTbWFydHktU3ludGF4IGR5bmFtaXNjaGUgV2VydGUgZW50aGFsdGVuLjxiciAvPgpELmguIG1hbiBrYW5uIHouQi4gZGFzIEVyZ2VibmlzIGVpbmVzIGJlbnV0emVyZGVmaW5pZXJ0ZW4gVGFncywgZWluZXMgUGx1Z2lucywgZWluZXMgTW9kdWxzIG9kZXIgZWluZmFjaCBudXIgZWluZXMgR2xvYmFsZW4gSW5oYWx0c2Jsb2NrZXMgYWxzIFdlcnQgZiZ1dW1sO3IgZWluZW4gUGFyYW1ldGVyIGVpbnNldHplbiBsYXNzZW4uPC9wPgo8cD48ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBJbiBtYW5jaGVuIEYmYXVtbDtsbGVuIGVtcGZpZWx0IGVzIHNpY2gsIGFuc3RlbGxlIGRlcyBub3JtYWxlbiB7Y29udGVudH0gVGFncyBkZW4ge0FkdmFuY2VkQ29udGVudH0gVGFnIHp1IGJlbnV0emVuLiAoR3Jvw58tIHVuZCBLbGVpbnNjaHJlaWJ1bmcgYmVhY2h0ZW4pPC9lbT48L3A+CjxoMz5XaWUgd2lyZCBlcyB2ZXJ3ZW5kZXQ/PC9oMz4KPHA+TmFjaCBkZXIgSW5zdGFsbGF0aW9uIHdpcmQgZGVyIEFkbWluaXN0cmF0aW9uIGVpbiB3ZWl0ZXJlciBNZW4mdXVtbDtwdW5rdCAiRXJ3ZWl0ZXJ1bmdlbi0mZ3Q7RXJ3ZWl0ZXJ0ZXIgSW5oYWx0IiBoaW56dWdlZiZ1dW1sO2d0LjxiciAvPgpIaWVyIGsmb3VtbDtubmVuIHZlcnNjaGllZGVuZSBFaW5zdGVsbHVuZ2VuIHZvcmdlbm9tbWVuIHdlcmRlbi48YnIgLz4KQmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gc3RlaHQgbnVuIGVpbiB3ZWl0ZXJlciBJbmhhbHRzdHlwICJFcndlaXRlcnRlciBJbmhhbHQiIHp1ciBBdXN3YWhsLCBkZXIgZGllIEZ1bmt0aW9uZW4gZGVzIE1vZHVscyBiZXJlaXRzdGVsbHQuPC9wPgo8cD5NaXQgSGlsZmUgZm9sZ2VuZGVyIFBhcmFtZXRlciBiZWltIEVyc3RlbGxlbiB2b24gSW5oYWx0c2JsJm91bWw7Y2tlbiBpbSBTZWl0ZW4tVGVtcGxhdGUgayZvdW1sO25uZSBkaWVzZSBGdW5rdGlvbmVuIHZlcndlbmRldCB3ZXJkZW46PC9wPgo8aDM+V2VsY2hlIFBhcmFtZXRlciBzaW5kIHZlcmYmdXVtbDtnYmFyPzwvaDM+CjxwPmFsbGUgUGFyYW1ldGVyIHNpbmQgb3B0aW9uYWw8L3A+CjxwPjxzdHJvbmc+U3RhbmRhcmQgUGFyYW1hdGVyOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUVybSZvdW1sO2dsaWNodCBkYXMgSGluenVmJnV1bWw7Z2VuIG1laHJlcmVyIEluaGFsdHNibCZvdW1sO2NrZS4gQmVpbSBCZWFyYmVpdGVuIGVpbmVyIFNlaXRlIHdpcmQgZiZ1dW1sO3IgamVkZW4gQmxvY2sgZWluIGVpZ2VuZXMgSW5wdXQtRmVsZCBhbmdlemVpZ3QuPGJyIC8+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtad2VpdGVyIEluaGFsdHNibG9jayZxdW90O308L2NvZGU+PGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEZXIgTmFtZSBkZXMgSW5oYWx0c2Jsb2NrcyBkYXJmIG51ciBCdWNoc3RhYmVuLCBaYWhsZW4gdW5kIFVudGVyc3RyaWNoZSBlbnRoYWx0ZW4uIChrZWluZSBMZWVyLSBvZGVyIFNvbmRlcnplaWNoZW4sIFVtbGF1dGUgZXRjLikuIEFuZGVyZW5mYWxscyB3aXJkIGRlciBCbG9ja25hbWUgJmF1bWw7aG5saWNoIGRlbSBTZWl0ZW5hbGlhcyBlbnRwcmVjaGVuZCBrb252ZXJ0aWVydC48L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pnd5c2l3eWc8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5XZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdpcmQgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGtlaW4gV1lTSVdZRyBFZGl0b3IgZiZ1dW1sO3IgZGllc2VuIEJsb2NrIHZlcndlbmRldC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uZWxpbmU8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT5XZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIHdpcmQgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIG51ciBlaW4gZWluZmFjaGVzIGVpbnplaWxpZ2VzIFRleHQtSW5wdXQtRmVsZCBhbmdlemVpZ3QuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5TdGFiZGFyZGluaGFsdCBiZWltIEVyc3RlbGxlbiBuZXVlciBTZWl0ZW4uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+RGllIEVpbmdhYmVhdWZmb3JkZXJ1bmcgZiZ1dW1sO3IgZGVuIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4uIFdlbm4gZGllc2VyIFBhcmFtZXRlciBmZWhsdCwgd2lyZCBkZXIgdW5rb252ZXJ0aWVydGUgV2VydCBkZXMgUGFyYW1ldGVycyBibG9jayB2ZXJ3ZW5kZXQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJV2Vpc3QgZGVuIEluaGFsdCBkaWVzZXMgQmxvY2tzIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBlaW5lciBTbWFydHkgVmFyaWFibGVuIHp1LjxiciAvPgoJCQkJQnNwLjogPGNvZGU+e2NvbnRlbnQgYXNzaWduPSJwYWdlY29udGVudCJ9PGJyIC8+CgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7XCRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+RXJ3ZWl0ZXJ0ZSBQYXJhbWV0ZXI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSAKCQk8dWw+CgkJCTxsaT5HaWJ0IGFuLCBpbiB3ZWxjaGVyIEZvcm0gZGVyIEluaGFsdHNibG9jayBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4gYW5nZXplaWd0IHdlcmRlbiBzb2xsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIgayZvdW1sO25uZW4gSW5oYWx0c2JsJm91bWw7Y2tlIGluIGRlciBBZG1pbmlzdHJhdGlvbiBiZWltIEJlYXJiZWl0ZW4gdm9uIFNlaXRlbiBpbiBiZXN0aW1tdGVuIFRhYnMgYW5nZXplaWd0IHdlcmRlbi48YnIgLz4KCQkJCU0mb3VtbDtnbGljaGUgV2VydGUgc2luZCB6LkIuICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtIYXVwdG1lbiZ1dW1sOyZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25lbiZxdW90OyksIG9kZXIgamVkZXIgYW5kZXJlIGJlbGllYmlnZSBXZXJ0IChlcnpldWd0IGF1dG9tYXRpc2NoIGVpbmVuIHdlaXRlcmVuIFRhYikuPGJyIC8+CgkJCQk8ZW0+TWFuIGthbm4gc29taXQgei5CLiBlaW5lIENoZWNrYm94IGltIFRhYiAiT3B0aW9uZW4iIGhpbnp1ZiZ1dW1sO2dlbiBvZGVyIGVpbmVuIGVpZ2VuZW4gVGFiIGVyc3RlbGxlbi48L2VtPi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPk1pdCBkaWVzZW0gUGFyYW1ldGVyIGsmb3VtbDtubmVuIGRpZSBJbmhhbHRzYmwmb3VtbDtja2Ugbm9jaG1hbHMgaW4gd2VpdGVyZSAiVW50ZXJ0YWJzIiBpbm5lcmhhbGIgZGVyICJIYXVwdHRhYnMiIHVudGVydGVpbHQgd2VyZGVuLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBtYW4gbWVocmVyZSBJbmhhbHRzYmwmb3VtbDtja2UgaW4gZWluZW0gRmllbGRzZXQgZ3J1cHBpZXJlbi48YnIgLz4KCQkJCURpZSBHcnVwcGVuIGsmb3VtbDtubmVuIGF1Y2ggYXVmIG1laHJlcmUgVGFicyB2ZXJ0ZWlsdCB3ZXJkZW4uCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IHdpcmQsIGlzdCBkZXIgQmxvY2sgZGVha3RpdmllcnQuPGJyIC8+CgkJCQlEZWFrdGl2aWVydGUgSW5oYWx0c2JsJm91bWw7Y2tlIHdlcmRlbiB3ZWRlciBpbiBkZXIgQWRtaW5pc3RyYXRpb24gYmVpbSBCZWFyYmVpdGVuIHZvbiBTZWl0ZW4sIG5vY2ggYXVmIGRlciBJbnRlcm5ldHNlaXRlIGFuZ2V6ZWlndC4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVncnVwcGVuIGRlciBBZG1pbmlzdHJhdGlvbiBiZWFyYmVpdGV0IHdlcmRlbi48YnIgLz4KCQkJCShOYW1lIGRlciBCZW51dHplcmdydXBwZSBlaW50cmFnZW47IG1laHJlcmUgR3J1cHBlbiBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgaXN0ICZhdW1sO2hubGljaCBkZW4gIlp1cyZhdW1sO3R6bGljaGVuIEJlYXJiZWl0ZXJuIiBlaW5lciBTZWl0ZS4gRXIgZ2lsdCBhbGxlcmRpbmdzIG51ciBmJnV1bWw7ciBlaW56ZWxuZSBJbmhhbHRzYmwmb3VtbDtja2UuPGJyIC8+CgkJCQlNaXQgZGllc2VtIFBhcmFtZXRlciBrJm91bWw7bm5lbiBJbmhhbHRzYmwmb3VtbDtja2UgbnVyIHZvbiBiZXN0aW1tdGVuIEJlbnV0emVybiBkZXIgQWRtaW5pc3RyYXRpb24gYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CgkJCQkoTmFtZSBkZXMgQmVudXR6ZXJzIGVpbnRyYWdlbjsgbWVocmVyZSBCZW51dHplciBtaXQgS29tbWEgZ2V0cmVubnQpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiB3ZW5uIGRpZSBQYXJhbWV0ZXIgPHR0PmVkaXRvcl91c2VyczwvdHQ+IHVuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IG5pY2h0IHZlcndlbmRldCB3ZXJkZW4sIGsmb3VtbDtubmVuIGRpZSBCbCZvdW1sO2NrZSB2b24gamVkZW0gQmVudXR6ZXIgYmVhcmJlaXRldCB3ZXJkZW4uPGJyIC8+CglEaWUgV2VydGUgaGFiZW4ga2VpbmVuIEVpbmZsdXNzLCB3ZW5uIGRlciBCZW51dHplciBkZXIgR3J1cHBlICJBZG1pbiIgYW5nZWgmb3VtbDtydC48YnIgLz4KCVVtIGVpbmVtIEJlbnV0emVyIHp1IGVybGF1YmVuIGFsbGUgSW5oYWx0c2JsJm91bWw7Y2tlIHVuYWJoJmF1bWw7bmdpZyB2b24gZGVuIGJlaWRlbiBQYXJhbWV0ZXJuIHp1IGJlYXJiZWl0ZW4sIG11c3MgZGVyIEJlbnV0emVyIGVpbmVyIEdydXBwZSBhbmdlaCZvdW1sO3JlbiwgZGllIGRpZSBCZXJlY2h0aWd1bmcgIk1hbmFnZSBhbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgaGF0LjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+CgkJPHVsPgoJCQk8bGk+CgkJCQlEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZmVzdCwgd2VsY2hlIEJlbnV0emVyZ3J1cHBlbiBkZXMgRnJvbnRFbmRVc2VycyBNb2R1bHMgZGllc2VuIEJsb2NrIGF1ZiBkZXIgSW50ZXJuZXRzZWl0ZSBzZWhlbiBkJnV1bWw7cmZlbi48YnIgLz4KCQkJCShJRCBkZXIgQmVudXR6ZXJncnVwcGUgYW5nZWJlbjsgbWVocmVyZSBJRHMgbWl0IEtvbW1hIGdldHJlbm50KTxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCURpZXNlciBQYXJhbWV0ZXIgZ2lidCBhbiwgb2IgYW5zdGVsbGUgZGVzIEluaGFsdHNibG9ja3MgZGFzIExvZ2luLUZvcm11bGFyIGRlcyBGcm9udEVuZFVzZXJzIE1vZHVscyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwsIHdlbm4gZGllc2VyIEJsb2NrIG51ciBmJnV1bWw7ciBiZXN0aW1tdGUgQmVudXR6ZXJncnVwcGVuIGZyZWlnZWdlYmVuIHVuZCBkZXIgQmVzdWNoZXIgbmljaHQgZWluZ2Vsb2dndCBpc3QuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBEYXMgRm9ybXVsYXIgd2lyZCBudXIgZWluIGVpbnppZ2VzIE1hbCBhbmdlemVpZ3QuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+R2lidCBhbiwgb2IgZGVyIEJsb2NrIGxlZXIgc2VpbiBkYXJmIG9kZXIgbmljaHQuPGJyIC8+CgkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCB1bmQgZGVyIEluaGFsdCBkZXMgQmxvY2tzIGlzdCBsZWVyLCB3aXJkIGRlciBXZXJ0IGRlcyBQYXJhbWV0ZXJzIGRlZmF1bHQgdmVyd2VuZGV0LjxiciAvPgoJCQlXdXJkZSBkZXIgQmxvY2sgbWl0IGRlbSBQbHVnaW4ge2NvbnRlbnRfaW1hZ2V9IGVyc3RlbGx0LCBmZWhsdCBkaWUgT3B0aW9uICJOaWNodHMiIGltIEJpbGQtRHJvcGRvd24uPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNjaGFsdGV0IGRpZSBWZXJhcmJlaXR1bmcgZGVyIFBhcmFtZXRlcndlcnRlIG1pdCBIaWxmZSB2b24gU21hcnR5IGVpbi9hdXMuPGJyIC8+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiB0cnVlIGdlc2V0enQgd2lyZCwgd2lyZCBqZWRlciBQYXJhbWV0ZXIgbWl0IEhpbGZlIGRlciBTbWFydHkgVGVtcGxhdGUgRW5naW5lIHZlcmFyYmVpdGV0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2VpczogPC9zdHJvbmc+IERpZSBXZXJ0ZSBtJnV1bWw7c3NlbiBhbHMgU21hcnR5LVN5bnRheCBnZWtlbm56ZWljaG5ldCB3ZXJkZW4uIEhpZXIgayZvdW1sO25uZW4gYWJlciBuaWNodCBTdGFuZGFyZCBTbWFydHktQmVncmVuemVyICh7Li4ufSkgdmVyd2VuZGV0IHdlcmRlbiwgZGEgZXMgenUgRmVobGVybiBhdWYgZGVyIEludGVybmV0c2VpdGUgZiZ1dW1sO2hydC48YnIgLz4KCQkJCURhaGVyIHdlcmRlbiBzdGF0dGRlc3NlbiBkaWUgWmVpY2hlbiA6OjogYWxzIEJlZ3JlbnplciB2ZXJ3ZW5kZXQuPGJyIC8+PC9lbT4KCQkJCUJzcC46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0thdGVnb3JpZW4mcXVvdDsgbGFiZWw9JnF1b3Q7VyZhdW1sO2hsZW4gU2llIGVpbmUgS2F0ZWdvcmllJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+RWluZSBkZXRhaWxpZXJ0ZXJlIEJlc2NocmVpYnVuZyBkZXMgSW5oYWx0c2Jsb2Nrcy48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlHaWJ0IGFuLCBvYiBlaW4gQmxvY2sgaW4gZGVyIEFkbWluaXN0cmF0aW9uIGJlaW0gQmVhcmJlaXRlbiB2b24gU2VpdGVuIGVpbi0gKHRydWUpIG9kZXIgYXVzZ2VrbGFwcHQgKGZhbHNlKSBzZWluIHNvbGwuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBpc3QgaW1tZXIgZmFsc2UsIHdlbm4gZGVyIGRlciBQYXJhbWV0ZXIgbm9fY29sbGFwc2U9dHJ1ZSB2ZXJ3ZW5kZXQgd2lyZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlXZW5uIGRpZXNlciBXZXJ0IGF1ZiBmYWxzZSBnZXNldHp0IGlzdCwga2FubiBkZXIgQmxvY2tlIG5pY2h0IHp1c2FtbWVuZ2VrbGFwcHQgd2VyZGVuLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBkZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0IGlzdCwgaXN0IGRlciBQYXJhbWV0ZXIgY29sbGFwc2UgYXV0b21hdGlzY2ggaW1tZXIgZmFsc2UuPC9lbT48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5yZXF1aXJlZDwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJR2lidCBhbiwgb2IgZWluIEJsb2NrIGVpbiBQZmxpY2h0ZmVsZCBpc3QgKHRydWUpIG9kZXIgbmljaHQgKGZhbHNlKS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgQ2hlY2tib3hlbjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQWt0aXZpZXJ0L0RlYWt0aXZpZXJ0IGRpZSBDaGVja2JveCBhbHMgU3RhbmRhcmR3ZXJ0LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gJnF1b3Q7MSZxdW90OyA9IGFrdGl2aWVydDsgJnF1b3Q7MCZxdW90OyBkZWFrdGl2aWVydDxiciAvPjwvZW0+CgkJCQlCc3AuOiA8Y29kZT57Y29udGVudCBibG9ja190eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IGRlZmF1bHQ9MX08L2NvZGU+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+UGFyYW1ldGVyIGYmdXVtbDtyIERyb3Bkb3ducy9NZWhyZmFjaGF1c3dhaGw6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aXRlbXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRpZSBCZXplaWNobnVuZyBkZXIgZWluemVsbmVuIEVpbnRyJmF1bWw7Z2UuIChtaXQgZWluZW0gYmVzdGltbXRlbiBaZWljaGVuIGdldHJlbm50IC0gU3RhbmRhcmQgaXN0IHwgKHBpcGUpKTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EaWUgV2VydGUgZGVyIGVpbnplbG5lbiBFaW50ciZhdW1sO2dlLiAobWl0IGVpbmVtIGJlc3RpbW10ZW4gWmVpY2hlbiBnZXRyZW5udCAtIFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gd2VubiBlcyB3ZW5pZ2VyIFdlcnRlIGFscyBCZXplaWNobnVuZ2VuIGdpYnQsIHdlcmRlbiBkaWUgcmVzdGxpY2hlbiBCZXplaWNobnVuZ2VuIGFscyBXZXJ0ZSB2ZXJ3ZW5kZXQgKHVuZCB1bWdla2VocnQpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlBdXNnZXcmYXVtbDtobHRlIFN0YW5kYXJkd2VydGUgKG1pdCBlaW5lbSBiZXN0aW1tdGVuIFplaWNoZW4gZ2V0cmVubnQgLSBTdGFuZGFyZCBpc3QgfCAocGlwZSkpPGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVsaW1pdGVyPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5EYXMgVHJlbm56ZWljaGVuIG1pdCBkZW0gZGllIEJlemVpY2hudW5nZW4sIFdlcnRlIHVuZCBTdGFuZGFyZHdlcnRlIHZvbmVpbmFuZGVyIGdldHJlbm50IHdlcmRlbi4gKFN0YW5kYXJkIGlzdCB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikKCQk8dWw+CgkJCTxsaT5EaWUgSCZvdW1sO2hlIGRlcyBJbnB1dGZlbGRlcywgd2VubiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gdmVyd2VuZGV0IHdpcmQuPGVtPihTdGFuZGFyZCBpc3QgZGllIEFuemFobCBkZXIgRWludHImYXVtbDtnZSk8L2VtPjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBudXIgYmVpIHNlbGVjdF9tdWx0aXBsZQoJCTx1bD4KCQkJPGxpPgoJCQkJV2lyZCBkaWVzZXIgV2VydCBhdWYgdHJ1ZSBnZXNldHp0LCB3ZXJkZW4gZGllIEVpbnRyJmF1bWw7Z2UgbmljaHQgYWxzIE1laHJmYWNoYXVzd2FobGZlbGQgYW5nZXplaWd0LCBzb25kZXJuIGFscyBlaW5lIExpc3RlIG1pdCBDaGVja2JveGVuLCBkaWUgbmV1IHNvcnRpZXJ0IHdlcmRlbiBrYW5uLjxiciAvPkplZGUgWmVpbGUgZWludGgmYXVtbDtsdCBkaWUgQmV6ZWljaG51bmcgZGVzIEVpbnRyYWdzIHVuZCBlaW5lIENoZWNrYm94IG1pdCBkZW0gV2VydCBkZXMgRWludHJhZ3MuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5IaW53ZWlzOjwvc3Ryb25nPiBFcyB3aXJkIG51ciBkaWUgUmVpaGVuZm9sZ2UgZGVyIDxzdHJvbmc+YXVzZ2V3JmF1bWw7aGx0ZW48L3N0cm9uZz4gRWludHImYXVtbDtnZSBnZXNwZWljaGVydC4gQXVzZ2V3JmF1bWw7aGx0ZSBFaW50ciZhdW1sO2dlIHdlcmRlbiBpbW1lciBhbHMgZXJzdGVzIGFuZ2V6ZWlndC48YnIgLz4KCQkJCU5pY2h0IGF1c2dldyZhdW1sO2hsdGUgRWludHImYXVtbDtnZSBzdGVoZW4gZGFydW50ZXIgaW4gZGVyIFJlaWhlbmZvbGdlLCB3aWUgc2llIGltIFRlbXBsYXRlIGRlZmluaWVydCB3dXJkZW4uPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbWV0ZXIgZiZ1dW1sO3IgRGF0dW1zYmwmb3VtbDtja2U6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUJlZ2lubiBkZXIgU3R1bmRlbiBpbSBVaHJ6ZWl0LURyb3Bkb3duLiAoU3RhbmRhcmQgaXN0IDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVuZGUgZGVyIFN0dW5kZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzdCAxMiBvZGVyIDIzIC0gYWJoJmF1bWw7bmdpZyB2b20gUGFyYW1ldGVyIHNob3cyNGgpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgd2lyZCwgd2VyZGVuIGRpZSBTdHVuZGVuIGluIDEyaCBBbnplaWdlIG1pdCBBTS9QTSBhbmdlemVpZ3QuIChTdGFuZGFyZCBpcyB0cnVlKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJWiZhdW1sO2hsc2Nocml0dGUgZGVyIE1pbnV0ZW4gaW0gVWhyemVpdC1Ecm9wZG93bi4gKFN0YW5kYXJkIGlzIDEwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJQmVnaW5uIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgMCkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQlFbmRlIGRlciBNaW51dGVuIGltIFVocnplaXQtRHJvcGRvd24uIChTdGFuZGFyZCBpc3QgNTkpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVdlbm4gZGllc2VyIFdlcnQgYXVmIGZhbHNlIGdlc2V0enQgaXN0LCB3aXJkIGtlaW4gVWhyemVpdC1Ecm9wZG93biBhbmdlemVpZ3QuIChTdGFuZGFyZCBpc3QgdHJ1ZSk8YnIgLz4KCQkJCTxlbT48c3Ryb25nPkhpbndlaXM6PC9zdHJvbmc+IEJlaSBmYWxzZSB3aXJkIGFscyBVaHJ6ZWl0IDAwOjAwIFVociBnZXNwZWljaGVydDwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCURhcyBzdHJmdGltZSBEYXR1bXNmb3JtYXQgZiZ1dW1sO3IgZGllIEFuemVpZ2UgYXVmIGRlciBJbnRlcm5ldHNlaXRlLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtZXRlciBmJnV1bWw7ciAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PgoJCTx1bD4KCQkJPGxpPgoJCQkJRWluZSBMaXN0ZSB2b24gSW5wdXQtSURzLCBkaWUgaW4gZGVuIE1vZHVsZWluc3RlbGx1bmdlbiBlcnN0ZWxsdCB3dXJkZW4uIChtZWhyZXJlIFdlcnRlIG1pdCBLb21tYSBnZXRyZW5udCk8YnIgLz4KCQkJCUVzIGsmb3VtbDtubmVuIGRpZXNlbGJlbiBJRHMgbWVocmZhY2ggdmVyd2VuZGV0IHdlcmRlbi4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgCgkJPHVsPgoJCQk8bGk+CgkJCQlFaW4gVHJlbm56ZWljaGVuIGYmdXVtbDtyIGRpZSBlaW56ZWxuZW4gV2VydGUgZGVzIGpld2VpbGlnZW4gTXVsdGlJbnB1dHMuPGJyIC8+CgkJCQlTdGFuZGFyZCBpc3QgJnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tJmd0OyZxdW90OwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCUVpbiBUcmVubnplaWNoZW4gZiZ1dW1sO3IgZGllIGVpbnplbG5lbiBNdWx0aUlucHV0cy48YnIgLz4KCQkJCURlZmF1bHQgaXMgJnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxsaW1pdGVyIC0tJmd0OyZxdW90OwoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxwPjxzdHJvbmc+V2FzIGlzdCBlaW4gbXVsdGlfaW5wdXQ/PC9zdHJvbmc+PC9wPgoJCTxwPkVpbiBtdWx0aV9pbnB1dCBpc3QgZWluIEJsb2NrLCBkZXIgYXVzIG1laHJlcmVuIElucHV0ZmVsZGVybiBiZXN0ZWhlbiBrYW5uLjxiciAvPgoJCURpZXNlIGsmb3VtbDtubmVuIGluIGRlbiBNb2R1bGVpbnN0ZWxsdW5nZW4gZmVzdGdlbGVndCB3ZXJkZW4uIERhYmVpIGdpbHQgZiZ1dW1sO3IgamVkZW4gbXVsdGlfaW5wdXQgZGVyc2VsYmUgU3ludGF4IHdpZSBpbiBlaW5lbSBTZWl0ZW50ZW1wbGF0ZSBiZWltIEVyc3RlbGxlbiBlaW5lcyBJbmhhbHRzYmxvY2tzLjxiciAvPgoJCU11bHRpSW5wdXRzIGsmb3VtbDtubmVuIHZlcndlbmRldCB3ZXJkZW4sIHVtIHZlcnNjaGllZGVuZSBXZXJ0ZSBpbiBlaW5lbSBlaW56aWdlbiBJbmhhbHRzYmxvY2sgenUgc3BlaWNoZXJuLCB3b2JlaSBmJnV1bWw7ciBqZWRlbiBXZXJ0IHVudGVyc2NoaWVkbGljaGUgSW5wdXRmZWxkZXIgdmVyd2VuZGV0IHdlcmRlbiBrJm91bWw7bm5lbi48YnIgLz4KCQlEaWVzZSBCbCZvdW1sO2NrZSBrYW5uIG1hbiB6LkIuIHZlcndlbmRlbiwgdW0gZWluZSBMaXN0ZSBtaXQgTW9kdWxlbiB1bmQgenVnZWgmb3VtbDtyaWdlbiBQYXJhbWV0ZXJuIGFuenV6ZWlnZW4uPGJyIC8+CgkJQmVpc3BpZWwgZWluZXMgTXVsdGlJbnB1dHMgaW0gU2VpdGVudGVtcGxhdGU6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1NlaXRlbm1vZHVsZSZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9CgkJPC9jb2RlPgoJCTwvcHJlPgoJCTxwPkJlaXNwaWVsIGYmdXVtbDtyIGVpbmVuIE11bHRpSW5wdXQgZGVyICZ1dW1sO2JlciBkaWUgTW9kdWxlaW5zdGVsbHVuZyBlcnN0ZWxsdCB3ZXJkZW4ga2FubiAoTmFtZT0mcXVvdDttb2R1bGUmcXVvdDspOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5XaWUgc2llaHQgZGFzIG51biBiZWltIEJlYXJiZWl0ZW4gZWluZXIgU2VpdGUgYXVzPzwvcD4KCQk8cD5FcyB3aXJkIGVpbiBGaWVsZHNldCBtaXQgZGVyIExlZ2VuZGUgJnF1b3Q7U2VpdGVubW9kdWxlJnF1b3Q7IGFuZ2V6ZWlndC4gPGJyIC8+CgkJSW4gZGllc2VtIEZpZWxkc2V0IHdpcmQgZGVyIE11bHRpSW5wdXQgJnF1b3Q7bW9kdWxlJnF1b3Q7IHZpZXJtYWwgYW5nZXplaWd0LjxiciAvPgoJCUQuaC4gZXMgZ2lidCB2aWVyIFplaWxlbiBtaXQgamUgendlaSBJbnB1dGZlbGRlcm4uIEVpbiBEcm9wZG93biB1bmQgZWluIGVpbnplaWxpZ2VzIFRleHRpbnB1dC48L3A+CgkJPHA+V2FzIHdpcmQgZ2VzcGVpY2hlcnQ/PC9wPgoJCTxwPkRhcyBNb2R1bCBzcGVpY2hlcnQgZGllIFdlcnRlIGFscyBlaW5lbiBlaW56ZWxuZW4gSW5oYWx0c2Jsb2NrLiBEYWJlaSB3ZXJkZW4gZGllIGVpbnplbG5lbiBJbnB1dGZlbGRlciBtaXQgZGVtIGlucHV0X2RlbGltaXRlciB2b25laW5hbmRlciBnZXRyZW5udCB1bmQgZGVyZW4gV2VydCBtaXQgZGVtIGlucHV0X3ZhbHVlX2RlbGltaXRlci48YnIgLz4KCQlOZWhtZW4gd2lyIG1hbCBhbiwgZXMgd3VyZGUgZGFzIE5ld3Ntb2R1bCB2aWVybWFsIGF1c2dldyZhdW1sO2hsdCwgamVkb2NoIG1pdCB1bnRlcnNjaGllZGxpY2hlbiBQYXJhbWV0ZXJuIHdpZSB6LkIuIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+CgkJSW4gZGVyIERhdGVuYmFuayB3aXJkIGZvbGdlbmRlcyBmJnV1bWw7ciBkaWVzZW4gQmxvY2sgZ2VzcGVpY2hlcnQ6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIxIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMiImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjMiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSI0IgoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5JbSBTZWl0ZW50ZW1wbGF0ZSBrYW5uIG1hbiBudW4gZGVuIEluaGFsdCBkaWVzZXMgQmxvY2tzIGFuaGFuZCBkZXIgVHJlbm56ZWljaGVuIGF1ZnRlaWxlbiB1bmQgZGllIGF1c2dldyZhdW1sO2hsdGVuIE1vZHVsZSBpbmtsLiBpaHJlciBqZXdlaWxpZ2VuIFBhcmFtZXRlciBhdWZydWZlbi48L3A+CgkJPHA+S29tcGxldHRlcyBCZWlzcGllbDo8L3A+CgkJPHByZT4KCQk8Y29kZT4KCQl7KiBJbmhhbHRzYmxvY2sgZXJzdGVsbGVuIHVuZCBkZXIgVmFyaWFibGUgXCRtb2R1bGVzIHp1d2Vpc2VuICp9CgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bWVpbmVfc2VpdGVubW9kdWxlJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDsgaW5wdXRzPSZxdW90O01vZHVsZSxNb2R1bGUsTW9kdWxlLE1vZHVsZSZxdW90OyBhc3NpZ249JnF1b3Q7bW9kdWxlcyZxdW90O30KCQkKCQl7KiBJbmhhbHQgZGVyIFZhcmlhYmxlIFwkbW9kdWxlcyBpbiBlaW4gQXJyYXkgYXVmdGVpbGVuIHVuZCBpbiBkZXIgVmFyaWFibGUgXCRtb2R1bGVzIHNwZWljaGVybjsgc29taXQgaGFiZW4gd2lyIGRpZSBNdWx0aUlucHV0cyAqfQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9JnF1b3Q7Jmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7JnF1b3Q7fGV4cGxvZGU6XCRtb2R1bGVzfQoJCQoJCXsqIGplZGVuIE11bHRpSW5wdXQgZHVyY2hnZWhlbiAqfQoJCXtmb3JlYWNoIGZyb209XCRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQoJCQl7aWYgXCRtb2R1bGUgIT0gJyd9CgkJCQoJCQkJeyogZGllIFdlcnRlIGRlcyBNdWx0aUlucHV0cyBpbiBlaW4gQXJyYXkgYXVmdGVpbGVuOyBzb21pdCBoYWJlbiB3aXIgTW9kdWxuYW1lIHVuZCBQYXJhbWV0ZXIgKn0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0mcXVvdDsmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDsmcXVvdDt8ZXhwbG9kZTpcJG1vZHVsZX0KCQkJCQoJCQkJe2lmIFwkbW9kdWxlX2l0ZW1zWzBdICE9ICYjMDM5OyYjMDM5O30KCQkJCQoJCQkJCXsqIE1vZHVsIGF1ZnJ1ZmVuICp9CgkJCQkJe2lmIGlzc2V0KFwkbW9kdWxlX2l0ZW1zWzFdKX0KCQkJCQkJe2V2YWwgdmFyPVwkc21hcnR5LmxkZWxpbXxjYXQ6J2Ntc19tb2R1bGUgbW9kdWxlPSInfGNhdDpcJG1vZHVsZV9pdGVtc1swXXxjYXQ6JyIgJ3xjYXQ6XCRtb2R1bGVfaXRlbXNbMV18Y2F0Olwkc21hcnR5LnJkZWxpbX0KCQkJCQl7ZWxzZX0KCQkJCQkJe2V2YWwgdmFyPVwkc21hcnR5LmxkZWxpbXxjYXQ6J2Ntc19tb2R1bGUgbW9kdWxlPSInfGNhdDpcJG1vZHVsZV9pdGVtc1swXXxjYXQ6JyInfGNhdDpcJHNtYXJ0eS5yZGVsaW19CgkJCQkJey9pZn0KCQkJCQkKCQkJCXsvaWZ9CgkJCQkKCQkJey9pZn0KCQkKCQl7L2ZvcmVhY2h9CgkJPC9jb2RlPgoJCTwvcHJlPgoJPC9saT4KPC91bD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+RGllc2VzIE1vZHVsIGJpZXRldCBrZWluZSBrb21tZXJ6aWVsbGUgVW50ZXJzdCZ1dW1sO3R6dW5nLiBFcyBnaWJ0IGplZG9jaCBlaW5pZ2UgTSZvdW1sO2dsaWNoa2VpdGVuLCBIaWxmZSB6dSBmaW5kZW46PC9wPgo8dWw+Cgk8bGk+RGllIEhvbXBhZ2UgZGVzIFByb2pla3RlcyBpc3QgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+Cgk8bGk+V2VpdGVyZSBEaXNrdXNzaW9uZW4gZ2lidCBlcyBhdcOfZXJkZW0gaW4gZGVuIENNUyBNYWRlIFNpbXBsZSBGb3Jlbjo8YnIgLz4KCTxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLmRlIj5odHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZTwvYT48YnIgLz4KCTxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnPC9hPjwvbGk+CjwvdWw+CjxiciAvPgo8cD5CaXR0ZSBtZWxkZW4gU2llIEZlaGxlciBvZGVyIFZlcmJlc3NlcnVuZ3N2b3JzY2hsJmF1bWw7Z2UgYXVmIGRlciBQcm9qZWN0IEhvbWVwYWdlLjwvcD4KPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLTIwMTEsIEdlb3JnIEJ1c2NoIChOYU4pIDxhIGhyZWY9Im1haWx0bzpnZW9yZy5idXNjaEBnbXgubmV0Ij4mbHQ7Z2VvcmcuYnVzY2hAZ214Lm5ldCZndDs8L2E+LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+CjxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPgo8cD4KCUxhdXQgZGVuIE51dHp1bmdzYmVzdGltbXVuZ2VuIGRlciBHUEwgd2lyZCBkaWVzZSBTb2Z0d2FyZSBzbyB2ZXImb3VtbDtmZmVudGxpY2h0IHdpZSBzaWUgaXN0LjxiciAvPgoJU2llIGVyaGVidCBrZWluZXJsZWkgQW5zcHJ1Y2ggYXVmIGVpbndhbmRmcmVpZSBGdW5rdGlvbi48YnIgLz4KCURhcyBNb2R1bCB3dXJkZSBlcnN0ZWxsdCwgaW4gZGVyIEhvZmZudW5nIG4mdXVtbDt0emxpY2ggenUgc2Vpbi48YnIgLz4KCUVzIGJlc3RlaHQga2VpbmVybGVpIEdhcmFudGllIGF1ZiBlaW5lbiBlaW53YW5kZnJlaWVuIE51dHplbi48YnIgLz4KCUJpdHRlIGxlc2VuIFNpZSBkaWUgTnV0enVuZ3NiZWRpbmd1bmdlbiBmJnV1bWw7ciBhdXNmJnV1bWw7aHJsaWNoZSBJbmZvcm1hdGlvbmVuLgo8L3A+CjxiciAvPgpFT1Q7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PEVPVAo8YnIgLz4KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+Cjx1bD4KCTxsaT48cD48c3Ryb25nPjAuNi4zIChNYXIgMjAxMSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBbIzU3MzRdIFBhcmFtZXRlciBibG9ja19ncm91cCBpcyBub3Qga25vd24gYnkgbW9kdWxlIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAxNF0gaGVhZGVyIHByb2JsZW0gd2l0aCBtdWx0aS1pbnB1dDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOF0gY29udGVudF9pbWFnZSByZXNwZWN0aXZlbHkgYmxvY2tfdHlwZT0iaW1hZ2UiIGRvZXNuJ3Qgd29yazwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjAzOV0gdGVtcGxhdGUgY2FuJ3QgYmUgc3dpdGNoZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwNjFdIGlzc3VlIHdpdGggdGhlIHJlZGlyZWN0IGZvciBmZXUgbm9uIG1hdGNoPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDk1XSBQYXJhbWV0ZXIgc29ydGFibGUgaXMgbm90IGtub3duIDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBpdGVtICM1NjUxIChyZWRpcmVjdCBpZiBmcm9udGVuZCB1c2VyIGhhcyBubyBhY2NlcyB0byB0aGF0IHBhZ2UgZGlkIG5vdCB3b3JrIHByb3Blcmx5KTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlcXVpcmVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gY29sbGFwc2U8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBub19jb2xsYXBzZTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHRoaXMgbW9kdWxlIG5vdyBvbmx5IHdvcmtzIHdpdGggQ01TbXMgMS42LjkgdXAgdG8gMS44LjI8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBSZW1vdmVkIGZpbGUgcGlja2VyIChhbmQgYXNzb2NpYXRlZCBibG9ja190eXBlcyBpbWFnZS9maWxlKSAtIHVzZSBHQkZpbGVQaWNrZXIgaW5zdGVhZC48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyOTIgKG1lbW9yeSBpc3N1ZSk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzExIChpbWFnZSBwYXRocyBub3Qgc3RvcmVkICdjb3JyZWN0bHknKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjYxIChBZGQgc29ydCB0byBpbWFnZSB0eXBlIC0gbm90aWNlIHRoZSBjaGFuZ2Ugb2YgcGFyYW0gZmlsdGVyKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQwIChEZWZhdWx0IHZhbHVlcyBvZiBBZHZhbmNlZENvbnRlbnQgcGFnZSBvcHRpb25zKTwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgYXJlIHNob3duIGluIHNlcGFyYXRlIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcGF0aCB0byBmaWxlcyBhcmUgc3RvcmVkIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQuMSAoQXVndXN0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzIiBvcGVuIGFuIGFkdmFuY2VkIGNvbnRlbnQgcGFnZSBhbmQgbXVsdGlwbGUgY29udGVudCBibG9ja3Mgb2Ygc2FtZSBuYW1lIHdlcmUgdXNlZCBpbiB0ZW1wbGF0ZS48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlbGV0ZSIgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiY3JlYXRlX2RpcnMiIHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICJub3RlIiB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGJsb2NrIHR5cGUgaW1hZ2Ugc2hvd3MgdGh1bWJuYWlsIGluIGJhY2tlbmQgcHJldmlldyBpbnN0ZWFkIG9mIGZ1bGwgaW1hZ2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGNoYW5nZWQgcGFyYW0gInR5cGUiIHRvICJibG9ja190eXBlIiBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICJvcHRpb25zIiB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwOTc6IGxpbmsgdG8gbWlzc2luZyBjc3MgcmVtb3ZlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggQ01TbXMgMS44PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgTUxFIHN1cHBvcnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic2hvd19jbG9jayIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gYmFja2VuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkYXRlX2Zvcm1hdCIgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICJkYXRlIiBpbiBmcm9udGVuZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZXNjcmlwdGlvbiI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICJNYW5hZ2UgQWxsIENvbnRlbnQiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gImFsbG93X25vbmUiIG9mIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZSB3YXMgbm90IHNob3duIHdoZW4gdGVtcGxhdGUgaGFzIGJlZW4gZWRpdGVkPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGJyZWFkY3VtYnMgdG8gZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHJhd3VybGVuY29kZSBpbiBzcmMgYXR0cmlicyB0byBkaXNwbGF5IGltYWdlcyB3aXRoIHdlaXJkIGZpbGVuYW1lcy48L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5taXNjZWxsYW5lb3VzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIGFqYXggZnVuY3Rpb25zIHRvIHJldHVybiB4bWwgdmFsdWVzPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjMgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPgoJPHVsPgoJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPgoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQk8L3VsPgoJCTwvbGk+CgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJPHVsPgoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4KCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9pbWFnZX08L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJPC91bD4KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBjaGFuZ2luZyBiYWNrIHRvIGRlZmF1bHQgY29udGVudCB0eXBlIG9yIGNoYW5naW5nIHRlbXBsYXRlIGNhdXNlZCBmYXRhbCBlcnJvcnM8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPgoJCQk8bGk+PHA+LSByZS1hZGRlZCBleHBhbmQvY29sbGFwc2UgYnV0dG9uIHRvIHRvZ2dsZSBjb250ZW50IGJsb2NrcyBpbiBiYWNrZW5kPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJsb2NrIGlkcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIGJsb2NrIG5hbWUgdXNpbmcgY29yZSBmdW5jdGlvbiBtdW5nZV9zdHJpbmdfdG9fdXJsICh0byByZW1vdmUgc3BlY2lhbCBjaGFycywgd2hpdGVzcGFjZXMsIHVtbGF1dHMgZXRjLik8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gInZhbHVlcyIgaXMgdXNlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiBcJHBhZ2VfYWxpYXMpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJhbGxvd19ub25lIiB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZGVmYXVsdCB2YWx1ZSBpbiBmcm9udGVuZCB3YXMgaWdub3JlZCBpZiB0aGUgImFsbG93X25vbmUiIHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic29ydGFibGVfaXRlbXMiIHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uJ3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBkdXBsaWNhdGUgY29udGVudCBibG9ja3M8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSByZXdyaXRlIGNvZGU8L3A+PC9saT4KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gdXNpbmcgc2VwYXJhdGUgbW9kdWxlIHRlbXBsYXRlIG5vdyB0byBkc3BsYXkgY29udGVudCBibG9ja3M8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+Cjx1bD4KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMyAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICI7IiBhbmQgc3RyYW5nZSBpbnZpc2libGUgaW52YWxpZCBjaGFycyk8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMiAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAiZGVsaW1pdGVyIjwvcD48L2xpPgoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICJTaG93IGxvZ2luIGZvcm0iPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgIm1lbWJlcnMiIGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAiaW5oZXJpdCBwYWdlIGFsaWFzIiBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggIm1lbWJlcnNfIjsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICJleGNsdWRlcHJlZmZpeCIgb3IgImluY2x1ZGVwcmVmZml4IiBlYXNpZXIuPC9wPjwvbGk+CgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IAoJCTwvdWw+Cgk8L2xpPgoJPGxpPgoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPgoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4KPHVsPgoJPGxpPgoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBsYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+CgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+CjxiciAvPgpFT1Q7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddICAgICAgICAgICAgICAgID0gIkFkdmFuY2VkIENvbnRlbnQiOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSAgICAgICAgPSAiQWR2YW5jZWQgT3B0aW9ucyI7CiRsYW5nWydpbnN0YWxsZWQnXSAgICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxlZCI7CiRsYW5nWyd1bmluc3RhbGxlZCddICAgICAgICAgICAgICAgICAgICA9ICJNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkIjsKJGxhbmdbJ3VwZ3JhZGVkJ10gICAgICAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgdXBncmFkZWQgdG8gJXMiOwokbGFuZ1sncG9zdGluc3RhbGwnXSAgICAgICAgICAgICAgICAgICAgPSAiTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQuIjsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSAgICAgICAgICAgICAgICAgID0gIk1vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgdW5pbnN0YWxsZWQuIjsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSAgICAgICAgICAgICAgID0gIkRvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/IjsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhpcyBibG9jayBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRlbXBsYXRlLiBZb3Ugb25seSBzZWUgdGhlIGZpcnN0IGJsb2NrIGhlcmUuPC9lbT4iOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSAgICAgICAgICAgICAgPSAiPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAnJXMnIGFzIHZhbHVlIG9mIHBhcmFtICdibG9jaycuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZSBhbmQgY2hvc2UgYSBkaWZmZXJlbnQgdmFsdWUgb2YgcGFyYW0gJ2Jsb2NrJy48L2VtPiI7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gICAgICAgICAgICAgICA9ICJFbmQgZGF0ZSBtdXN0IGJlIGxhdGVyIHRoYW4gc3RhcnQgZGF0ZS4iOwokbGFuZ1sneW91YXJlaW50ZXh0J10gICAgICAgICAgICAgICAgICAgPSAiQ3VycmVudCBkaXJlY3RvcnkiOwokbGFuZ1snZGltZW5zaW9ucyddICAgICAgICAgICAgICAgICAgICAgPSAiSW1hZ2VzaXplIjsKJGxhbmdbJ3NpemUnXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIkZpbGVzaXplIjsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSAgICAgICAgICAgID0gIkluaGVyaXQgZnJvbSBwYXJlbnQiOwokbGFuZ1snbm9uZSddICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAibm9uZSI7CiRsYW5nWydpbnZhbGlkJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICJpbnZhbGlkIjsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gICAgICAgICAgICAgID0gIjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSW52YWxpZCB2YWx1ZSAnJXMnIG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJyVzJy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4iOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAiPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJyVzJyBmb3IgYmxvY2sgJyVzJy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+IjsKJGxhbmdbJ3llcyddICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gIlllcyI7CiRsYW5nWydubyddICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJObyI7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddICAgICAgICAgICAgICAgICA9ICJGcm9udGVuZCBhY2Nlc3MiOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gICAgICAgICAgICAgICAgICAgPSAiUmVkaXJlY3QgUGFnZSBpZiBubyBhY2Nlc3MiOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddICAgICAgICAgICAgICAgICAgPSAiU2hvdyBsb2dpbiBmb3JtIjsKJGxhbmdbJ3JlZ2lzdGVyZWR1c2VycyddICAgICAgICAgICAgICAgID0gIlJlZ2lzdGVyZWQgdXNlcnMgb25seSI7CiRsYW5nWydibG9jayddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICJCbG9jayI7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gICAgICAgICAgICAgICAgICA9ICJVc2UgZXhwaXJlIGRhdGUiOwokbGFuZ1snc3RhcnRkYXRlJ10gICAgICAgICAgICAgICAgICAgICAgPSAiU3RhcnQgRGF0ZSI7CiRsYW5nWydlbmRkYXRlJ10gICAgICAgICAgICAgICAgICAgICAgICA9ICJFbmQgRGF0ZSI7CiRsYW5nWydibG9ja2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICA9ICJCbG9jayBDb250ZW50IjsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddICAgICAgICAgICAgICAgID0gIlNldCBQYWdlIHRvIEluYWN0aXZlIjsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSAgICAgICAgICAgICAgICAgICAgID0gIkRlbGV0ZSBQYWdlIjsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddICAgICAgICAgICAgICAgID0gIlVuaW5zdGFsbCBhY3Rpb24iOwokbGFuZ1snc2V0Y29udGVudDEnXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQiOwokbGFuZ1snc2V0Y29udGVudDInXSAgICAgICAgICAgICAgICAgICAgPSAiU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzIjsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddICAgICAgICAgICAgICAgICAgID0gIlByZWZlcmVuY2VzIHVwZGF0ZWQiOwokbGFuZ1snc3VjY2VzcyddICAgICAgICAgICAgICAgICAgICAgICAgPSAiT2siOwokbGFuZ1snZXJyb3InXSAgICAgICAgICAgICAgICAgICAgICAgICAgPSAiRXJyb3IiOwokbGFuZ1snZGVsZXRlcGFnZXMnXSAgICAgICAgICAgICAgICAgICAgPSAiRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCI7CiRsYW5nWydpbXBvcnRwYWdlcyddICAgICAgICAgICAgICAgICAgICA9ICJTZXQgYWxsIFBhZ2VzIG9mIHR5cGUgJXMgdG8gdHlwZSAlcy4iOwokbGFuZ1snY29uZmlybWltcG9ydCddICAgICAgICAgICAgICAgICAgPSAiRG8geW91IHJlYWxseSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudCB0eXBlIG9mIGFsbCBjb250ZW50IHBhZ2VzPyI7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddICAgICAgICAgICAgICAgICA9ICJIaWRlIHRoaXMgbWVzc2FnZSI7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSAgICAgICAgICAgICAgICA9ICJEZWZhdWx0IEFkdmFuY2VkQ29udGVudCBzZXR0aW5ncyI7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddICAgICAgICAgICAgICAgICA9ICJVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nIjsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gICAgICAgICAgICAgICAgID0gIlVzZSBzbWFydHkgdG8gcHJvY2VzcyB0aGUgcGFyYW1zIjsKJGxhbmdbJ2Vycm9yX2xvYWRpbmdfbW9kdWxlJ10gICAgICAgICAgID0gIjxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJyVzJy4gKERlZmluZWQgZm9yIGJsb2NrICclcycgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPiI7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddICAgICA9ICI8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gTW9kdWxlICclcycgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJyVzJyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+IjsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSAgICAgICAgICAgID0gIkFsbCBwYWdlcyBvZiB0eXBlICVzIHN1Y2Nlc2Z1bGx5IGNoYW5nZWQgdG8gJXMiOwokbGFuZ1snc2hvd19hZHZhbmNlZGNvbnRlbnRfb3B0aW9ucyddICAgPSAiU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWIiOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddICAgICAgICAgICAgICAgPSAiJXMgZGlzcGxheSBzZXR0aW5ncyI7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddICAgICAgICAgICA9ICJTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyI7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrcyI7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gICAgICAgICAgICAgICAgICA9ICJjb250ZW50IGJsb2NrIG1lc3NhZ2UiOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gICAgICAgICAgICAgICAgICAgPSAiYmxvY2sgZ3JvdXBzIjsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSAgICAgICAgICAgICAgID0gIkNvbGxhcHNlICVzIGJ5IGRlZmF1bHQiOwokbGFuZ1sncGVyX3BhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgPSAicGVyIHBhZ2UiOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gICAgICAgICAgICAgICAgICAgPSAicGVyIHRlbXBsYXRlIjsKJGxhbmdbJ2JvdGgxJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIE9SIHBhZ2UgIjsKJGxhbmdbJ2JvdGgyJ10gICAgICAgICAgICAgICAgICAgICAgICAgID0gInRlbXBsYXRlIEFORCBwYWdlIjsKJGxhbmdbJ2NvbnRlbnQnXSAgICAgICAgICAgICAgICAgICAgICAgID0gJ0NvbnRlbnQnOwokbGFuZ1snY29udGVudDInXSAgICAgICAgICAgICAgICAgICAgICAgPSAnQWR2YW5jZWQgQ29udGVudCc7CiRsYW5nWydwcmVmcyddICAgICAgICAgICAgICAgICAgICAgICAgICA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgICAgICA9ICdNdWx0aSBJbnB1dHMnOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsJ10gICAgICAgICAgICAgICAgPSAnTXVsdGkgSW5wdXQgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dCddICAgICAgICAgICAgICAgID0gJ0FkZCBuZXcgbXVsdGkgaW5wdXQnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddICAgICAgICAgICAgPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddICAgICAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBJRCc7CiRsYW5nWydpbnB1dF9maWVsZHMnXSAgICAgICAgICAgICAgICAgICA9ICdJbnB1dCBmaWVsZHMnOwokbGFuZ1sndHBsX25hbWUnXSAgICAgICAgICAgICAgICAgICAgICAgPSAnVGVtcGxhdGUgbmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddICAgICAgICAgICAgICAgICA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddICAgICAgICAgICAgID0gIklucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5LiI7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddICAgICAgICAgICAgICAgICA9ICJObyBpbnB1dCBpZCBnaXZlbiBvciBpbnB1dCBpZCBhbHJlYWR5IGV4aXN0cy4iOwokbGFuZ1snZXJyb3JfaW5wdXRfaWRfZXhpc3RzJ10gICAgICAgICAgPSAiSW5wdXQgSUQgaXMgYWxyZWFkeSBpbiB1c2UuIENob29zZSBhIGRpZmZlcmVudCBvbmUuIChtdXN0IGJlIHVuaXF1ZSkiOwokbGFuZ1snbXVsdGlfaW5wdXRfYWRkZWQnXSAgICAgICAgICAgICAgPSAiTXVsdGkgSW5wdXQgYWRkZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IGRlbGV0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3VwZGF0ZWQnXSAgICAgICAgICAgID0gIk11bHRpIElucHV0IHVwZGF0ZWQuIjsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddICAgICAgICAgID0gIk11bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSB1cGRhdGVkLiI7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddICAgICAgICA9ICJNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLiI7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSAgICAgICAgICAgICAgICA9ICJEZWxldGUgc2VsZWN0ZWQgaXRlbXMiOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSAgICAgICAgICAgICAgICAgPSAiRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGlzIGl0ZW0/IjsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gICAgICAgID0gIkRvIHlvdSByZWFsbHkgd2FudCBkbyBkZWxldGUgdGhlIHNlbGVjdGVkIGl0ZW1zPyI7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gICAgICAgICAgICAgICAgICA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPgo8cD48cHJlPjxjb2RlPntcJGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4KRWFjaCBpbnB1dCBlbGVtZW50IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGl0cyBwYXJhbXMuIDxiciAvPgpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4KQWRkaXRpb25hbCBwYXJhbSBpcyAiaW5wdXQiIHRoYXQgd2lsbCBwcmludCBvdXQgdGhlIGlucHV0IGVsZW1lbnQuPGJyIC8+ClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4KRXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+e2ZvcmVhY2ggZnJvbT0kaW5wdXRzIGl0ZW09ZWxtfQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fSZsdDticiAvJmd0Owp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSA8PDxFT1QKPGJyIC8+CjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPgo8cD5UaGlzIGlzIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSAiQ29udGVudCIgb2YgQ01TbXMuPGJyIC8+Ckl0IHByb3ZpZGVzIG1vcmUgZmxleGliaWxpdHkgYnkgY3JlYXRpbmcgY3VzdG9tIGlucHV0IGNvbnRyb2xzIGluIGJhY2tlbmQuPGJyIC8+ClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIAppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgCnVzaW5nIGFkZGl0aW9uYWwgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZSB3aGVuIGNhbGxpbmcgdGhlIGNvbnRlbnQuPGJyIC8+Ckl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSAKRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIApGcm9udEVuZFVzZXJzIG1vZHVsZSBvciByZWRpcmVjdCB0byBhIHNwZWNpZmllZCBwYWdlIHNob3dpbmcgdGhlIGxvZ2luIGZvcm0gb3IgCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPgpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgCnBhcmVudCBwYWdlcy48L3A+CjxwPllvdSBjYW4gZXZlbiB1c2Ugc21hcnR5IGxvZ2ljIGluIHBhcmFtZXRlciB2YWx1ZXMuIFRoYXQgbWVhbnMgeW91IGNhbiB1c2UgdGhlIApyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+CjxoMz5Ib3cgaXMgaXQgdXNlZD88L2gzPgo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gIkV4dGVuc2lvbnMtPkFkdmFuY2VkQ29udGVudCIuPC9wPgo8cD5BZGRpdGlvbmFsbHkgeW91IHdpbGwgaGF2ZSBhIG5ldyBjb250ZW50IHR5cGUgIkFkdmFuY2VkQ29udGVudCIgYXZhaWxhYmxlIAp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4KPHA+QWRkIHRoZSBmb2xsb3dpbmcgcGFyYW1zIHRvIHlvdXIgY29udGVudCB0YWcgaW4geW91ciBwYWdlIHRlbXBsYXRlLCAKY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICJBZHZhbmNlZENvbnRlbnQiIGFuZCBzZWUgd2hhdCBoYXBwZW5zIAppbiBiYWNrZW5kLi4uPC9wPgo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+CjxwPjxzdHJvbmc+RGVmYXVsdCBwYXJhbXM6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2s8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPgoJCQkJQWxsb3dzIHlvdSB0byBoYXZlIG1vcmUgdGhhbiBvbmUgY29udGVudCBibG9jayBwZXIgcGFnZS4gSWYgbXVsdGlwbGUgY29udGVudCB0YWdzIGFyZSBwdXQgb24gYSB0ZW1wbGF0ZSwgdGhhdCBudW1iZXIgb2YgZWRpdCBib3hlcyB3aWxsIGJlIGRpc3BsYXllZCBpZiB0aGUgcGFnZSBpcyBlZGl0ZWQuPGJyIC8+CgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0iU2Vjb25kIENvbnRlbnQgYmxvY2sifTwvY29kZT48YnIgLz4KCQkJCU5vdywgaWYgeW91IGVkaXQgYSBwYWdlIHRoZXJlIHdpbGwgYmEgYSB0ZXh0YXJlYSBjYWxsZWQgIlNlY29uZCBDb250ZW50IGJsb2NrIi48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgbWF5IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKG5vIHdoaXRlc3BhY2VzLCBzcGVjaWFsIGNoYXJzLCB1bWxhdXRzIGV0Yy4pLiBPdGhlcndpc2UgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBwcm9wZXIgbmFtZSAoc2ltaWxhciB0byB0aGUgcGFnZSBhbGlhcykuPC9lbT4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPklmIHNldCB0byB0cnVlLCB0aGVuIG9ubHkgb25lIGVkaXQgbGluZSB3aWxsIGJlIHNob3duIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgZmFsc2UsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuIE9ubHkgd29ya3Mgd2hlbiBibG9jayBwYXJhbWV0ZXIgaXMgdXNlZC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkRlZmF1bHQgY29udGVudCB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUFzc2lnbnMgdGhlIGNvbnRlbnQgdG8gYSBzbWFydHkgcGFyYW1ldGVyLCB3aGljaCB5b3UgY2FuIHRoZW4gdXNlIGluIG90aGVyIGFyZWFzIG9mIHRoZSBwYWdlLCBvciB1c2UgdG8gdGVzdCB3aGV0aGVyIGNvbnRlbnQgZXhpc3RzIGluIGl0IG9yIG5vdC48YnIgLz4KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPgoJCQkJPGNvZGU+e2NvbnRlbnQgYXNzaWduPXBhZ2Vjb250ZW50fTxiciAvPgoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSJcJHBhZ2Vjb250ZW50In08L2NvZGU+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCkgCgkJPHVsPgoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPgoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAibWFpbiIgKCA9IFRhYiAiTWFpbiBNZW51IiksICJvcHRpb25zIiAoID0gVGFiICJPcHRpb25zIiksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4KCQkJCTxlbT5lLmcuIHlvdSBjYW4gYWRkIGEgY2hlY2tib3ggdG8gdGhlIG9wdGlvbnMgdGFiIG9yIGNyZWF0ZSBuZXcgdGFiczwvZW0+LgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCBtdWx0aXBsZSBibG9ja3MgY2FuIGJlIGdyb3VwZWQgaW4gYSBmaWVsZHNldC4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJ3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykKCQk8dWw+CgkJCTxsaT4KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlIHBhcmFtcyA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gYW5kIDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gYXJlIGVtcHR5IHRoZSBibG9jayBtYXkgYmUgZWRpdGVkIGJ5IGFueSB1c2VyIHdpdGggc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIGVkaXQgYSBwYWdlPC9lbT48YnIgLz48YnIgLz4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4KCQk8dWw+CgkJCTxsaT4KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPgoJCQkJVGhpcyBzaG93cyB0aGUgY29udGVudCBibG9jayBvbmx5IHRvIGNlcnRhaW4gZmV1IGdyb3Vwcy48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWN0aW9uPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlTcGVjaWZ5IGlmIHRoZSBsb2dpbiBmb3JtIG9mIHRoZSBmZXUgbW9kdWxlIHdpbGwgYmUgc2hvd24gb3Igbm90LjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+CgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICJkZWZhdWx0IiB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAibm9uZSIgKG1vZGU9ImRyb3Bkb3duIikgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9ImZpbGVwaWNrZXIiKSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPgoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPgoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOiA8L3N0cm9uZz4gQ29uc2lkZXIgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+CgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+CgkJCQlFLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0iQ2F0ZWdvcmllcyIgbGFiZWw9IlNlbGVjdCBhIGNhdGVnb3J5IiBibG9ja190eXBlPSJkcm9wZG93biIgaXRlbXM9Ijo6Omdsb2JhbF9jb250ZW50IG5hbWU9J2NhdGVnb3J5bGlzdCc6OjoiIHNtYXJ0eT0idHJ1ZSJ9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgCgkJPHVsPgoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5jb2xsYXBzZTwvdHQ+ICh0cnVlL2ZhbHNlKQoJCTx1bD4KCQkJPGxpPgoJCQkJU2V0IHRvIHRydWUvZmFsc2UgdG8gZGlzcGxheSBibG9jayBpbiBiYWNrZW5kIGluIGNvbGxhcHNlZC9leHBhbmRlZCBtb2RlIGJ5IGRlZmF1bHQuPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgc2V0IHRvIHRydWUgcGFyYW0gY29sbGFwc2UgaXMgYWx3YXlzIGZhbHNlLjwvZW0+PGJyIC8+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkKCQk8dWw+CgkJCTxsaT4KCQkJCVNldCB0byB0cnVlIGlmIHRoaXMgYmxvY2sgbWF5IG5vdCBiZSBlbXB0eS48YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KPC91bD4KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJjaGVja2JveCI6PC9zdHJvbmc+PC9wPgo8dWw+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCWNoZWNrcy91bmNoZWNrcyB0aGUgY2hlY2tib3ggYnkgZGVmYXVsdCB3aGVuIGFkZGluZyBhIHBhZ2U8YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICIxIiBmb3IgY2hlY2tlZCBhbmQgIjAiIGZvciB1bmNoZWNrZWQgYnkgZGVmYXVsdDxiciAvPjwvZW0+CgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9ImNoZWNrYm94IiBkZWZhdWx0PTF9PC9jb2RlPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRyb3Bkb3duIi8ic2VsZWN0X211bHRpcGxlIjo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+SXRlbSBsYWJlbChzKSBvZiB0aGUgZmllbGQocykgKHNlcGFyYXRlZCBieSBhIGRlbGltaXRlciAtIGRlZmF1bHQgaXMgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpCgkJPHVsPgoJCQk8bGk+CgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4KCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQoJCTx1bD4KCQkJPGxpPkEgc2lnbiBvciBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGV2aWRlIHRoZSBpdGVtcy92YWx1ZXMgKGRlZmF1bHQgaXMgfCAocGlwZSkpPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpCgkJPHVsPgoJCQk8bGk+SGVpZ2h0IG9mIGNvbnRlbnQgYmxvY2sgaW4gYmFjayBlbmQgaWYgPGNvZGU+YmxvY2tfdHlwZT0ic2VsZWN0X211bHRpcGxlIjwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5CgkJPHVsPgoJCQk8bGk+CgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uJ3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gb25seSB0aGUgb3JkZXIgb2YgdGhlIDxzdHJvbmc+c2VsZWN0ZWQ8L3N0cm9uZz4gaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIGFsd2F5cyBkaXNwbGF5ZWQgb24gdGhlIHRvcCBvZiB0aGUgbGlzdCB3aGVuIHJlbG9hZGluZyB0aGUgZWRpdCBwYWdlLjxiciAvPgoJCQkJVW5zZWxlY3RlZCBpdGVtcyB3aWxsIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGU8L2VtPgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpCgkJPHVsPgoJCQk8bGk+CgkJCQlUaGUgZGVmYXVsdCBkaXNwbGF5IG9mIHRoZSBibG9jayBpbiBiYWNrZW5kLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRhdGUiOjwvc3Ryb25nPjwvcD4KPHVsPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkKCQkJPC9saT4KCQk8L3VsPgoJCTxiciAvPgoJPC9saT4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgCgkJPHVsPgoJCQk8bGk+CgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSAKCQk8dWw+CgkJCTxsaT4KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSAKCQk8dWw+CgkJCTxsaT4KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX21pbnV0ZTwvdHQ+IChpbnQpIAoJCTx1bD4KCQkJPGxpPgoJCQkJdGhlIGVuZCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDU5KQoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3dfY2xvY2s8L3R0PiAodHJ1ZS9mYWxzZSkgCgkJPHVsPgoJCQk8bGk+CgkJCQlzZXQgdG8gZmFsc2UgaWYgbm8gdGltZSBkcm9wZG93biBzaG91bGQgYmUgZGlzcGxheWVkIChkZWZhdWx0IGlzIHRydWUpPGJyIC8+CgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvJ2Nsb2NrIHdpbGwgYmUgdXNlZDwvZW0+CgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRoZSBzdHJmdGltZSBkYXRlIGZvcm1hdCB0byBzaG93IGluIGZyb250ZW5kLgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgo8L3VsPgo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgIm11bHRpX2lucHV0Ijo8L3N0cm9uZz48L3A+Cjx1bD4KCTxsaT4KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PiAoY3N2IG9mIGlucHV0IGlkcyB5b3UgY3JlYXRlZCBpbiB0aGUgYmFja2VuZCkgCgkJPGJyIC8+PGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnZhbHVlX2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIHZhbHVlcyBvZiB0aGUgaW5wdXRzIG9mIG9uZSBtdWx0aV9pbnB1dCB3aGVuIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuPGJyIC8+CgkJCQlEZWZhdWx0IGlzICImbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0mZ3Q7IgoJCQk8L2xpPgoJCTwvdWw+CgkJPGJyIC8+Cgk8L2xpPgoJPGxpPgoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSAKCQk8dWw+CgkJCTxsaT4KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4KCQkJCURlZmF1bHQgaXMgIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLSZndDsiCgkJCTwvbGk+CgkJPC91bD4KCQk8YnIgLz4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz5XaGF0IGlzIGEgbXVsdGlfaW5wdXQgZm9yPzwvc3Ryb25nPjwvcD4KCQk8cD5BIG11bHRpX2lucHV0IGJsb2NrIGlzIGEgY29udGVudCBibG9jayB0aGF0IGNvbnNpc3RzIG9mIGRpZmZlcmVudCBpbnB1dCBmaWVsZHMuIDxiciAvPgoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPgoJCU11bHRpIGlucHV0cyBjYW4gYmUgdXNlZCBpZiB5b3Ugd2FudCB0byBzdG9yZSBkaWZmZXJlbnQgdmFsdWVzIGluIG9uZSBjb250ZW50IGJsb2NrIGFuZCBwcm92aWRlIGRpZmZlcmVudCBpbnB1dCB0eXBlcyBmb3IgZWFjaCB2YWx1ZXMuPGJyIC8+CgkJVGhpcyBjYW4gYmUgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBkcm9wZG93biB0byBzZWxlY3QgYSBtb2R1bGUgdG8gYmUgc2hvd24gaW4gZnJvbnRlbmQgYW5kIHRleHQgaW5wdXQgdG8gZGVmaW5lIHRoZSBtb2R1bGUgcGFyYW1ldGVycy48YnIgLz4KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJe2NvbnRlbnQgYmxvY2s9Im1vZHVsZSIgbGFiZWw9IlBhZ2UgbW9kdWxlcyIgYmxvY2tfdHlwZT0ibXVsdGlfaW5wdXQiIGlucHV0cz0ibW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlIn0KCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+RXhhbXBsZSBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhlIG11bHRpX2lucHV0IG5hbWVkICJtb2R1bGUiOjwvcD4KCQk8cHJlPgoJCTxjb2RlPgoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgc2VsZWN0aW9uIiBibG9ja190eXBlPSJkcm9wZG93biIgaXRlbXM9InxOZXdzfEdhbGxlcnl8TWVudSJ9CgkJe2NvbnRlbnQgYmxvY2s9Im1vZHVsZSBwYXJhbXMiIGJsb2NrX3R5cGU9InRleHQiIG9uZWxpbmU9dHJ1ZX0KCQk8L2NvZGU+CgkJPC9wcmU+CgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBlZGl0IGEgcGFnZT88L3A+CgkJPHA+SXQgd2lsbCBzaG93IHlvdSBhIGZpZWxkc2V0IHdpdGggbGVnZW5kICJQYWdlIG1vZHVsZXMiLiA8YnIgLz4KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgIm1vZHVsZSIgZm91ciB0aW1lcy48YnIgLz4KCQlUaGF0IG1lYW5zIHlvdSBzZWUgZm91ciBsaW5lcyB3aXRoIHR3byBpbnB1dCBmaWVsZHMuIEEgZHJvcGRvd24gYW5kIGEgdGV4dCBpbnB1dC48L3A+CgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBzYXZlIGEgcGFnZT88L3A+CgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4KCQlMZXQncyBhc3N1bWUgeW91IHNlbGVjdCB0aGUgTmV3cyBtb2R1bGUgZm91ciB0aW1lcyB3aXRoIGRpZmZlcmVudCBtb2R1bGUgcGFyYW1zIGxpa2UgY2F0ZWdvcnk9IjEiLCBjYXRlZ29yeT0iMiIsIGNhdGVnb3J5PSIzIiwgY2F0ZWdvcnk9IjQiLjxiciAvPgoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSIxIiZsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmd0OzxiciAvPgoJCU5ld3MmbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDtjYXRlZ29yeT0iMiImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDs8YnIgLz4KCQlOZXdzJmx0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mZ3Q7Y2F0ZWdvcnk9IjMiJmx0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mZ3Q7PGJyIC8+CgkJTmV3cyZsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmd0O2NhdGVnb3J5PSI0IgoJCTwvY29kZT4KCQk8L3ByZT4KCQk8cD5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiBleHBsb2RlIHRoZSBjb250ZW50IGJ5IHRoZSBkZWxpbWl0ZXJzIGFuZCBjYWxsIHRoZSBzZWxlY3RlZCBtb2R1bGVzLjwvcD4KCQk8cD5GdWxsIEV4YW1wbGU6PC9wPgoJCTxwcmU+CgkJPGNvZGU+CgkJeyogZGVmaW5lIHRoZSBjb250ZW50IGJsb2NrICp9CgkJe2NvbnRlbnQgYmxvY2s9Im15X21vZHVsZXMiIGJsb2NrX3R5cGU9Im11bHRpX2lucHV0IiBpbnB1dHM9Ik1vZHVsZSxNb2R1bGUsTW9kdWxlLE1vZHVsZSIgYXNzaWduPSJtb2R1bGVzIn0KCQkKCQl7KiBleHBsb2RlIGJsb2NrIGNvbnRlbnQgaW4gYW4gYXJyYXkgdG8gZ2V0IHRoZSBpbnB1dCBncm91cHMgKn0KCQl7YXNzaWduIHZhcj1tb2R1bGVzIHZhbHVlPSImbHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZndDsifGV4cGxvZGU6XCRtb2R1bGVzfQoJCQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQoJCXtmb3JlYWNoIGZyb209XCRtb2R1bGVzIGl0ZW09Im1vZHVsZSJ9CgkJCXtpZiBcJG1vZHVsZSAhPSAnJ30KCQkJCgkJCQl7KiBleHBsb2RlIHRoZSBpbnB1dCB2YWx1ZXMgaW4gbW9kdWxuYW1lIGFuZCBtb2R1bGUgcGFyYW1ldGVycyAqfQoJCQkJe2Fzc2lnbiB2YXI9bW9kdWxlX2l0ZW1zIHZhbHVlPSImbHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZndDsifGV4cGxvZGU6XCRtb2R1bGV9CgkJCQkKCQkJCXtpZiBcJG1vZHVsZV9pdGVtc1swXSAhPSAnJ30KCQkJCQoJCQkJCXsqIGNhbGwgdGhlIG1vZHVsZSAqfQoJCQkJCXtpZiBpc3NldChcJG1vZHVsZV9pdGVtc1sxXSl9CgkJCQkJCXtldmFsIHZhcj1cJHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6XCRtb2R1bGVfaXRlbXNbMF18Y2F0OiciICd8Y2F0OlwkbW9kdWxlX2l0ZW1zWzFdfGNhdDpcJHNtYXJ0eS5yZGVsaW19CgkJCQkJe2Vsc2V9CgkJCQkJCXtldmFsIHZhcj1cJHNtYXJ0eS5sZGVsaW18Y2F0OidjbXNfbW9kdWxlIG1vZHVsZT0iJ3xjYXQ6XCRtb2R1bGVfaXRlbXNbMF18Y2F0OiciJ3xjYXQ6XCRzbWFydHkucmRlbGltfQoJCQkJCXsvaWZ9CgkJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCXsvaWZ9CgkJCgkJey9mb3JlYWNofQoJCTwvY29kZT4KCQk8L3ByZT4KCTwvbGk+CjwvdWw+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgoJPGxpPlRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLyI+aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi88L2E+PC9saT4KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIENNUyBNYWRlIFNpbXBsZSBGb3J1bXM6PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5kZSI+aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUuZGU8L2E+PGJyIC8+Cgk8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPmh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZzwvYT48L2xpPgo8L3VsPgo8YnIgLz4KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD4KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPgoJVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsPGJyIC8+CglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZjxiciAvPgoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPgoJU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLjxiciAvPgoJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8YnIgLz4KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+CglGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQTxiciAvPgoJT3IgcmVhZCBpdCBvbmxpbmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMPC9hPjxiciAvPgoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuCjwvcD4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgo8YnIgLz4KRU9UOwokbGFuZ1snY2hhbmdlbG9nJ10gPSA8PDxFT1QKPGJyIC8+CjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMyAoTWFyIDIwMTEpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gWyM1NzM0XSBQYXJhbWV0ZXIgYmxvY2tfZ3JvdXAgaXMgbm90IGtub3duIGJ5IG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMTRdIGhlYWRlciBwcm9ibGVtIHdpdGggbXVsdGktaW5wdXQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzhdIGNvbnRlbnRfaW1hZ2UgcmVzcGVjdGl2ZWx5IGJsb2NrX3R5cGU9ImltYWdlIiBkb2Vzbid0IHdvcms8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBbIzYwMzldIHRlbXBsYXRlIGNhbid0IGJlIHN3aXRjaGVkPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gWyM2MDYxXSBpc3N1ZSB3aXRoIHRoZSByZWRpcmVjdCBmb3IgZmV1IG5vbiBtYXRjaDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIFsjNjA5NV0gUGFyYW1ldGVyIHNvcnRhYmxlIGlzIG5vdCBrbm93biA8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MSAocmVkaXJlY3QgaWYgZnJvbnRlbmQgdXNlciBoYXMgbm8gYWNjZXMgdG8gdGhhdCBwYWdlIGRpZCBub3Qgd29yayBwcm9wZXJseSk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGNvbGxhcHNlPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSB0aGlzIG1vZHVsZSBub3cgb25seSB3b3JrcyB3aXRoIENNU21zIDEuNi45IHVwIHRvIDEuOC4yPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42LjIgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz4wLjYuMSAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC42IChPY3QgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX2dyb3VwPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+TWlzYzo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjU0IChkaXNhYmxlIHd5c2l3eWcgbm90IHdvcmtpbmcpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPgoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAnY29ycmVjdGx5Jyk8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgcGFyYW1zIGV4Y2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeCwgZXhjbHVkZV9zdWZpeCwgaW5jbHVkZV9zdWZpeDwvcD48L2xpPgoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+CgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQxIChwdXQgRmV1QWNjZXNzIGluIEJsb2NrdGFiKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPk1pc2M6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBBZGRlZCBuZXcgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBwYXJhbSBkaXIgb2YgYmxvY2sgdHlwZSBmaWxlL2ltYWdlIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpciBvbmx5ICh0aGVyZSBpcyBubyBpbWFnZSB1cGxvYWRzIGRpciB1c2VkIGFueW1vcmUpPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTUxOiBmaXhlZCBzdHlsZXNoZWV0IGlzc3VlIHdpdGggZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgb2YgY29udGVudCBibG9ja3MgaW4gSUUvU2FmYXJpLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGV4dHJhIGZpZWxkcyBjb3VsZCBub3QgYmUgdXBkYXRlZC48L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJkZWxldGUiIHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImNyZWF0ZV9kaXJzIiB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICJNb2RpZnkgRmlsZXMiPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAibm90ZSIgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4KCQkJCTwvdWw+CgkJCTwvbGk+CgkJCTxsaT48cD5NaXNjOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSByZW1vdmVkIGRlcGVuZGVuY3kgb2YgRmlsZU1hbmFnZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5JbXBvcnRhbnQgbm90aWNlOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICJ0eXBlIiB0byAiYmxvY2tfdHlwZSIgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAib3B0aW9ucyIgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW1lLXR5cGUgaXNzdWUgKGFkZGVkIHByZWZlcmVuY2UgdG8gdG9nZ2xlIG1pbWUtdHlwZSB1c2FnZSBvbi9vZmYpPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPgoJCQkJCTxsaT48cD4tIG90aGVyIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPgoJCQkJPHVsPgoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNob3dfY2xvY2siIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgImRhdGUiIGluIGJhY2tlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGF0ZV9mb3JtYXQiIHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gZnJvbnRlbmQ8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVzY3JpcHRpb24iPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD5CdWdmaXhlczo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAiTWFuYWdlIEFsbCBDb250ZW50IjwvcD48L2xpPgoJCQkJCTxsaT48cD4tICM1MDczOiBpbmNvcnJlY3QgZGlzcGxheSBvZiBmaWxlcyB3aGVuIG9wZW5pbmcgZmlsZXBpY2tlcjwvcD48L2xpPgoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICJhbGxvd19ub25lIiBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4KCQkJCTx1bD4KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZG1pbnMgbWF5IGJyb3dzZSB0aGUgZW50aXJlIGRpciB0cmVlIGluIGZpbGVwaWNrZXIgZmlsZSBicm93c2VyIHJlZ2FyZGxlc3Mgb2YgdGVtcGxhdGUgcGFyYW1zPC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+CgkJCQk8L3VsPgoJCQk8L2xpPgoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+CgkJCQk8dWw+CgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+CgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPgoJCQkJCTxsaT48cD4tIHJlbW92ZWQgdXNhZ2Ugb2YgSW1hZ2VNYW5hZ2VyIG9uY2UgYW5kIGZvciBhbGwuIChjYXVzZWQgb25seSB0cm91YmxlKTwvcD48L2xpPgoJCQkJPC91bD4KCQkJPC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4KCTx1bD4KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPgoJCQk8dWw+CgkJCQk8bGk+PHA+LSBhbGlhcyB3YXMgbm90IGFsd2F5cyBjb252ZXJ0ZWQgcHJvcGVybHk8L3A+PC9saT4KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4KCQkJPC91bD4KCQk8L2xpPgoJCTxsaT48cD5GZWF0dXJlczo8L3A+CgkJCTx1bD4KCQkJCTxsaT48cD4tIGFkZGVkIHN0YXJ0L2VuZCBkYXRlPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+CgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+CgkJCTwvdWw+CgkJPC9saT4KCTwvdWw+Cgk8bGk+PHA+PHN0cm9uZz4wLjMuMiAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmcgd2hlbiBzYXZpbmcgYSBwYWdlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbXMgZWRpdG9yX2dyb3Vwcy9lZGl0b3JfdXNlcnMgdG8gc3BlY2lmeSBjZXJ0YWluIHVzZXJzL2dyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgY2VydGFpbiBibG9ja3M8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPgoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBvZiBibG9ja3R5cGUgZHJvcGRvd24vc2VsZWN0X211bHRpcGxlIHdoZXJlIGZpcnN0IGl0ZW0gaGFkIGFuIGVtcHR5IGxhYmVsIGlmIG9ubHkgdGhlIHBhcmFtICJ2YWx1ZXMiIGlzIHVzZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogXCRwYWdlX2FsaWFzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiYWxsb3dfbm9uZSIgdG8gYWxsIGNvbnRlbnQgYmxvY2sgdHlwZXMgdG8gc3BlY2lmeSBpZiB0aGUgcHJlZGVmaW5lZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBpZiBubyB2YWx1ZSBpcyBlbnRlcmVkPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICJhbGxvd19ub25lIiBwYXJhbSB3YXMgY2hhbmdlZCBhZnRlciBhbiBlbXB0eSB2YWx1ZSBoYXMgYmVlbiBzdG9yZWQ8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gInNvcnRhYmxlX2l0ZW1zIiB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbid0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz5BZHZhbmNlZENvbnRlbnQgMC4zIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+CgkJCTxsaT48cD4tIGJ1Z2ZpeGVzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+CgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+CgkJCTxsaT48cD4tIHJlbW92ZWQgcGFnZSBhbGlhcyBpbmhlcml0YW5jZTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8dWw+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAiOyIgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4KCQk8dWw+CgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gImRlbGltaXRlciI8L3A+PC9saT4KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAiU2hvdyBsb2dpbiBmb3JtIjwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBwYWdlIGFsaWFzIHRvIGFkZCBpdCBhcyBwcmVmZml4OyBzbyBpZiB5b3UgaGF2ZSBhIHBhZ2UgY2FsbGVkICJtZW1iZXJzIiBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgImluaGVyaXQgcGFnZSBhbGlhcyIgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICJtZW1iZXJzXyI7IG1ha2VzIGZpbHRlcmluZyBvZiBtZW51IGVudHJpZXMgd2l0aCBNZW51TWFuYWdlciBwYXJhbSAiZXhjbHVkZXByZWZmaXgiIG9yICJpbmNsdWRlcHJlZmZpeCIgZWFzaWVyLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiAKCQk8L3VsPgoJPC9saT4KCTxsaT4KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+Cjx1bD4KCTxsaT4KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+CgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4KCQk8L3VsPgoJPC9saT4KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPgoJCTx1bD4KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPgoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+CgkJPC91bD4KCTwvbGk+Cgk8bGk+CgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+CgkJPHVsPgoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwbGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPgoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPgoJCTwvdWw+Cgk8L2xpPgo8L3VsPgo8YnIgLz4KRU9UOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRlbnUgQXZhbmMmZWFjdXRlOyc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ09wdGlvbnMgYXZhbmMmZWFjdXRlO2VzJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ0xlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgZXN0IGluc3RhbGwmZWFjdXRlOyAnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdMZSBtb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGVzdCBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCBtaXMgJmFncmF2ZTsgam91ciBlbiB2ZXJzaW9uICVzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBlc3QgaW5zdGFsbCZlYWN1dGU7ICc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBlc3QgZCZlYWN1dGU7c2luc3RhbGwmZWFjdXRlOyc7CiRsYW5nWydjb25maXJtdW5pbnN0YWxsJ10gPSAnJkVjaXJjO3RlcyB2b3VzIGNlcnRhaW4gZGUgdm91bG9pciBkJmVhY3V0ZTtzaW5zdGFsbGVyIGxlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQgPyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+IENlIGJsb2MgZXN0IHV0aWxpcyZlYWN1dGU7ICZhZ3JhdmU7IGRlIG11bHRpcGxlcyByZXByaXNlcyBkYW5zIGxlIGdhYmFyaXQuIFZvdXMgdmVycmV6IGljaSB1bmlxdWVtZW50IGxlIHByZW1pZXIgYmxvYy48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+IElsIG4mIzAzOTtlc3QgcGFzIHBvc3NpYmxlIGQmIzAzOTt1dGlsaXNlciBsZSBub20gZGUgYmFzZSBkZSBsYSBwcm9wcmkmZWFjdXRlO3QmZWFjdXRlOyBkdSBjb250ZW51ICYjMDM5OyVzJiMwMzk7IGNvbW1lIHVuZSB2YWxldXIgZHUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+Q2UgYmxvYyBlc3QgaW5hY3RpZi4gViZlYWN1dGU7cmlmaWV6IHZvdHJlIGdhYmFyaXQgZGUgcGFnZSBldCBjaG9pc2lzc2V6IHVuZSB2YWxldXIgZGlmZiZlYWN1dGU7cmVudGUgZHUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnTGEgZGF0ZSBkZSBmaW4gZG9pdCAmZWNpcmM7dHJlIHN1cCZlYWN1dGU7cmlldXJlICZhZ3JhdmU7IGxhIGRhdGUgZGUgZCZlYWN1dGU7YnV0JzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ1ImZWFjdXRlO3BlcnRvaXJlIGNvdXJhbnQnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ1RhaWxsZSBkZSBsJiMwMzk7aW1hZ2UnOwokbGFuZ1snc2l6ZSddID0gJ1RhaWxsZSBkdSBmaWNoaWVyJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdIJmVhY3V0ZTtyaXQmZWFjdXRlOyBkdSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ2F1Y3VuJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkZSc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPkF0dGVudGlvbiA6PC9zdHJvbmc+ICYjMDM5OyVzJiMwMzk7IGVzdCB1bmUgdmFsZXVyIGluY29ycmVjdGUgZHUgcGFyYW0mZWdyYXZlO3RyZSBibG9ja190eXBlIGRhbnMgbGUgYmxvYyAmIzAzOTslcyYjMDM5Oy48YnIgLz5WJmVhY3V0ZTtyaWZpZXogdm90cmUgZ2FiYXJpdCBkZSBwYWdlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycmV1ciA6PC9zdHJvbmc+IFBhcmFtJmVncmF2ZTt0cmVzIGluc3VmZmlzYW50cy4gPGJyIC8+TGUgcGFyYW0mZWdyYXZlO3RyZSAmIzAzOTslcyYjMDM5OyBwb3VyIGxlIGJsb2MgJiMwMzk7JXMmIzAzOTsgZXN0IG1hbnF1YW50LiBWJmVhY3V0ZTtyaWZpZXogdm90cmUgZ2FiYXJpdCBkZSBwYWdlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ091aSc7CiRsYW5nWydubyddID0gJ05vbic7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0FjYyZlZ3JhdmU7cyBGcm9udGVuZCc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdQYWdlIGRlIHJlZGlyZWN0aW9uIHNpIGFjYyZlZ3JhdmU7cyByZWZ1cyZlYWN1dGU7JzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdBZmZpY2hlciBsZSBmb3JtdWxhaXJlIGRlIGNvbm5leGlvbic7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdVdGlsaXNhdGV1cnMgZW5yZWdpc3RyJmVhY3V0ZTtzIHNldWxlbWVudCc7CiRsYW5nWydibG9jayddID0gJ0Jsb2MnOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ1V0aWxpc2VyIGxhIGRhdGUgZCYjMDM5O2V4cGlyYXRpb24nOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAnRGF0ZSBkZSBkJmVhY3V0ZTtidXQnOwokbGFuZ1snZW5kZGF0ZSddID0gJ0RhdGUgZGUgZmluJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2MgZGUgY29udGVudSc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdEJmVhY3V0ZTtmaW5pciBsYSBwYWdlIGNvbW1lIGluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdFZmZhY2VyIGxhIHBhZ2UnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnRCZlYWN1dGU7c2luc3RhbGxhdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ0QmZWFjdXRlO2ZpbmlyIHRvdXRlcyBsZXMgcGFnZXMgZCYjMDM5O0FkdmFuY2VkQ29udGVudCBlbiB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdEJmVhY3V0ZTtmaW5pciB0b3V0ZXMgbGVzIHBhZ2VzIGQmIzAzOTtBZHZhbmNlZENvbnRlbnQgZW4gdHlwZSBDb250ZW50IGV0IHN1cHByaW1lciBsZXMgYmxvY3MgZGUgY29udGVudSBhZGRpdGlvbm5lbCc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2VzIG1pc2VzICZhZ3JhdmU7IGpvdXInOwokbGFuZ1snc3VjY2VzcyddID0gJ09rICc7CiRsYW5nWydlcnJvciddID0gJ0VycmV1cic7CiRsYW5nWydkZWxldGVwYWdlcyddID0gJ1N1cHByaW1lciB0b3V0ZXMgbGVzIHBhZ2VzIGRlIHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnRCZlYWN1dGU7ZmluaXIgdG91dGVzIGxlcyBwYWdlIGRlIHR5cGUgJXMgZW4gdHlwZSAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ1RvdXRlcyBsZXMgcGFnZXMgc29udCBkJmVhY3V0ZTtmaW5pZSBlbiBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICcmRWNpcmM7dGVzIHZvdXMgY2VydGFpbnMgZGUgdm91bG9pciBjaGFuZ2VyIGxlIHR5cGUgZGUgY29udGVudSBkZSB0b3V0ZXMgbGVzIHBhZ2VzID8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdDYWNoZXIgY2UgbWVzc2FnZSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBBZHZhbmNlZENvbnRlbnQgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBkJiMwMzk7VVJMICZhZ3JhdmU7IGFqb3V0ZXIgcG91ciBsYSByZWRpcmVjdGlvbic7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1V0aWxpc2VyIHNtYXJ0eSBwb3VyIHRyYWl0ZXIgbGVzIHBhcmFtJmVncmF2ZTt0cmVzJzsKJGxhbmdbJ2Vycm9yX2xvYWRpbmdfbW9kdWxlJ10gPSAnPGVtPjxzdHJvbmc+RXJyZXVyIDo8L3N0cm9uZz4gTiYjMDM5O2EgcGFzIHB1IGNoYXJnZXIgbGUgbW9kdWxlICYjMDM5OyVzJiMwMzk7LiAoRCZlYWN1dGU7ZmluaSBwb3VyIGxlIGJsb2MgJiMwMzk7JXMmIzAzOTsgZGFucyB2b3RyZSBnYWJhcml0IGRlIHBhZ2UuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyZXVyIDo8L3N0cm9uZz4gTGUgbW9kdWxlICYjMDM5OyVzJiMwMzk7IG5lIHN1cHBvcnRlIHBhcyBsZXMgYmxvY3MgZGUgY29udGVudSAoY29udGVudGJsb2NrcykuIChEJmVhY3V0ZTtmaW5pIHBvdXIgbGUgYmxvYyAmIzAzOTslcyYjMDM5OyBkYW5zIHZvdHJlIGdhYmFyaXQgZGUgcGFnZS4pPC9lbT4nOwokbGFuZ1snc3VjY2Vzc19pbXBvcnRwYWdlcyddID0gJ1RvdXRlcyBsZXMgcGFnZXMgZGUgdHlwZSAlcyBvbnQgJmVhY3V0ZTt0JmVhY3V0ZTsgY2hhbmcmZWFjdXRlO2VzIGVuICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdNb250cmVyIGwmIzAzOTtvbmdsZXQgZCYjMDM5O29wdGlvbnMgZCYjMDM5O0FkdmFuY2VkQ29udGVudCc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgYWZmaWNoZSBsZXMgcGFyYW0mZWdyYXZlO3RyZXMnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdFbnJlZ2lzdHJlciBsZSBzdGF0dXQgbWFzcXUmZWFjdXRlOyBkZSAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2Jsb2NzIGRlIGNvbnRlbnVzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdtZXNzYWdlIGR1IGJsb2MgZGUgY29udGVudSc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICdncm91cGVzIGRlIGJsb2MnOwokbGFuZ1snY29sbGFwc2VfZGVmYXVsdCddID0gJ01hc3F1ZXIgJXMgcGFyIGQmZWFjdXRlO2ZhdXQnOwokbGFuZ1sncGVyX3BhZ2UnXSA9ICdwYXIgcGFnZSc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICdwYXIgZ2FiYXJpdCc7CiRsYW5nWydib3RoMSddID0gJ2dhYmFyaXQgT1UgcGFnZSc7CiRsYW5nWydib3RoMiddID0gJ2dhYmFyaXQgRVQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudSc7CiRsYW5nWydjb250ZW50MiddID0gJ0NvbnRlbnUgYXZhbmMmZWFjdXRlOyc7CiRsYW5nWydwcmVmcyddID0gJ1ImZWFjdXRlO2dsYWdlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdHYWJhcml0cyBwb3VyIGVudHImZWFjdXRlO2VzIG11bHRpcGxlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdBam91dGVyIGRlcyBlbnRyJmVhY3V0ZTtlcyBtdWx0aXBsZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ0Fqb3V0ZXIgdW4gbm91dmVhdSBnYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSUQgZW50ciZlYWN1dGU7ZXMnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnQ2hhbXBzIHBvdXIgRW50ciZlYWN1dGU7ZXMnOwokbGFuZ1sndHBsX25hbWUnXSA9ICdOb20gZHUgZ2FiYXJpdCc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0xlIGNoYW1wIEdhYmFyaXQgZXN0IHJlcXVpcyBldCBuZSBwZXV0ICZlY2lyYzt0cmUgdmlkZSc7CiRsYW5nWydlcnJvcl9pbnB1dF9maWVsZHMnXSA9ICdMZXMgY2hhbXBzIEVudHImZWFjdXRlO2VzIHNvbnQgcmVxdWlzIGV0IG5lIHBldXZlbnQgJmVjaXJjO3RyZSBsYWlzcyZlYWN1dGU7cyB2aWRlcy4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdBdWN1biBJRCBlbnRyJmVhY3V0ZTtlcyBuJiMwMzk7YSAmZWFjdXRlO3QmZWFjdXRlOyBmb3Vybmkgb3UgbGUgY29udGVudSBleGlzdGUgZCZlYWN1dGU7aiZhZ3JhdmU7Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJRCBlbnRyJmVhY3V0ZTtlcyBkJmVhY3V0ZTtqJmFncmF2ZTsgdXRpbGlzJmVhY3V0ZTsuIFMmZWFjdXRlO2xlY3Rpb25uZXogdW4gSUQgZGlmZiZlYWN1dGU7cmVudC4gKGRvaXQgJmVjaXJjO3RyZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnRW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIGFqb3V0JmVhY3V0ZTtlcy4nOwokbGFuZ1snbXVsdGlfaW5wdXRfZGVsZXRlZCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyBzdXBwcmltJmVhY3V0ZTtlcy4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ0VudHImZWFjdXRlO2VzIG11bHRpcGxlcyBtaXNlcyAmYWdyYXZlOyBqb3VyLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfYWRkZWQnXSA9ICdHYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIGFqb3V0JmVhY3V0ZTsuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnR2FiYXJpdCBwb3VyIGVudHImZWFjdXRlO2VzIG11bHRpcGxlcyBtaXMgJmFncmF2ZTsgam91ci4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdHYWJhcml0IHBvdXIgZW50ciZlYWN1dGU7ZXMgbXVsdGlwbGVzIHN1cHByaW0mZWFjdXRlOy4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRWZmYWNlciBsZXMgJmVhY3V0ZTtsJmVhY3V0ZTttZW50cyBzJmVhY3V0ZTtsZWN0aW9ubiZlYWN1dGU7cyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ0QmZWFjdXRlO3NpcmV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCAmZWFjdXRlO2wmZWFjdXRlO21lbnQ/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnRCZlYWN1dGU7c2lyZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgbGVzICZlYWN1dGU7bCZlYWN1dGU7bWVudHMgcyZlYWN1dGU7bGVjdGlvbm4mZWFjdXRlO3M/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ1V0aWxpc2VyIGxlIHR5cGUgZGUgY29udGVudSc7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZSB2YXJzOjwvc3Ryb25nPjwvcD4NCjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBkZWZpbmVkIGlucHV0IGVsZW1lbnRzIG9mIHRoYXQgbXVsdGkgaW5wdXQgYmxvY2suPGJyIC8+DQpFYWNoIGlucHV0IGVsZW1lbnQgaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgaXRzIHBhcmFtcy4gPGJyIC8+DQpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4NCkFkZGl0aW9uYWwgcGFyYW0gaXMgJnF1b3Q7aW5wdXQmcXVvdDsgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4nOwokbGFuZ1snaGVscCddID0gJzxiciAvPg0KPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+PGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+Q29tbWVudCBsJiMwMzk7dXRpbGlzZXIgPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayBtYXkgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3JlcyAobm8gd2hpdGVzcGFjZXMsIHNwZWNpYWwgY2hhcnMsIHVtbGF1dHMgZXRjLikuIE90aGVyd2lzZSBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHByb3BlciBuYW1lIChzaW1pbGFyIHRvIHRoZSBwYWdlIGFsaWFzKS48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pnd5c2l3eWc8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPklmIHNldCB0byBmYWxzZSwgdGhlbiBhIHd5c2l3eWcgd2lsbCBuZXZlciBiZSB1c2VkIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgdHJ1ZSwgdGhlbiBpdCBhY3RzIGFzIG5vcm1hbC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+b25lbGluZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIHRydWUsIHRoZW4gb25seSBvbmUgZWRpdCBsaW5lIHdpbGwgYmUgc2hvd24gd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiBmYWxzZSwgdGhlbiBpdCBhY3RzIGFzIG5vcm1hbC4gT25seSB3b3JrcyB3aGVuIGJsb2NrIHBhcmFtZXRlciBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkRlZmF1bHQgY29udGVudCB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhZ2UuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmxhYmVsPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlByb21wdCBmb3IgdGhpcyBjb250ZW50IGJsb2NrLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIGFueSBleHByZXNzaW9uLiBJZiBibGFuaywgdGhlIHVuY29udmVydGVkIGJsb2NrIG5hbWUgaXMgdXNlZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YXNzaWduPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFzc2lnbnMgdGhlIGNvbnRlbnQgdG8gYSBzbWFydHkgcGFyYW1ldGVyLCB3aGljaCB5b3UgY2FuIHRoZW4gdXNlIGluIG90aGVyIGFyZWFzIG9mIHRoZSBwYWdlLCBvciB1c2UgdG8gdGVzdCB3aGV0aGVyIGNvbnRlbnQgZXhpc3RzIGluIGl0IG9yIG5vdC48YnIgLz4NCgkJCQlFeGFtcGxlIG9mIHBhc3NpbmcgcGFnZSBjb250ZW50IHRvIGEgVXNlciBEZWZpbmVkIFRhZyBhcyBhIHBhcmFtZXRlcjo8YnIgLz4NCgkJCQk8Y29kZT57Y29udGVudCBhc3NpZ249cGFnZWNvbnRlbnR9PGJyIC8+DQoJCQkJe3RhYmxlX29mX2NvbnRlbnRzIHRoZXBhZ2Vjb250ZW50PSZxdW90OyRwYWdlY29udGVudCZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0mcXVvdDtmb28mcXVvdDt9e0FkdmFuY2VkQ29udGVudH17L2NhcHR1cmV9PC9jb2RlPiA8YnIgLz5pbnN0ZWFkLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSkgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIHNwZWNpZnkgd2hhdCBjb250ZW50IGNvbnRyb2wgdHlwZSBpcyB1c2VkIGluIHRoZSBiYWNrIGVuZC4gU3VwcG9ydHMgYmxvY2stcGFyYW1ldGVycyB0byBpbmNsdWRlIGFkZGl0aW9uYWwgb3B0aW9ucy48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdGFiIGluIHdoaWNoIHRoZSBjb250ZW50IGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgYmFja2VuZC48YnIgLz4NCgkJCQlQb3NzaWJsZSB2YWx1ZXMgYXJlICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtNYWluIE1lbnUmcXVvdDspLCAmcXVvdDtvcHRpb25zJnF1b3Q7ICggPSBUYWIgJnF1b3Q7T3B0aW9ucyZxdW90OyksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4NCgkJCQk8ZW0+ZS5nLiB5b3UgY2FuIGFkZCBhIGNoZWNrYm94IHRvIHRoZSBvcHRpb25zIHRhYiBvciBjcmVhdGUgbmV3IHRhYnM8L2VtPi4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgbXVsdGlwbGUgYmxvY2tzIGNhbiBiZSBncm91cGVkIGluIGEgZmllbGRzZXQuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJiMwMzk7dCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0eWxlPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0aGUgaW5saW5lIHN0eWxlIG9mIHRoZSBlbGVtZW50IGluIGJhY2tlbmQuIDxiciAvPg0KCQkJCWUuZy46IG1ha2UgYSBub3RlIHJlZCB3aXRoIDxjb2RlPnN0eWxlPSYjMDM5O2NvbG9yOiNGRjAwMDA7JiMwMzk7PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+IChub3QgcmVhZHkgeWV0KQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBsaXN0IG9mIGZldSBncm91cHMgc2VwYXJhdGVkIGJ5IGEgY29tbWEuPGJyIC8+DQoJCQkJVGhpcyBncmFudHMgYWNjZXNzIHRvIHRoaXMgY29udGVudCBibG9jayBvbmx5IHRvIGNlcnRhaW4gZmV1IGdyb3Vwcy48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWN0aW9uPC90dD4gKHRydWUvZmFsc2UpICAobm90IHJlYWR5IHlldCkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gJnF1b3Q7ZGVmYXVsdCZxdW90OyB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAmcXVvdDtub25lJnF1b3Q7IChtb2RlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7KSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0mcXVvdDtmaWxlcGlja2VyJnF1b3Q7KSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c21hcnR5PC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUdXJuIHNtYXJ0eSBwcm9jZXNzaW5nIG9mIHZhbHVlcyBvbi9vZmYuPGJyIC8+DQoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6IDwvc3Ryb25nPiBOb3RpY2UgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+DQoJCQkJU28geW91IG5lZWQgdG8gdXNlIDo6OiBhcyBkZWxpbWl0ZXIgaW5zdGVhZC48YnIgLz48L2VtPg0KCQkJCUUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O0NhdGVnb3JpZXMmcXVvdDsgbGFiZWw9JnF1b3Q7U2VsZWN0IGEgY2F0ZWdvcnkmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDs6OjpnbG9iYWxfY29udGVudCBuYW1lPSYjMDM5O2NhdGVnb3J5bGlzdCYjMDM5Ozo6OiZxdW90OyBzbWFydHk9JnF1b3Q7dHJ1ZSZxdW90O308L2NvZGU+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVzY3JpcHRpb248L3R0PiAoc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gYWRkIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gdG8gdGhhdCBibG9jayBmb3IgeW91ciBlZGl0b3JzLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2NoZWNrYm94JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBvbmx5IHRoZSBvcmRlciBvZiB0aGUgPHN0cm9uZz5zZWxlY3RlZDwvc3Ryb25nPiBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgYWx3YXlzIGRpc3BsYXllZCBvbiB0aGUgdG9wIG9mIHRoZSBsaXN0IHdoZW4gcmVsb2FkaW5nIHRoZSBlZGl0IHBhZ2UuPGJyIC8+DQoJCQkJVW5zZWxlY3RlZCBpdGVtcyB3aWxsIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGU8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgZGVmYXVsdCBkaXNwbGF5IG9mIHRoZSBibG9jayBpbiBiYWNrZW5kLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZGF0ZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX2hvdXJzPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzdGVwcyBvZiBob3VycyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RhcnRfaG91cjwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIGhvdXIgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDEyIG9yIDIzKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3cyNGg8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzZXQgdG8gZmFsc2UgaWYgQU0vUE0gaXMgdXNlZC4gKGRlZmF1bHQgaXMgdHJ1ZSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGVwX21pbnV0ZXM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIG1pbnV0ZXMgaW4gdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAxMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9taW51dGU8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBzdGFydCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIGVuZCBtaW51dGUgb2YgdGhlIGNsb2NrIGRyb3Bkb3duIChkZWZhdWx0IGlzIDU5KQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNob3dfY2xvY2s8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzZXQgdG8gZmFsc2UgaWYgbm8gdGltZSBkcm9wZG93biBzaG91bGQgYmUgZGlzcGxheWVkIChkZWZhdWx0IGlzIHRydWUpPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gSWYgc2V0IHRvIGZhbHNlIDAwOjAwIG8mIzAzOTtjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEdlb3JnIEJ1c2NoIChOYU4pLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KPGJyIC8+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC42IChPY3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX2dyb3VwPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBSZW1vdmVkIGZpbGUgcGlja2VyIChhbmQgYXNzb2NpYXRlZCBibG9ja190eXBlcyBpbWFnZS9maWxlKSAtIHVzZSBHQkZpbGVQaWNrZXIgaW5zdGVhZC48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNSAoU2VwdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyOTIgKG1lbW9yeSBpc3N1ZSk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjU0IChkaXNhYmxlIHd5c2l3eWcgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMCAodXJsb25seSBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzExIChpbWFnZSBwYXRocyBub3Qgc3RvcmVkICYjMDM5O2NvcnJlY3RseSYjMDM5Oyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjYxIChBZGQgc29ydCB0byBpbWFnZSB0eXBlIC0gbm90aWNlIHRoZSBjaGFuZ2Ugb2YgcGFyYW0gZmlsdGVyKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgcGFyYW1zIGV4Y2x1ZGVfcHJlZml4LCBpbmNsdWRlX3ByZWZpeCwgZXhjbHVkZV9zdWZpeCwgaW5jbHVkZV9zdWZpeDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjUzIChUZXh0IGlucHV0IHRvIGRlZmluZSBhZGQgcGFyYW1zIHRvIHJlZGlyZWN0IGZ1bmN0aW9uKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQwIChEZWZhdWx0IHZhbHVlcyBvZiBBZHZhbmNlZENvbnRlbnQgcGFnZSBvcHRpb25zKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+YWRkZWQgZmVhdHVyZSByZXF1ZXN0ICM1MjQxIChwdXQgRmV1QWNjZXNzIGluIEJsb2NrdGFiKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgYXJlIHNob3duIGluIHNlcGFyYXRlIHRhYjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBBZGRlZCBuZXcgcGVybWlzc2lvbiB0byBtYW5hZ2UgdGhlIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtIGZpbHRlciAodXNlIG5ldyBwYXJhbXMgaW5zdGVhZCk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGF0aCB0byBmaWxlcyBhcmUgc3RvcmVkIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXJhbSBkaXIgb2YgYmxvY2sgdHlwZSBmaWxlL2ltYWdlIG5lZWRzIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB1cGxvYWRzIGRpciBvbmx5ICh0aGVyZSBpcyBubyBpbWFnZSB1cGxvYWRzIGRpciB1c2VkIGFueW1vcmUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQuMSAoQXVndXN0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTUxOiBmaXhlZCBzdHlsZXNoZWV0IGlzc3VlIHdpdGggZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgb2YgY29udGVudCBibG9ja3MgaW4gSUUvU2FmYXJpLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTE2MjogUEhQIHdhcm5pbmdzIGlmIGJhY2tlbmQgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyZxdW90OyBvcGVuIGFuIGFkdmFuY2VkIGNvbnRlbnQgcGFnZSBhbmQgbXVsdGlwbGUgY29udGVudCBibG9ja3Mgb2Ygc2FtZSBuYW1lIHdlcmUgdXNlZCBpbiB0ZW1wbGF0ZS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGV4dHJhIGZpZWxkcyBjb3VsZCBub3QgYmUgdXBkYXRlZC48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGZldSBhY2Nlc3MgZGlkIG5vdCB3b3JrLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RlbGV0ZSZxdW90OyB0byBsZXQgdXNlcnMgZGVsZXRlIGZpbGVzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAmcXVvdDtNb2RpZnkgRmlsZXMmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7Y3JlYXRlX2RpcnMmcXVvdDsgdG8gbGV0IHVzZXJzIGNyZWF0ZV9kaXJzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAmcXVvdDtNb2RpZnkgRmlsZXMmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAmcXVvdDtub3RlJnF1b3Q7IHRvIGNyZWF0ZSBzb21lIHNpbmdsZSBub3RlcyBmb3IgeW91ciBlZGl0b3JzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIGRlcGVuZGVuY3kgb2YgRmlsZU1hbmFnZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgb2YgdHlwZSBmaWxlIG9yIGltYWdlIHN0b3JlcyByZWxhdGl2ZSB1cmwgbm93PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIHR5cGUgaW1hZ2Ugc2hvd3MgdGh1bWJuYWlsIGluIGJhY2tlbmQgcHJldmlldyBpbnN0ZWFkIG9mIGZ1bGwgaW1hZ2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNCAoSnVseSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5JbXBvcnRhbnQgbm90aWNlOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgcGFyYW0gJnF1b3Q7dHlwZSZxdW90OyB0byAmcXVvdDtibG9ja190eXBlJnF1b3Q7IHNpbmNlIGl0IGludGVyZmVyZXMgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAmcXVvdDtvcHRpb25zJnF1b3Q7IHdhcyBzaG93biB0byB1c2VycyB3aXRoIG5vIHBlcm1pc3Npb24gdG8gZWRpdCBwYWdlIG9wdGlvbnMgaWYgYSBjb250ZW50IGJsb2NrIHdhcyBhc3NpZ25lZCB0byB0aGF0IHRhYi48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwOTc6IGxpbmsgdG8gbWlzc2luZyBjc3MgcmVtb3ZlZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW1lLXR5cGUgaXNzdWUgKGFkZGVkIHByZWZlcmVuY2UgdG8gdG9nZ2xlIG1pbWUtdHlwZSB1c2FnZSBvbi9vZmYpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIHBhdGggaXNzdWUgd2hlcmUgdGh1bWJuYWlscyB3ZXJlIG5vdCBzaG93bjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBjb21wYXRpYmlsaXR5IHdpdGggQ01TbXMgMS44PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIG90aGVyIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgTUxFIHN1cHBvcnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c2hvd19jbG9jayZxdW90OyB0byBlbmFibGUvZGlzYWJsZSB0aGUgdGltZSBkcm9wZG93biBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkYXRlX2Zvcm1hdCZxdW90OyB0byBmb3JtYXQgdGltZXN0YW1wIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBmcm9udGVuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZXNjcmlwdGlvbiZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA1NjogcGFnZV90YWJzIG5vdCB3b3JraW5nIGZvciB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBDb250ZW50JnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDczOiBpbmNvcnJlY3QgZGlzcGxheSBvZiBmaWxlcyB3aGVuIG9wZW5pbmcgZmlsZXBpY2tlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBtaW5vciBidWcgd2hlcmUgdGhlIG9wdGlvbiAmcXVvdDthbGxvd19ub25lJnF1b3Q7IG9mIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZSB3YXMgbm90IHNob3duIHdoZW4gdGVtcGxhdGUgaGFzIGJlZW4gZWRpdGVkPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgZmlsZW1hbmFnZW1lbnQgYW5kIHVwbG9hZCBmdW5jdGlvbnMgdG8gY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJyZWFkY3VtYnMgdG8gZmlsZXBpY2tlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZG1pbnMgbWF5IGJyb3dzZSB0aGUgZW50aXJlIGRpciB0cmVlIGluIGZpbGVwaWNrZXIgZmlsZSBicm93c2VyIHJlZ2FyZGxlc3Mgb2YgdGVtcGxhdGUgcGFyYW1zPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG1pbWUgdHlwZSBjaGVja2luZyB0byBnZXQgZmlsZSB0eXBlPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHJhd3VybGVuY29kZSBpbiBzcmMgYXR0cmlicyB0byBkaXNwbGF5IGltYWdlcyB3aXRoIHdlaXJkIGZpbGVuYW1lcy48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5taXNjZWxsYW5lb3VzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgT09QIHN0dWZmIChwcml2YXRlL3B1YmxpYy9wcm90ZWN0ZWQpIHRvIGdhaW4gbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggUEhQNDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIGFqYXggZnVuY3Rpb25zIHRvIHJldHVybiB4bWwgdmFsdWVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgdXNhZ2Ugb2YgSW1hZ2VNYW5hZ2VyIG9uY2UgYW5kIGZvciBhbGwuIChjYXVzZWQgb25seSB0cm91YmxlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjMgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCTx1bD4NCgkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhbGlhcyB3YXMgbm90IGFsd2F5cyBjb252ZXJ0ZWQgcHJvcGVybHk8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSB1bnN1Ym1pdHRlZCBjb250ZW50IGdvdCBsb3N0IGlmIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFkZGVkIHN0YXJ0L2VuZCBkYXRlPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aW1lcGlja2VyOyByZXBsYWNlZCBieSBhIHNpbXBsZSBkcm9wZG93bjwvcD48L2xpPg0KCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9pbWFnZX08L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJPC91bD4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMiAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBjaGFuZ2luZyBiYWNrIHRvIGRlZmF1bHQgY29udGVudCB0eXBlIG9yIGNoYW5naW5nIHRlbXBsYXRlIGNhdXNlZCBmYXRhbCBlcnJvcnM8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmcgd2hlbiBzYXZpbmcgYSBwYWdlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHByZXZpZXcgdGFiPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZS1hZGRlZCBleHBhbmQvY29sbGFwc2UgYnV0dG9uIHRvIHRvZ2dsZSBjb250ZW50IGJsb2NrcyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbXMgZWRpdG9yX2dyb3Vwcy9lZGl0b3JfdXNlcnMgdG8gc3BlY2lmeSBjZXJ0YWluIHVzZXJzL2dyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgY2VydGFpbiBibG9ja3M8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW1zIHNlbGVjdGVkL2NoZWNrZWQ7IHVzZSBwYXJhbSBkZWZhdWx0IGluc3RlYWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGJsb2NrIGlkcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIGJsb2NrIG5hbWUgdXNpbmcgY29yZSBmdW5jdGlvbiBtdW5nZV9zdHJpbmdfdG9fdXJsICh0byByZW1vdmUgc3BlY2lhbCBjaGFycywgd2hpdGVzcGFjZXMsIHVtbGF1dHMgZXRjLik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyBvZiBibG9ja3R5cGUgZHJvcGRvd24vc2VsZWN0X211bHRpcGxlIHdoZXJlIGZpcnN0IGl0ZW0gaGFkIGFuIGVtcHR5IGxhYmVsIGlmIG9ubHkgdGhlIHBhcmFtICZxdW90O3ZhbHVlcyZxdW90OyBpcyB1c2VkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiAkcGFnZV9hbGlhcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2FsbG93X25vbmUmcXVvdDsgdG8gYWxsIGNvbnRlbnQgYmxvY2sgdHlwZXMgdG8gc3BlY2lmeSBpZiB0aGUgcHJlZGVmaW5lZCBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBpZiBubyB2YWx1ZSBpcyBlbnRlcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZW1wdHkgdmFsdWVzIHdlcmUgbmV2ZXIgYmUgc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZGVmYXVsdCB2YWx1ZSBpbiBmcm9udGVuZCB3YXMgaWdub3JlZCBpZiB0aGUgJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBwYXJhbSB3YXMgY2hhbmdlZCBhZnRlciBhbiBlbXB0eSB2YWx1ZSBoYXMgYmVlbiBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3NvcnRhYmxlX2l0ZW1zJnF1b3Q7IHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgcmVvcmRlcmluZyBzdHVmZiBmb3Igbm93IChjYXVzZXMgdHJvdWJsZSBhdCB0aGlzIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uJiMwMzk7dCBiZSBzYXZlZCBpbiBtb2R1bGUgZGIgdGFibGUgYW55bW9yZSAtPiBob3BlZnVsbHkgc3BlZWQgdXAgbG9hZGluZyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBkdXBsaWNhdGUgY29udGVudCBibG9ja3M8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5BZHZhbmNlZENvbnRlbnQgMC4zIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZXdyaXRlIGNvZGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gdXNpbmcgc2VwYXJhdGUgbW9kdWxlIHRlbXBsYXRlIG5vdyB0byBkc3BsYXkgY29udGVudCBibG9ja3M8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgcGFnZSBhbGlhcyBpbmhlcml0YW5jZTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMyAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBNYWpvciBCdWdmaXggKG1pc3NpbmcgJnF1b3Q7OyZxdW90OyBhbmQgc3RyYW5nZSBpbnZpc2libGUgaW52YWxpZCBjaGFycyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPlhDb250ZW50IEJFVEEgMiAoQXByaWwgMjAxMCAtIGRpc2NvbnRpbnVlZCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHBhcmFtICZxdW90O2RlbGltaXRlciZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgJnF1b3Q7U2hvdyBsb2dpbiBmb3JtJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBwYWdlIGFsaWFzIHRvIGFkZCBpdCBhcyBwcmVmZml4OyBzbyBpZiB5b3UgaGF2ZSBhIHBhZ2UgY2FsbGVkICZxdW90O21lbWJlcnMmcXVvdDsgYW5kIHNlbGVjdCBmb3IgZWFjaCBjaGlsZCBwYWdlICZxdW90O2luaGVyaXQgcGFnZSBhbGlhcyZxdW90OyBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggJnF1b3Q7bWVtYmVyc18mcXVvdDs7IG1ha2VzIGZpbHRlcmluZyBvZiBtZW51IGVudHJpZXMgd2l0aCBNZW51TWFuYWdlciBwYXJhbSAmcXVvdDtleGNsdWRlcHJlZmZpeCZxdW90OyBvciAmcXVvdDtpbmNsdWRlcHJlZmZpeCZxdW90OyBlYXNpZXIuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiANCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIChBcHJpbCAyMDEwKTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgcGFyYW1zOyBzZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgZGV0YWlsczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNsZWFudXAgY29kZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIGZldV9hY2Nlc3MgYW5kIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc3R5bGUgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc21hcnR5T24gKGZvciBwcm9jZXNzaW5nIHNtYXJ0eSB2YXJzIG9mIHRoZSB0ZW1wYXRlIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4xLjMgKEFwcmlsIDIwMDkpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgZmV1IGFjY2VzcyBvcHRpb24gLSAoTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQSBzaW5nbGUgZmlsZSBDb250ZW50Mi5pbmMucGhwIHRoYXQgbmVlZHMgdG8gYmUgcGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbGF5b3V0L29wdGlvbnMgb2YgYmFja2VuZCBwYW5lbCBjYW4gYmUgY29udHJvbGVkIGJ5IGFkZGl0aW9uYWwgc21hcnR5IHBhcmFtcyBpbiB0aGUgdGVtcGxhdGU7IGludGVncmF0ZWQgdGhlIHtjb250ZW50X2ltYWdlfSB0YWcgLSAobW9kIGJ5IE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxiciAvPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjM3NzUxMDg2MzM4ODQ5MDEwMDAuMTIzNTM5MTM2My4xMjk2MDUxMzU2LjEyOTYwNzE4MDUuOTInOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjk2MDcxODA1LjkyLjQxLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1kZXYuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9wcm9qZWN0cy9jb250ZW50Mnx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTg2MzEwOTU0LTEyNTcyNDM5ODUxNzcnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRlbnV0byBBdmFuemF0byc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxhdG8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50ICVzIGRpc2luc3RhbGxhdG8nOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bG8gQWR2YW5jZWRDb250ZW50IGFnZ2lvcm5hdG8gYWxsYSB2ZXJzaW9uZSAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsbyBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGF0by4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsbyBBZHZhbmNlZENvbnRlbnQgJXMgZGlzaW5zdGFsbGF0by4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ1ZvbGV0ZSBkYXZ2ZXJvIGRpc2luc3RhbGxhcmUgaWwgbW9kdWxvIEFkdmFuY2VkQ29udGVudD8nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RhOjwvc3Ryb25nPiBRdWVzdG8gYmxvY2NvIHZpZW5lIHV0aWxpenphdG8gcGkmdWdyYXZlOyB2b2x0ZSBuZWkgdGVtcGxhdGUuIFF1aSB2ZWRldGUgc29sbyBpbCBwcmltbyBibG9jY28uPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RhOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAmIzAzOTslcyYjMDM5OyBhcyB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRW5kIGRhdGUgbXVzdCBiZSBsYXRlciB0aGFuIHN0YXJ0IGRhdGUuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ0N1cnJlbnQgZGlyZWN0b3J5JzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdJbWFnZXNpemUnOwokbGFuZ1snc2l6ZSddID0gJ0ZpbGVzaXplJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdJbmhlcml0IGZyb20gcGFyZW50JzsKJGxhbmdbJ25vbmUnXSA9ICdub25lJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkJzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlICYjMDM5OyVzJiMwMzk7IG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJiMwMzk7JXMmIzAzOTsuPGJyIC8+Q2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBJbnN1ZmZpY2llbnQgcGFyYW1zLiA8YnIgLz5NaXNzaW5nIHBhcmFtICYjMDM5OyVzJiMwMzk7IGZvciBibG9jayAmIzAzOTslcyYjMDM5Oy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgYWNjZXNzJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UgaWYgbm8gYWNjZXNzJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdTaG93IGxvZ2luIGZvcm0nOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnUmVnaXN0ZXJlZCB1c2VycyBvbmx5JzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvY2snOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ1VzZSBleHBpcmUgZGF0ZSc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICdTdGFydCBEYXRlJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdFbmQgRGF0ZSc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICdCbG9jayBDb250ZW50JzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldCBQYWdlIHRvIEluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdEZWxldGUgUGFnZSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdVbmluc3RhbGwgYWN0aW9uJzsKJGxhbmdbJ3NldGNvbnRlbnQxJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiBBZHZhbmNlZENvbnRlbnQgYmFjayB0byB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIEFkdmFuY2VkQ29udGVudCBiYWNrIHRvIHR5cGUgQ29udGVudCBhbmQgcmVtb3ZlIGFkZGl0aW9uYWwgY29udGVudCBibG9ja3MnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyZW5jZXMgdXBkYXRlZCc7CiRsYW5nWydzdWNjZXNzJ10gPSAnT2snOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvcic7CiRsYW5nWydkZWxldGVwYWdlcyddID0gJ0RlbGV0ZSBhbGwgcGFnZXMgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIHR5cGUgJXMgdG8gdHlwZSAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ0FsbCBjb250ZW50IHBhZ2VzIHNldCB0byBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgYWxsIGNvbnRlbnQgcGFnZXM/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnSGlkZSB0aGlzIG1lc3NhZ2UnOwokbGFuZ1snY29udGVudHNldHRpbmdzJ10gPSAnRGVmYXVsdCBBZHZhbmNlZENvbnRlbnQgc2V0dGluZ3MnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnVXNlIHNtYXJ0eSB0byBwcm9jZXNzIHRoZSBwYXJhbXMnOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gQ291bGQgbm90IGxvYWQgbW9kdWxlICYjMDM5OyVzJiMwMzk7LiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBNb2R1bGUgJiMwMzk7JXMmIzAzOTsgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAnQWxsIHBhZ2VzIG9mIHR5cGUgJXMgc3VjY2VzZnVsbHkgY2hhbmdlZCB0byAlcyc7CiRsYW5nWydzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJ10gPSAnU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIGRpc3BsYXkgc2V0dGluZ3MnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdjb250ZW50IGJsb2NrIG1lc3NhZ2UnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvY2sgZ3JvdXBzJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncGVyIHBhZ2UnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHRlbXBsYXRlJzsKJGxhbmdbJ2JvdGgxJ10gPSAndGVtcGxhdGUgT1IgcGFnZSAnOwokbGFuZ1snYm90aDInXSA9ICd0ZW1wbGF0ZSBBTkQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudCc7CiRsYW5nWydjb250ZW50MiddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1sncHJlZnMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyc7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddID0gJ05vIGlucHV0IGlkIGdpdmVuIG9yIGlucHV0IGlkIGFscmVhZHkgZXhpc3RzLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnB1dCBJRCBpcyBhbHJlYWR5IGluIHVzZS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4gKG11c3QgYmUgdW5pcXVlKSc7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgZGVsZXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgZGVsZXRlZC4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnRGVsZXRlIHNlbGVjdGVkIGl0ZW1zJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGlzIGl0ZW0/JzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJ10gPSAnRG8geW91IHJlYWxseSB3YW50IGRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbXM/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ1VzZSBjb250ZW50dHlwZSc7CiRsYW5nWydoZWxwX3RwbF92YXJzJ10gPSAnPHA+PHN0cm9uZz5UZW1wbGF0ZSB2YXJzOjwvc3Ryb25nPjwvcD4NCjxwPjxwcmU+PGNvZGU+eyRpbnB1dHN9PC9jb2RlPjwvcHJlPiBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBkZWZpbmVkIGlucHV0IGVsZW1lbnRzIG9mIHRoYXQgbXVsdGkgaW5wdXQgYmxvY2suPGJyIC8+DQpFYWNoIGlucHV0IGVsZW1lbnQgaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgaXRzIHBhcmFtcy4gPGJyIC8+DQpTZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgaW5mby48YnIgLz4NCkFkZGl0aW9uYWwgcGFyYW0gaXMgJnF1b3Q7aW5wdXQmcXVvdDsgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4nOwokbGFuZ1snaGVscCddID0gJzxiciAvPg0KPGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQo8cD5UaGlzIGlzIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSAmcXVvdDtDb250ZW50JnF1b3Q7IG9mIENNU21zLjxiciAvPg0KSXQgcHJvdmlkZXMgbW9yZSBmbGV4aWJpbGl0eSBieSBjcmVhdGluZyBjdXN0b20gaW5wdXQgY29udHJvbHMgaW4gYmFja2VuZC48YnIgLz4NClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIA0KaW4gc2VwYXJhdGUgcGFnZSB0YWJzLCBibG9jayB0YWJzIGluc2lkZSBhIHBhZ2UgdGFiIG9yIGluIGZpZWxkc2V0cyBieSBqdXN0IA0KdXNpbmcgYWRkaXRpb25hbCBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlIHdoZW4gY2FsbGluZyB0aGUgY29udGVudC48YnIgLz4NCkl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIGFuZCBoaWRlIHRoZSBjb250ZW50LCByZXBsYWNlIGl0IGJ5IHRoZSBsb2dpbiBmb3JtIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIG9yIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2Ugc2hvd2luZyB0aGUgbG9naW4gZm9ybSBvciANCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPg0KUGFnZSBwcm9wZXJ0eSBvZiBGcm9udEVuZFVzZXJzIGFjY2VzcyBhbmQgcmVkaXJlY3QgcGFnZSBjYW4gYmUgaW5oZXJpdGVkIGJ5IA0KcGFyZW50IHBhZ2VzLjwvcD4NCjxwPjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAmcXVvdDtFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQmcXVvdDsuPC9wPg0KPHA+QWRkaXRpb25hbGx5IHlvdSB3aWxsIGhhdmUgYSBuZXcgY29udGVudCB0eXBlICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhdmFpbGFibGUgDQp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4NCjxwPkFkZCB0aGUgZm9sbG93aW5nIHBhcmFtcyB0byB5b3VyIGNvbnRlbnQgdGFnIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSwgDQpjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiB5b3VyIHBhZ2UgdG8gJnF1b3Q7QWR2YW5jZWRDb250ZW50JnF1b3Q7IGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQlOb3csIGlmIHlvdSBlZGl0IGEgcGFnZSB0aGVyZSB3aWxsIGJhIGEgdGV4dGFyZWEgY2FsbGVkICZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgbWF5IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXMgKG5vIHdoaXRlc3BhY2VzLCBzcGVjaWFsIGNoYXJzLCB1bWxhdXRzIGV0Yy4pLiBPdGhlcndpc2UgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBwcm9wZXIgbmFtZSAoc2ltaWxhciB0byB0aGUgcGFnZSBhbGlhcykuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD53eXNpd3lnPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gZmFsc2UsIHRoZW4gYSB3eXNpd3lnIHdpbGwgbmV2ZXIgYmUgdXNlZCB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIHRydWUsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm9uZWxpbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPklmIHNldCB0byB0cnVlLCB0aGVuIG9ubHkgb25lIGVkaXQgbGluZSB3aWxsIGJlIHNob3duIHdoaWxlIGVkaXRpbmcgdGhpcyBibG9jay4gSWYgZmFsc2UsIHRoZW4gaXQgYWN0cyBhcyBub3JtYWwuIE9ubHkgd29ya3Mgd2hlbiBibG9jayBwYXJhbWV0ZXIgaXMgdXNlZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5EZWZhdWx0IGNvbnRlbnQgd2hlbiBjcmVhdGluZyBhIG5ldyBwYWdlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5sYWJlbDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5Qcm9tcHQgZm9yIHRoaXMgY29udGVudCBibG9jay4gUG9zc2libGUgdmFsdWVzIGFyZSBhbnkgZXhwcmVzc2lvbi4gSWYgYmxhbmssIHRoZSB1bmNvbnZlcnRlZCBibG9jayBuYW1lIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFzc2lnbjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBc3NpZ25zIHRoZSBjb250ZW50IHRvIGEgc21hcnR5IHBhcmFtZXRlciwgd2hpY2ggeW91IGNhbiB0aGVuIHVzZSBpbiBvdGhlciBhcmVhcyBvZiB0aGUgcGFnZSwgb3IgdXNlIHRvIHRlc3Qgd2hldGhlciBjb250ZW50IGV4aXN0cyBpbiBpdCBvciBub3QuPGJyIC8+DQoJCQkJRXhhbXBsZSBvZiBwYXNzaW5nIHBhZ2UgY29udGVudCB0byBhIFVzZXIgRGVmaW5lZCBUYWcgYXMgYSBwYXJhbWV0ZXI6PGJyIC8+DQoJCQkJPGNvZGU+e2NvbnRlbnQgYXNzaWduPXBhZ2Vjb250ZW50fTxiciAvPg0KCQkJCXt0YWJsZV9vZl9jb250ZW50cyB0aGVwYWdlY29udGVudD0mcXVvdDskcGFnZWNvbnRlbnQmcXVvdDt9PC9jb2RlPjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0mcXVvdDtmb28mcXVvdDt9e0FkdmFuY2VkQ29udGVudH17L2NhcHR1cmV9PC9jb2RlPiA8YnIgLz5pbnN0ZWFkLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+QWR2YW5jZWQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3R5cGU8L3R0PiAodGV4dCxjaGVja2JveCxkcm9wZG93bixzZWxlY3RfbXVsdGlwbGUsZGF0ZSxtdWx0aV9pbnB1dCkgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIHNwZWNpZnkgd2hhdCBjb250ZW50IGNvbnRyb2wgdHlwZSBpcyB1c2VkIGluIHRoZSBiYWNrIGVuZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cGFnZV90YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdGFiIGluIHdoaWNoIHRoZSBjb250ZW50IGJsb2NrIGlzIGRpc3BsYXllZCBpbiB0aGUgYmFja2VuZC48YnIgLz4NCgkJCQlQb3NzaWJsZSB2YWx1ZXMgYXJlICZxdW90O21haW4mcXVvdDsgKCA9IFRhYiAmcXVvdDtNYWluIE1lbnUmcXVvdDspLCAmcXVvdDtvcHRpb25zJnF1b3Q7ICggPSBUYWIgJnF1b3Q7T3B0aW9ucyZxdW90OyksIG9yIGFueSBvdGhlciBhcmJpdHJhcnkgdmFsdWU8YnIgLz4NCgkJCQk8ZW0+ZS5nLiB5b3UgY2FuIGFkZCBhIGNoZWNrYm94IHRvIHRoZSBvcHRpb25zIHRhYiBvciBjcmVhdGUgbmV3IHRhYnM8L2VtPi4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190YWI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgdGhlIGJsb2NrcyB3aXRoaW4gYSBwYWdlIHRhYiBjYW4gYmUgZnVydGhlciBkaXZpZGVkIGludG8gdGFicyBvciBjYW4gYmUgZ3JvdXBlZCB0b2dldGhlci4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfZ3JvdXA8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+V2l0aCB0aGlzIHBhcmFtZXRlciwgbXVsdGlwbGUgYmxvY2tzIGNhbiBiZSBncm91cGVkIGluIGEgZmllbGRzZXQuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFjdGl2ZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQWxsb3dzIHlvdSB0byBkaXNhYmxlIGEgY29udGVudCBibG9jay4gRGlzYWJsZWQgY29udGVudCBibG9ja3Mgd29uJiMwMzk7dCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4NCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPg0KCQkJCVRoaXMgc2hvd3MgdGhlIGNvbnRlbnQgYmxvY2sgb25seSB0byBjZXJ0YWluIGZldSBncm91cHMuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBsb2dpbiBmb3JtIHdpbGwgb25seSBiZSBzaG93biBvbmUgdGltZS48YnIgLz4NCgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gJnF1b3Q7ZGVmYXVsdCZxdW90OyB3aWxsIGJlIHVzZWQuIDxiciAvPklmIHNldCB0byB0cnVlIGFuZCBibG9jayBpcyBvZiB0eXBlIGltYWdlL2ZpbGUgdGhlIG9wdGlvbiAmcXVvdDtub25lJnF1b3Q7IChtb2RlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7KSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0mcXVvdDtmaWxlcGlja2VyJnF1b3Q7KSB3aWxsIGJlIGRpc3BsYXllZC48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c21hcnR5PC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUdXJuIHNtYXJ0eSBwcm9jZXNzaW5nIG9mIHZhbHVlcyBvbi9vZmYuPGJyIC8+DQoJCQkJSWYgc2V0IHRvIHRydWUgYW55IGdpdmVuIHZhbHVlIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBzbWFydHkgZW5naW5lLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTogPC9zdHJvbmc+IENvbnNpZGVyIHRoYXQgeW91IGNhbm5vdCB1c2UgdGhlIGRlZmF1bHQgc21hcnR5IGRlbGltaXRlcnMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdGVtcGxhdGUuIFRoaXMgd2lsbCBjYXVzZSBzbWFydHkgZXJyb3JzIGluIGZyb250ZW5kLjxiciAvPg0KCQkJCVNvIHlvdSBuZWVkIHRvIHVzZSA6OjogYXMgZGVsaW1pdGVyIGluc3RlYWQuPGJyIC8+PC9lbT4NCgkJCQlFLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtDYXRlZ29yaWVzJnF1b3Q7IGxhYmVsPSZxdW90O1NlbGVjdCBhIGNhdGVnb3J5JnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDsgaXRlbXM9JnF1b3Q7Ojo6Z2xvYmFsX2NvbnRlbnQgbmFtZT0mIzAzOTtjYXRlZ29yeWxpc3QmIzAzOTs6OjomcXVvdDsgc21hcnR5PSZxdW90O3RydWUmcXVvdDt9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlc2NyaXB0aW9uPC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT5BbGxvd3MgeW91IHRvIGFkZCBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIHRvIHRoYXQgYmxvY2sgZm9yIHlvdXIgZWRpdG9ycy48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byB0cnVlL2ZhbHNlIHRvIGRpc3BsYXkgYmxvY2sgaW4gYmFja2VuZCBpbiBjb2xsYXBzZWQvZXhwYW5kZWQgbW9kZSBieSBkZWZhdWx0LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gd2lsbCBiZSBhbHdheXMgZmFsc2UgaWYgbm9fY29sbGFwc2U9dHJ1ZSBpcyB1c2VkLjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bm9fY29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byBmYWxzZSB0byBkaXNhYmxlIGZvbGRpbmcgb2YgYmxvY2tzLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgc2V0IHRvIHRydWUgcGFyYW0gY29sbGFwc2UgaXMgYWx3YXlzIGZhbHNlLjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+cmVxdWlyZWQ8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNldCB0byB0cnVlIGlmIHRoaXMgYmxvY2sgbWF5IG5vdCBiZSBlbXB0eS48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2NoZWNrYm94JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBVc2UgJnF1b3Q7MSZxdW90OyBmb3IgY2hlY2tlZCBhbmQgJnF1b3Q7MCZxdW90OyBmb3IgdW5jaGVja2VkIGJ5IGRlZmF1bHQ8YnIgLz48L2VtPg0KCQkJCUUuZy4gPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZHJvcGRvd24mcXVvdDsvJnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pml0ZW1zPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkl0ZW0gbGFiZWwocykgb2YgdGhlIGZpZWxkKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+VmFsdWUocykgb2YgdGhlIGl0ZW1zIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVByZXNlbGVjdGVkIHZhbHVlKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikNCgkJPHVsPg0KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9JnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7PC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uJiMwMzk7dCBiZSBzaG93biBhcyBhIG11bHRpcGxlIHNlbGVjdCBpbnB1dCB3aXRoIG9wdGlvbnMgYnV0IGFzIGEgbGlzdCBvZiBjaGVja2JveGVzIHRoYXQgY2FuIGJlIHJlb3JkZXJlZC48YnIgLz5FYWNoIHJvdyBjb250YWlucyB0aGUgaXRlbSBsYWJlbCBhbmQgYSBjaGVja2JveCB3aXRoIHRoZSBpdGVtIHZhbHVlLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gb25seSB0aGUgb3JkZXIgb2YgdGhlIDxzdHJvbmc+c2VsZWN0ZWQ8L3N0cm9uZz4gaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIGFsd2F5cyBkaXNwbGF5ZWQgb24gdGhlIHRvcCBvZiB0aGUgbGlzdCB3aGVuIHJlbG9hZGluZyB0aGUgZWRpdCBwYWdlLjxiciAvPg0KCQkJCVVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2RhdGUmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9ob3VyczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgaG91cnMgaW4gdGhlIGNsb2NrIGRyb3Bkb3duLiAoZGVmYXVsdCBpcyAxKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBzdGFydCBob3VyIG9mIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfaG91cjwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIGVuZCBob3VyIG9mIHRoZSBjbG9jayBkcm9wZG93biAoZGVmYXVsdCBpcyAxMiBvciAyMykNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaG93MjRoPC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRvIGZhbHNlIGlmIEFNL1BNIGlzIHVzZWQuIChkZWZhdWx0IGlzIHRydWUpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RlcF9taW51dGVzPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlzdGVwcyBvZiBtaW51dGVzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMTApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3RhcnRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgbWludXRlIG9mIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMCkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVuZF9taW51dGU8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgbWludXRlIG9mIHRoZSBjbG9jayBkcm9wZG93biAoZGVmYXVsdCBpcyA1OSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaG93X2Nsb2NrPC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRvIGZhbHNlIGlmIG5vIHRpbWUgZHJvcGRvd24gc2hvdWxkIGJlIGRpc3BsYXllZCAoZGVmYXVsdCBpcyB0cnVlKTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSWYgc2V0IHRvIGZhbHNlIDAwOjAwIG8mIzAzOTtjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O211bHRpX2lucHV0JnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0czwvdHQ+IChjc3Ygb2YgaW5wdXQgaWRzIHlvdSBjcmVhdGVkIGluIHRoZSBiYWNrZW5kKSANCgkJPGJyIC8+PGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnZhbHVlX2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIHZhbHVlcyBvZiB0aGUgaW5wdXRzIG9mIG9uZSBtdWx0aV9pbnB1dCB3aGVuIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UuPGJyIC8+DQoJCQkJRGVmYXVsdCBpcyAmcXVvdDs8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0+JnF1b3Q7DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgbXVsdGlfaW5wdXRzIHlvdSBkZWZpbmVkIGZvciB0aGlzIGNvbnRlbnQgYmxvY2sgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1BhZ2UgbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkV4YW1wbGUgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDs6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHNlbGVjdGlvbiZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90O3xOZXdzfEdhbGxlcnl8TWVudSZxdW90O30NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IGVkaXQgYSBwYWdlPzwvcD4NCgkJPHA+SXQgd2lsbCBzaG93IHlvdSBhIGZpZWxkc2V0IHdpdGggbGVnZW5kICZxdW90O1BhZ2UgbW9kdWxlcyZxdW90Oy4gPGJyIC8+DQoJCUluc2lkZSB0aGlzIGZpZWxkc2V0IGl0IHNob3dzIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDsgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0JiMwMzk7cyBhc3N1bWUgeW91IHNlbGVjdCB0aGUgTmV3cyBtb2R1bGUgZm91ciB0aW1lcyB3aXRoIGRpZmZlcmVudCBtb2R1bGUgcGFyYW1zIGxpa2UgY2F0ZWdvcnk9JnF1b3Q7MSZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MiZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MyZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7NCZxdW90Oy48YnIgLz4NCgkJSW4gdGhlIGRhdGFiYXNlIGl0IHN0b3JlcyB0aGlzIHN0cmluZzo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MSZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MiZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7MyZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9JnF1b3Q7NCZxdW90Ow0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiBleHBsb2RlIHRoZSBjb250ZW50IGJ5IHRoZSBkZWxpbWl0ZXJzIGFuZCBjYWxsIHRoZSBzZWxlY3RlZCBtb2R1bGVzLjwvcD4NCgkJPHA+RnVsbCBFeGFtcGxlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQ0KCQl7Y29udGVudCBibG9jaz0mcXVvdDtteV9tb2R1bGVzJnF1b3Q7IGJsb2NrX3R5cGU9JnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDsgaW5wdXRzPSZxdW90O01vZHVsZSxNb2R1bGUsTW9kdWxlLE1vZHVsZSZxdW90OyBhc3NpZ249JnF1b3Q7bW9kdWxlcyZxdW90O30NCgkJDQoJCXsqIGV4cGxvZGUgYmxvY2sgY29udGVudCBpbiBhbiBhcnJheSB0byBnZXQgdGhlIGlucHV0IGdyb3VwcyAqfQ0KCQl7YXNzaWduIHZhcj1tb2R1bGVzIHZhbHVlPSZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPiZxdW90O3xleHBsb2RlOiRtb2R1bGVzfQ0KCQkNCgkJeyogbG9vcCB0aHJvdWdoIHRoZSBzZWxlY3RlZCBtb2R1bGVzICp9DQoJCXtmb3JlYWNoIGZyb209JG1vZHVsZXMgaXRlbT0mcXVvdDttb2R1bGUmcXVvdDt9DQoJCQl7aWYgJG1vZHVsZSAhPSAmIzAzOTsmIzAzOTt9DQoJCQkNCgkJCQl7KiBleHBsb2RlIHRoZSBpbnB1dCB2YWx1ZXMgaW4gbW9kdWxuYW1lIGFuZCBtb2R1bGUgcGFyYW1ldGVycyAqfQ0KCQkJCXthc3NpZ24gdmFyPW1vZHVsZV9pdGVtcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gJiMwMzk7JiMwMzk7fQ0KCQkJCQ0KCQkJCQl7KiBjYWxsIHRoZSBtb2R1bGUgKn0NCgkJCQkJe2lmIGlzc2V0KCRtb2R1bGVfaXRlbXNbMV0pfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDomIzAzOTtjbXNfbW9kdWxlIG1vZHVsZT0mcXVvdDsmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiYjMDM5OyZxdW90OyAmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMV18Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7ZWxzZX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsmIzAzOTt8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEdlb3JnIEJ1c2NoIChOYU4pLiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KPGJyIC8+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC43LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3M8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHN1cHBvcnQgb2Yge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4yIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAmIzAzOTtjb3JyZWN0bHkmIzAzOTspPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIHBhcmFtcyBleGNsdWRlX3ByZWZpeCwgaW5jbHVkZV9wcmVmaXgsIGV4Y2x1ZGVfc3VmaXgsIGluY2x1ZGVfc3VmaXg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MSAocHV0IEZldUFjY2VzcyBpbiBCbG9ja3RhYik8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gQWRkZWQgbmV3IHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoZSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGFyYW0gZGlyIG9mIGJsb2NrIHR5cGUgZmlsZS9pbWFnZSBuZWVkcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXIgb25seSAodGhlcmUgaXMgbm8gaW1hZ2UgdXBsb2FkcyBkaXIgdXNlZCBhbnltb3JlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTE1MTogZml4ZWQgc3R5bGVzaGVldCBpc3N1ZSB3aXRoIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIG9mIGNvbnRlbnQgYmxvY2tzIGluIElFL1NhZmFyaS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MmcXVvdDsgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZWxldGUmcXVvdDsgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2NyZWF0ZV9kaXJzJnF1b3Q7IHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG5ldyBibG9ja3R5cGUgJnF1b3Q7bm90ZSZxdW90OyB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9mIEZpbGVNYW5hZ2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+SW1wb3J0YW50IG5vdGljZTo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICZxdW90O3R5cGUmcXVvdDsgdG8gJnF1b3Q7YmxvY2tfdHlwZSZxdW90OyBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTEwMTogcGFnZV90YWIgJnF1b3Q7b3B0aW9ucyZxdW90OyB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWltZS10eXBlIGlzc3VlIChhZGRlZCBwcmVmZXJlbmNlIHRvIHRvZ2dsZSBtaW1lLXR5cGUgdXNhZ2Ugb24vb2ZmKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBvdGhlciBtaW5vciBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3Nob3dfY2xvY2smcXVvdDsgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGF0ZV9mb3JtYXQmcXVvdDsgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MDQ1OiBXaGVuIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgLT4gQWR2YW5jZWQgQ29udGVudCBsb3RzIG9mIFBIUCBlcnJvcnM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQ29udGVudCZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA3MzogaW5jb3JyZWN0IGRpc3BsYXkgb2YgZmlsZXMgd2hlbiBvcGVuaW5nIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAmcXVvdDt2YWx1ZXMmcXVvdDsgaXMgdXNlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogJHBhZ2VfYWxpYXMpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHRvIGFsbCBjb250ZW50IGJsb2NrIHR5cGVzIHRvIHNwZWNpZnkgaWYgdGhlIHByZWRlZmluZWQgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQgaWYgbm8gdmFsdWUgaXMgZW50ZXJlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICZxdW90O2FsbG93X25vbmUmcXVvdDsgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzb3J0YWJsZV9pdGVtcyZxdW90OyB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbiYjMDM5O3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+QWR2YW5jZWRDb250ZW50IDAuMyAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBidWdmaXhlczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhZ2UgYWxpYXMgaW5oZXJpdGFuY2U8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjx1bD4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICZxdW90OzsmcXVvdDsgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAmcXVvdDtkZWxpbWl0ZXImcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmc8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICZxdW90O1Nob3cgbG9naW4gZm9ybSZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgcGFnZSBhbGlhcyB0byBhZGQgaXQgYXMgcHJlZmZpeDsgc28gaWYgeW91IGhhdmUgYSBwYWdlIGNhbGxlZCAmcXVvdDttZW1iZXJzJnF1b3Q7IGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAmcXVvdDtpbmhlcml0IHBhZ2UgYWxpYXMmcXVvdDsgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICZxdW90O21lbWJlcnNfJnF1b3Q7OyBtYWtlcyBmaWx0ZXJpbmcgb2YgbWVudSBlbnRyaWVzIHdpdGggTWVudU1hbmFnZXIgcGFyYW0gJnF1b3Q7ZXhjbHVkZXByZWZmaXgmcXVvdDsgb3IgJnF1b3Q7aW5jbHVkZXByZWZmaXgmcXVvdDsgZWFzaWVyLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXM8L3A+PC9saT4gDQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY29udmVydGVkIHRoZSBzaW5nbGUgZmlsZSBpbnRvIGEgbW9kdWxlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcmVkaXJlY3QgcGFnZSBpZiBmZXUgaXMgbm90IGxvZ2dlZCBpbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc21hcnR5IGxvZ2ljIGluIGJhY2tlbmQgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIEltZ01vZGUgKGRyb3Bkb3duIG9yIEltYWdlTWFuYWdlcikgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIENNU21zIDEuNi4qIHJlYWR5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBhY2VkIGluIGxpYi9jbGFzc2VzL2NvbnRlbnR0eXBlcy48L3A+PC9saT4NCgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8YnIgLz4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My41NjMyMzg0MDEwMTUxNDk0MDAuMTIyNjMzNDc1MS4xMjg5OTAxMjU5LjEyODk5MjI2MTUuODQnOwokbGFuZ1sncWNhJ10gPSAnUDAtMjAwNzY4NjkyMC0xMjUxMTkwODE1MDI3JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4OTkwMTI4NC44My41LnV0bWNzcj1mZWVkYnVybmVyfHV0bWNjbj1GZWVkOiBjbXNtYWRlc2ltcGxlL2Jsb2cgKENNUyBNYWRlIFNpbXBsZSl8dXRtY21kPWZlZWQnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ja_JP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCB1cGdyYWRlZCB0byAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyB1bmluc3RhbGxlZC4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz7ms6jmhI86PC9zdHJvbmc+IHtjb250ZW50IGJsb2NrPVwnJXNcJyAuLi4gfSBpcyBhbWJpZ291cy4gQmxvY2sgbmFtZXMgbXVzdCBiZSB1bmlxdWUuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIE9ubHkgZmlyc3QgYmxvY2sgd2lsbCBiZSBzaG93bi4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSBcJ2Jsb2NrXCcuPC9lbT4nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz7ms6jmhI86PC9zdHJvbmc+IFRoaXMgYmxvY2sgaXMgdXNlZCBtdWx0aXBsZSB0aW1lcyBpbiB0ZW1wbGF0ZS4gWW91IG9ubHkgc2VlIHRoZSBmaXJzdCBibG9jayBoZXJlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2Jhc2ljYXR0cmliJ10gPSAnPGVtPjxzdHJvbmc+5rOo5oSPOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSBcJyVzXCcgYXMgdmFsdWUgb2YgcGFyYW0gXCdibG9ja1wnLiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtIFwnYmxvY2tcJy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRW5kIGRhdGUgbXVzdCBiZSBsYXRlciB0aGFuIHN0YXJ0IGRhdGUuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ+OCq+ODrOODs+ODiOODh+OCo+ODrOOCr+ODiOODqic7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAn55S75YOP44K144Kk44K6JzsKJGxhbmdbJ3NpemUnXSA9ICfjg5XjgqHjgqTjg6vjgrXjgqTjgronOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ0luaGVyaXQgZnJvbSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ+OBquOBlyc7CiRsYW5nWydpbnZhbGlkJ10gPSAn54Sh5Yq5JzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlIFwnJXNcJyBvZiBwYXJhbSBibG9ja190eXBlIGluIGJsb2NrIFwnJXNcJy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1sneWVzJ10gPSAn44Gv44GEJzsKJGxhbmdbJ25vJ10gPSAn44GE44GE44GIJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgYWNjZXNzJzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UgaWYgbm8gYWNjZXNzJzsKJGxhbmdbJ3Nob3dsb2dpbmZvcm0nXSA9ICdTaG93IGxvZ2luIGZvcm0nOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnUmVnaXN0ZXJlZCB1c2VycyBvbmx5JzsKJGxhbmdbJ2Jsb2NrJ10gPSAn44OW44Ot44OD44KvJzsKJGxhbmdbJ3VzZWV4cGlyZWRhdGUnXSA9ICdVc2UgZXhwaXJlIGRhdGUnOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAn6ZaL5aeL5pelJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICfntYLkuobml6UnOwokbGFuZ1snYmxvY2tjb250ZW50J10gPSAn44OW44Ot44OD44Kv44O744Kz44Oz44OG44Oz44OEJzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldCBQYWdlIHRvIEluYWN0aXZlJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICfliYrpmaTjg5rjg7zjgrgnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnVW5pbnN0YWxsIGFjdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIHVwZGF0ZWQnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdGaWxlIG9wZXJhdGlvbnMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ1VwbG9hZCBhIG5ldyBmaWxlJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ0NyZWF0ZSBhIG5ldyBkaXJlY3RvcnknOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ+OCouODg+ODl+ODreODvOODiSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICfkvZzmiJAnOwokbGFuZ1snc3VjY2VzcyddID0gJ+OCquODvOOCseODvCc7CiRsYW5nWydlcnJvciddID0gJ+OCqOODqeODvCc7CiRsYW5nWydmaWxldXBsb2FkZWQnXSA9ICdGaWxlIFwnJXNcJyB1cGxvYWRlZCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgXCclc1wnIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ25ld2RpcmNyZWF0ZWQnXSA9ICdOZXcgZGlyIFwnJXNcJyBzdWNjZXNzZnVsbHkgY3JlYXRlZCc7CiRsYW5nWyduZXdkaXJmYWlsZWQnXSA9ICdBbiBlcnJvciBvY2N1cmVkIHRyeWluZyB0byBjcmVhdGUgZGlyIFwnJXNcJyc7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBcJyVzXCcgaXMgdG9vIGJpZyc7CiRsYW5nWydjb250YWluc2lsbGVnYWxjaGFycyddID0gJ0ZpbGVuYW1lIFwnJXNcJyBjb250YWlucyBvbmUgb3IgbW9yZSBpbGxlZ2FsIGNoYXJhY3RlcnMgKFwnLCIsKywqLFxcLC8sJiwkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdFcnJvciBtb3ZpbmcgdXBsb2FkZWQgZmlsZSBcJyVzXCcgaW50byBwbGFjZSc7CiRsYW5nWydjb25maXJtZGVsZXRlJ10gPSAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgZmlsZSBcXFwnJXNcXFwnPyc7CiRsYW5nWydkZWxldGVmaWxlc3VjY2VzcyddID0gJ0ZpbGUgXCclc1wnIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVmaWxlZmFpbGVkJ10gPSAnRmlsZSBcJyVzXCcgY291bGQgbm90IGJlIGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlc3ViZGlyZmFpbGVkJ10gPSAnRGlyIFwnJXNcJyBjb3VsZCBub3QgYmUgZGVsZXRlZCc7CiRsYW5nWydkZWxldGVzdWJkaXJzdWNjZXNzJ10gPSAnRGlyIFwnJXNcJyB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snY29uZmlybWRlbGV0ZWRpciddID0gJ0FyZSB5b3Ugc3VyZSB0byBkZWxldGUgdGhlIGRpcmVjdG9yeSBcXFwnJXNcXFwnPyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdEZWxldGUgZW1wdHkgc3ViZGlyJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICfjg5XjgqHjgqTjg6vliYrpmaQnOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlclwncyBkaXIgYWNjZXNzJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ1Nob3cgZmlsZW1hbmFnZW1lbnQgb3B0aW9ucyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXMnXSA9ICdTaG93IHRodW1ibmFpbHMnOwokbGFuZ1snYWxsb3dzY2FsaW5nJ10gPSAnQWxsb3cgb24tdGhlLWZseSByZXNpemluZyBvZiB1cGxvYWRlZCBpbWFnZXMnOwokbGFuZ1snc2NhbGluZ3dpZHRoJ10gPSAnU2NhbGluZyB3aWR0aCc7CiRsYW5nWydzY2FsaW5naGVpZ2h0J10gPSAnU2NhbGluZyBoZWlnaHQnOwokbGFuZ1snZGVmYXVsdGRpbWVuc2lvbnMnXSA9ICdEZWZhdWx0IGRpbWVuc2lvbnMnOwokbGFuZ1snYXV0byddID0gJ+iHquWLlSc7CiRsYW5nWydyZWxhdGl2ZXVybHMnXSA9ICdSZWxhdGl2ZSB1cmxzJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ0ZpbGVwaWNrZXIgc3R5bGUnOwokbGFuZ1snZmlsZXBpY2tlcnNpemUnXSA9ICdGaWxlcGlja2VyIHNpemUnOwokbGFuZ1snZmlsZW5hbWVvbmx5J10gPSAnU2hvdyBmaWxlbmFtZXMnOwokbGFuZ1sndGh1bWJuYWlsc29ubHknXSA9ICdTaG93IHRodW1ibmFpbHMnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzdGV4dCddID0gJ1Nob3cgdGh1bWJuYWlsLWZpbGVzIGFzIHJlZ3VsYXIgZmlsZXMnOwokbGFuZ1snZmlsZW5hbWVhbmR0aHVtYm5haWxzJ10gPSAnU2hvdyBib3RoIGZpbGVuYW1lcyBhbmQgdGh1bWJuYWlscyc7CiRsYW5nWydtYWtldGh1bWJuYWlsJ10gPSAnQ3JlYXRlIHRodW1ibmFpbHMnOwokbGFuZ1snZmlsZXBpY2tlcnNldHRpbmdzJ10gPSAnRmlsZVBpY2tlciBzZXR0aW5ncyc7CiRsYW5nWydyZXNpemV0byddID0gJ1Jlc2l6ZSBpbWFnZSB0byc7CiRsYW5nWydrZWVwYXNwZWN0cmF0aW8nXSA9ICdLZWVwIGFzcGVjdCByYXRpbyc7CiRsYW5nWydhbGxvd3Vwc2NhbGluZyddID0gJ0FsbG93IHVwc2NhbGluZyc7CiRsYW5nWydkZWNpbWFsZGVsaW1pdGVyJ10gPSAnLic7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywnOwokbGFuZ1snZGlybm90Zm91bmQnXSA9ICdEaXJlY3RvcnkgXCclc1wnIG5vdCBmb3VuZCEnOwokbGFuZ1snc2VsZWN0aW1hZ2UnXSA9ICdCcm93c2UgaW1hZ2VzJzsKJGxhbmdbJ3NlbGVjdGZpbGUnXSA9ICdCcm93c2UgZmlsZXMnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdEZWxldGUgYWxsIHBhZ2VzIG9mIHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ3VzZW1pbWV0eXBlJ10gPSAnVXNlIG1pbWUtdHlwZSB0byBnZXQgZmlsZSB0eXBlJzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiB0eXBlIGNvbnRlbnQgdG8gdHlwZSBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdBbGwgY29udGVudCBwYWdlcyBzZXQgdG8gQWR2YW5jZWRDb250ZW50Lic7CiRsYW5nWydjb25maXJtaW1wb3J0J10gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudCB0eXBlIG9mIGFsbCBjb250ZW50IHBhZ2VzPyc7CiRsYW5nWydub21pbWV0eXBlJ10gPSAnTm8gbWltZS10eXBlIGZ1bmN0aW9uIGF2YWlsYWJsZSBvciBub3QgY29uZmlndXJlZCBwcm9wZXJseS4gVGhpcyBmZWF0dXJlIGlzIGRpc2FibGVkLic7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddID0gJ0hpZGUgdGhpcyBtZXNzYWdlJzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ0RlZmF1bHQgQWR2YW5jZWRDb250ZW50IHNldHRpbmdzJzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAnVVJMIHBhcmFtcyB0byBhcHBlbmQgd2hlbiByZWRpcmVjdGluZyc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1VzZSBzbWFydHkgdG8gcHJvY2VzcyB0aGUgcGFyYW1zJzsKJGxhbmdbJ25vaW1hZ2VmaWxlJ10gPSAnXCclc1wnIGlzIG5vdCBhbiBpbWFnZSBmaWxlJzsKJGxhbmdbJ2ZpbGV0eXBlbm90YWxsb3dlZCddID0gJ0ZpbGV0eXBlIFwnJXNcJyBpcyBub3QgYWxsb3dlZCc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjEwMjU5MTU3MzAuMTI4Mzc4Mzk4Ni4xMjgzNzgzOTg2LjEyODM3ODM5ODYuMSc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI4Mzc4Mzk4Nic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI4Mzc4Mzk4Ni4xLjEudXRtY3NyPShkaXJlY3QpfHV0bWNjbj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTQ5NDk1ODE5NC0xMjgzNzgzOTg2OTA2JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyBpbnN0YWxsZWQnOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIHVuaW5zdGFsbGVkJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCB1cGdyYWRlZCB0byAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWxlIEFkdmFuY2VkQ29udGVudCAlcyB1bmluc3RhbGxlZC4nOwokbGFuZ1snY29uZmlybXVuaW5zdGFsbCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB1bmluc3RhbGwgdGhlIG1vZHVsZSBBZHZhbmNlZENvbnRlbnQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHtjb250ZW50IGJsb2NrPSYjMDM5OyVzJiMwMzk7IC4uLiB9IGlzIGFtYmlnb3VzLiBCbG9jayBuYW1lcyBtdXN0IGJlIHVuaXF1ZS4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gT25seSBmaXJzdCBibG9jayB3aWxsIGJlIHNob3duLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGlzIGJsb2NrIGlzIHVzZWQgbXVsdGlwbGUgdGltZXMgaW4gdGVtcGxhdGUuIFlvdSBvbmx5IHNlZSB0aGUgZmlyc3QgYmxvY2sgaGVyZS48L2VtPic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gQ2Fubm90IHVzZSBiYXNpYyBjb250ZW50IHByb3BlcnR5IG5hbWUgJiMwMzk7JXMmIzAzOTsgYXMgdmFsdWUgb2YgcGFyYW0gJiMwMzk7YmxvY2smIzAzOTsuIDxiciAvPlRoaXMgYmxvY2sgaXMgZGlzYWJsZWQuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZSBhbmQgY2hvc2UgYSBkaWZmZXJlbnQgdmFsdWUgb2YgcGFyYW0gJiMwMzk7YmxvY2smIzAzOTsuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ0VuZCBkYXRlIG11c3QgYmUgbGF0ZXIgdGhhbiBzdGFydCBkYXRlLic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdDdXJyZW50IGRpcmVjdG9yeSc7CiRsYW5nWydkaW1lbnNpb25zJ10gPSAnSW1hZ2VzaXplJzsKJGxhbmdbJ3NpemUnXSA9ICdGaWxlc2l6ZSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnSW5oZXJpdCBmcm9tIHBhcmVudCc7CiRsYW5nWydub25lJ10gPSAnbm9uZSc7CiRsYW5nWydpbnZhbGlkJ10gPSAnaW52YWxpZCc7CiRsYW5nWyd5ZXMnXSA9ICdZZXMnOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydmcm9udGVuZGFjY2VzcyddID0gJ0Zyb250ZW5kIGFjY2Vzcyc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdSZWRpcmVjdCBQYWdlIGlmIG5vIGFjY2Vzcyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnU2hvdyBsb2dpbiBmb3JtJzsKJGxhbmdbJ3JlZ2lzdGVyZWR1c2VycyddID0gJ1JlZ2lzdGVyZWQgdXNlcnMgb25seSc7CiRsYW5nWydibG9jayddID0gJ0Jsb2NrJzsKJGxhbmdbJ3VzZWV4cGlyZWRhdGUnXSA9ICdVc2UgZXhwaXJlIGRhdGUnOwokbGFuZ1snc3RhcnRkYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydlbmRkYXRlJ10gPSAnRW5kIERhdGUnOwokbGFuZ1snYmxvY2tjb250ZW50J10gPSAnQmxvY2sgQ29udGVudCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdTZXQgUGFnZSB0byBJbmFjdGl2ZSc7CiRsYW5nWydkZWxldGVwYWdlJ10gPSAnRGVsZXRlIFBhZ2UnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnVW5pbnN0YWxsIGFjdGlvbic7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuY2VzIHVwZGF0ZWQnOwokbGFuZ1snZmlsZW9wZXJhdGlvbnMnXSA9ICdGaWxlIG9wZXJhdGlvbnMnOwokbGFuZ1sndXBsb2FkbmV3ZmlsZSddID0gJ1VwbG9hZCBhIG5ldyBmaWxlJzsKJGxhbmdbJ2NyZWF0ZW5ld2RpciddID0gJ0NyZWF0ZSBhIG5ldyBkaXJlY3RvcnknOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ1VwbG9hZCc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmVhdGUnOwokbGFuZ1snc3VjY2VzcyddID0gJ09rJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3InOwokbGFuZ1snZmlsZXVwbG9hZGVkJ10gPSAnRmlsZSB1cGxvYWRlZCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdObyBkaXJuYW1lIHByb3ZpZGVkJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ0Rpcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ05ldyBkaXIgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQnOwokbGFuZ1snbmV3ZGlyZmFpbGVkJ10gPSAnQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG8gY3JlYXRlIGRpcic7CiRsYW5nWydub2ZpbGUnXSA9ICdObyBmaWxlIHdhcyB1cGxvYWRlZCc7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnVXBsb2FkZWQgZmlsZSBpcyB0b28gYmlnJzsKJGxhbmdbJ2NvbnRhaW5zaWxsZWdhbGNoYXJzJ10gPSAnRmlsZW5hbWUgY29udGFpbnMgb25lIG9yIG1vcmUgaWxsZWdhbCBjaGFyYWN0ZXJzICgmIzAzOTssJnF1b3Q7LCssKixcLC8sJmFtcDssJCknOwokbGFuZ1sndXBsb2FkZmFpbGVkJ10gPSAnRXJyb3IgbW92aW5nIHVwbG9hZGVkIGZpbGUgaW50byBwbGFjZSc7CiRsYW5nWydjb25maXJtZGVsZXRlJ10gPSAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgZmlsZSAlcz8nOwokbGFuZ1snZGVsZXRlZmlsZXN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snZGVsZXRlZmlsZWZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ2NvdWxkIG5vdCBiZSBkZWxldGVkJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcnN1Y2Nlc3MnXSA9ICd3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQnOwokbGFuZ1snY29uZmlybWRlbGV0ZWRpciddID0gJ0FyZSB5b3Ugc3VyZSB0byBkZWxldGUgdGhlIGRpcmVjdG9yeSAlcz8nOwokbGFuZ1snZGVsZXRlZGlyJ10gPSAnRGVsZXRlIGVtcHR5IHN1YmRpcic7CiRsYW5nWydkZWxldGVmaWxlJ10gPSAnRGVsZXRlIEZpbGUnOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3QgdXNlciYjMDM5O3MgZGlyIGFjY2Vzcyc7CiRsYW5nWydzaG93ZmlsZW1hbmFnZW1lbnQnXSA9ICdTaG93IGZpbGVtYW5hZ2VtZW50IG9wdGlvbnMnOwokbGFuZ1snc2hvd3RodW1ibmFpbGZpbGVzJ10gPSAnU2hvdyB0aHVtYm5haWxzJzsKJGxhbmdbJ2FsbG93c2NhbGluZyddID0gJ0FsbG93IG9uLXRoZS1mbHkgcmVzaXppbmcgb2YgdXBsb2FkZWQgaW1hZ2VzJzsKJGxhbmdbJ3NjYWxpbmd3aWR0aCddID0gJ1NjYWxpbmcgd2lkdGgnOwokbGFuZ1snc2NhbGluZ2hlaWdodCddID0gJ1NjYWxpbmcgaGVpZ2h0JzsKJGxhbmdbJ2RlZmF1bHRkaW1lbnNpb25zJ10gPSAnRGVmYXVsdCBkaW1lbnNpb25zJzsKJGxhbmdbJ2F1dG8nXSA9ICdBdXRvJzsKJGxhbmdbJ3JlbGF0aXZldXJscyddID0gJ1JlbGF0aXZlIHVybHMnOwokbGFuZ1snZmlsZXBpY2tlcnN0eWxlJ10gPSAnRmlsZXBpY2tlciBzdHlsZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0ZpbGVwaWNrZXIgc2l6ZSc7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdTaG93IGZpbGVuYW1lcyc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ1Nob3cgdGh1bWJuYWlscyc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXN0ZXh0J10gPSAnU2hvdyB0aHVtYm5haWwtZmlsZXMgYXMgcmVndWxhciBmaWxlcyc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdTaG93IGJvdGggZmlsZW5hbWVzIGFuZCB0aHVtYm5haWxzJzsKJGxhbmdbJ21ha2V0aHVtYm5haWwnXSA9ICdDcmVhdGUgdGh1bWJuYWlscyc7CiRsYW5nWydmaWxlcGlja2Vyc2V0dGluZ3MnXSA9ICdGaWxlUGlja2VyIHNldHRpbmdzJzsKJGxhbmdbJ3Jlc2l6ZXRvJ10gPSAnUmVzaXplIGltYWdlIHRvJzsKJGxhbmdbJ2tlZXBhc3BlY3RyYXRpbyddID0gJ0tlZXAgYXNwZWN0IHJhdGlvJzsKJGxhbmdbJ2FsbG93dXBzY2FsaW5nJ10gPSAnQWxsb3cgdXBzY2FsaW5nJzsKJGxhbmdbJ2RlY2ltYWxkZWxpbWl0ZXInXSA9ICcuJzsKJGxhbmdbJ3Rob3VzYW5kZGVsaW1pdGVyJ10gPSAnLCc7CiRsYW5nWydkaXJub3Rmb3VuZCddID0gJ0RpcmVjdG9yeSAmIzAzOTslcyYjMDM5OyBub3QgZm91bmQhJzsKJGxhbmdbJ3NlbGVjdGltYWdlJ10gPSAnQnJvd3NlIGltYWdlcyc7CiRsYW5nWydzZWxlY3RmaWxlJ10gPSAnQnJvd3NlIGZpbGVzJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWyd1c2VtaW1ldHlwZSddID0gJ1VzZSBtaW1lLXR5cGUgdG8gZ2V0IGZpbGUgdHlwZSc7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldCBhbGwgUGFnZXMgb2YgdHlwZSBjb250ZW50IHRvIHR5cGUgQWR2YW5jZWRDb250ZW50Lic7CiRsYW5nWydwYWdlc2ltcG9ydGVkJ10gPSAnQWxsIGNvbnRlbnQgcGFnZXMgc2V0IHRvIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiBhbGwgY29udGVudCBwYWdlcz8nOwokbGFuZ1snbm9taW1ldHlwZSddID0gJ05vIG1pbWUtdHlwZSBmdW5jdGlvbiBhdmFpbGFibGUgb3Igbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuIFRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC4nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdIaWRlIHRoaXMgbWVzc2FnZSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODEyMDQwMTQuMzExMi43MS51dG1jc3I9Zm9ydW0uY21zbWFkZXNpbXBsZS5vcmd8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vaW5kZXgucGhwJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTc5MDUyNjIzMDg0MTEwMTAwLjEyMTA0MjM1NzcuMTI4MTQ3NTUwMy4xMjgxNTU2Nzg0LjMxMjknOwokbGFuZ1sncWNhJ10gPSAnMTIxMDk3MTY5MC0yNzMwODA3My04MTk1MjgzMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuNi4xMC4xMjgxNTU2Nzg0JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0FkdmFuY2VkIENvbnRlbnQgJzsKJGxhbmdbJ2FkdmFuY2VkY29udGVudF90YWJuYW1lJ10gPSAnR2VhdmFuY2VlcmRlIE9wdGllcyc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlJml1bWw7bnN0YWxsZWVyZCc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2VkZSZpdW1sO25zdGFsbGVlcmQnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50IGlzIGJpamdld2Vya3QgbmFhciAlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgaXMgZ2UmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGlzIGdlZGUmaXVtbDtuc3RhbGxlZXJkJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdXZWV0IHUgemVrZXIgZGF0IHUgZGUgbW9kdWxlIEFkdmFuY2VkQ29udGVudCB3aWx0IGRlJml1bWw7bnN0YWxsZXJlbj8nOwokbGFuZ1snbm90aWNlX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5MZXQgb3A6PC9zdHJvbmc+IERpdCBibG9rIGtvbXQgbWVlcmRlcmUga2VyZW4gdm9vciBpbiBoZXQgc2phYmxvb24uIEFsbGVlbiBoZXQgZWVyc3RlIGJsb2sgd29yZHQgaGllciBnZXRvb25kLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2Jhc2ljYXR0cmliJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBDYW5ub3QgdXNlIGJhc2ljIGNvbnRlbnQgcHJvcGVydHkgbmFtZSAmIzAzOTslcyYjMDM5OyBhcyB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRWluZGRhdHVtIG1vZXQgbmEgZGUgc3RhcnRkYXR1bSB2YWxsZW4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnSHVpZGlnZSBkaXJlY3RvcnknOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0FmYmVlbGRpbmcgQWZtZXRpbmdlbic7CiRsYW5nWydzaXplJ10gPSAnQmVzdGFuZHNncm9vdHRlJzsKJGxhbmdbJ2luaGVyaXRfZnJvbV9wYXJlbnQnXSA9ICdOZWVtIG92ZXIgdmFuIGRlIG91ZGVyJzsKJGxhbmdbJ25vbmUnXSA9ICdnZWVuJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdmb3V0JzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBJbnZhbGlkIHZhbHVlICYjMDM5OyVzJiMwMzk7IG9mIHBhcmFtIGJsb2NrX3R5cGUgaW4gYmxvY2sgJiMwMzk7JXMmIzAzOTsuPGJyIC8+Q2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBJbnN1ZmZpY2llbnQgcGFyYW1zLiA8YnIgLz5NaXNzaW5nIHBhcmFtICYjMDM5OyVzJiMwMzk7IGZvciBibG9jayAmIzAzOTslcyYjMDM5Oy4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVlJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgVG9lZ2FuZyc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdWZXJ3aWp6ZW4gbmFhciBwYWdpbmEgaW5kaWVuIGdlZW4gdG9lZ2FuZyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnVG9vbiBsb2dpbiBmb3JtdWxpZXInOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnQWxsZWVuIGdlcmVnaXN0cmVlcmRlIGdlYnJ1aWtlcnMnOwokbGFuZ1snYmxvY2snXSA9ICdCbG9jayAnOwokbGFuZ1sndXNlZXhwaXJlZGF0ZSddID0gJ0dlYnJ1aWsgdmVybG9vcGRhdHVtJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0IERhdHVtJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdFaW5kIERhdHVtJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrIEluaG91ZCc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdQYWdpbmEgSW5hY3RpZWYnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1ZlcndpamRlciBQYWdpbmEnOwokbGFuZ1sndW5pbnN0YWxsYWN0aW9uJ10gPSAnRGUmaXVtbDtuc3RhbGxlZXIgYmV3ZXJraW5nJzsKJGxhbmdbJ3NldGNvbnRlbnQxJ10gPSAnU3RlbCBhbGxlIHBhZ2luYSYjMDM5O3MgaW4gbWV0IGhldCB0eXBlIENvbnRlbnQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTdGVsIGFsbGUgcGFnaW5hJiMwMzk7cyBpbiBtZXQgaGV0IHR5cGUgQ29udGVudCBlbiB2ZXJ3aWpkZXIgYWxsZSBleHRyYSBjb250ZW50IGJsb2Nrcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdWb29ya2V1cmVuIGJpamdld2Vya3QnOwokbGFuZ1snc3VjY2VzcyddID0gJ09rJmVhY3V0ZTsnOwokbGFuZ1snZXJyb3InXSA9ICdGb3V0JzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnVmVyd2lqZGVyIGFsbGUgcGFnaW5hJiMwMzk7cyBtZXQgaGV0IHR5cGUgQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU3RlbCBhbGxlIHBhZ2luYSYjMDM5O3MgaW4gbWV0IGhldCB0eXBlICVzIG5hYXIgaGV0IHR5cGUgJXMuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdBbGxlIENvbnRlbnQgcGFnaW5hJiMwMzk7cyBpbmdlc3RlbGQgYWxzIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBoZXQgY29udGVudHR5cGUgdmFuIGFsbGUgcGFnaW5hJiMwMzk7cyB3aWwgd2lqemlnZW4/JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnVmVyYmVyZyBkaXQgYmVyaWNodCc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdTdGFuZGFhcmQgQWR2YW5jZWRDb250ZW50IEluc3RlbGxpbmdlbic7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddID0gJ1VSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmcgKHBhcmFtMT12YWx1ZTEgcGFyYW0yPXZhbHVlMiAuLi4pJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnVXNlIHNtYXJ0eSB0byBjcmVhdGUgdGhlIHBhcmFtcyc7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJiMwMzk7JXMmIzAzOTsuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IE1vZHVsZSAmIzAzOTslcyYjMDM5OyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICdBbGxlIHBhZ2luYSYjMDM5O3MgdmFuIGhldCB0eXBlICVzIHppam4gc3VjY2Vzdm9sIGdld2lqemlnZCBuYWFyICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdHZWVmIEFkdmFuY2VkQ29udGVudCBvcHRpZXMgdGFiYmxhZCB3ZWVyJzsKJGxhbmdbJ2Rpc3BsYXlfc2V0dGluZ3MnXSA9ICclcyB3ZWVyZ2F2ZSBpbnN0ZWxsaW5nZW4nOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTbGEgZGUgaW5rbGFwc3RhdHVzIG9wIHZhbiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxva2tlbic7CiRsYW5nWydibG9ja19tZXNzYWdlJ10gPSAnY29udGVudCBibG9rIGJlcmljaHQnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvayBncm9lcGVuJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdLbGFwICVzIHN0YW5kYWFyZCBpbic7CiRsYW5nWydwZXJfcGFnZSddID0gJ3BlciBwYWdpbmEnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHNqYWJsb29uJzsKJGxhbmdbJ2JvdGgxJ10gPSAnc2phYmxvb24gT0YgcGFnaW5hICc7CiRsYW5nWydib3RoMiddID0gJ3NqYWJsb29uIEVOIHBhZ2luYSc7CiRsYW5nWydjb250ZW50J10gPSAnSW5ob3VkJzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAnQWR2YW5jZWQgQ29udGVudCAnOwokbGFuZ1sncHJlZnMnXSA9ICdJbnN0ZWxsaW5nZW4nOwokbGFuZ1snbXVsdGlfaW5wdXQnXSA9ICdNdWx0aSBpbnB1dCc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBpbnB1dHRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdWb2VnIG5pZXV3ZSBtdWx0aSBpbnB1dCB0b2UnOwokbGFuZ1snYWRkX211bHRpX2lucHV0X3RwbCddID0gJ1ZvZWcgbmlldXdlIG11bHRpIGlucHV0dGVtcGxhdGUgdG9lJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSW52b2VyIElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0ludm9lciB2ZWxkZW4nOwokbGFuZ1sndHBsX25hbWUnXSA9ICdTamFibG9vbiBuYWFtJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRGUgdGVtcGxhdGUgdmVyZWlzdCBkaXQgdmVsZCBlbiBoZXQgbWFnIG5pZXQgbGVlZ2dlbGF0ZW4gd29yZGVuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0ludm9lcnZlbGRlbiBpcyBlZW4gdmVyZWlzdCB2ZWxkIGVuIG1hZyBuaWV0IGxlZWdnZWxhdGVuIHdvcmRlbi4nOwokbGFuZ1snZXJyb3JfaW5wdXRfaWQnXSA9ICdHZWVuIGludm9lciBpZCBnZWdldmVuIG9mIGludm9lciBpZCBiZXN0YWF0IGFsLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnZvZXIgSUQgaXMgYWwgaW4gZ2VicnVpay4gS2llcyBlZW4gYW5kZXJlIChtb2V0IHVuaWVrIHppam4pLic7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IHRvZWdldm9lZ2QuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB2ZXJ3aWpkZXJkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgYmlqZ2V3ZXJrdC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdG9lZ2V2b2VnZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX3VwZGF0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBiaWpnZXdlcmt0Lic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfZGVsZXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHZlcndpamRlcmQuJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ1ZlcndpamRlciBnZXNlbGVjdGVlcmRlIGl0ZW1zJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1IGRpdCB3aWx0IHZlcndpamRlcmVuPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ3VzZV9jb250ZW50dHlwZSddID0gJ0dlYnJ1aWsgQ29udGVudCBUeXBlJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+PGVtPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAmcXVvdDtFeHRlbnNpb25zLT5BZHZhbmNlZENvbnRlbnQmcXVvdDsuPC9wPg0KPHA+QWRkaXRpb25hbGx5IHlvdSB3aWxsIGhhdmUgYSBuZXcgY29udGVudCB0eXBlICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhdmFpbGFibGUgDQp3aGVuIGFkZGluZy9lZGl0aW5nIGEgcGFnZS48YnIgLz4NCjxwPkFkZCB0aGUgZm9sbG93aW5nIHBhcmFtcyB0byB5b3VyIGNvbnRlbnQgdGFnIGluIHlvdXIgcGFnZSB0ZW1wbGF0ZSwgDQpjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiB5b3VyIHBhZ2UgdG8gJnF1b3Q7QWR2YW5jZWRDb250ZW50JnF1b3Q7IGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQlOb3csIGlmIHlvdSBlZGl0IGEgcGFnZSB0aGVyZSB3aWxsIGJhIGEgdGV4dGFyZWEgY2FsbGVkICZxdW90O1NlY29uZCBDb250ZW50IGJsb2NrJnF1b3Q7LjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBGb3Igc29tZSByZWFzb24gdGhpcyBwYXJhbSBkb2VzIG5vdCB3b3JrIGF0IHRoZSBtb21lbnQgd2l0aCB0aGUgbW9kdWxlIHBsdWdpbiB7QXZhbmNlZENvbnRlbnR9LiBVc2UgPGJyIC8+PGNvZGU+e2NhcHR1cmUgYXNzaWduPSZxdW90O2ZvbyZxdW90O317QWR2YW5jZWRDb250ZW50fXsvY2FwdHVyZX08L2NvZGU+IDxiciAvPmluc3RlYWQuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5BZHZhbmNlZCBwYXJhbXM6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB3aGF0IGNvbnRlbnQgY29udHJvbCB0eXBlIGlzIHVzZWQgaW4gdGhlIGJhY2sgZW5kLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPg0KCQkJCVBvc3NpYmxlIHZhbHVlcyBhcmUgJnF1b3Q7bWFpbiZxdW90OyAoID0gVGFiICZxdW90O01haW4gTWVudSZxdW90OyksICZxdW90O29wdGlvbnMmcXVvdDsgKCA9IFRhYiAmcXVvdDtPcHRpb25zJnF1b3Q7KSwgb3IgYW55IG90aGVyIGFyYml0cmFyeSB2YWx1ZTxiciAvPg0KCQkJCTxlbT5lLmcuIHlvdSBjYW4gYWRkIGEgY2hlY2tib3ggdG8gdGhlIG9wdGlvbnMgdGFiIG9yIGNyZWF0ZSBuZXcgdGFiczwvZW0+Lg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCB0aGUgYmxvY2tzIHdpdGhpbiBhIHBhZ2UgdGFiIGNhbiBiZSBmdXJ0aGVyIGRpdmlkZWQgaW50byB0YWJzIG9yIGNhbiBiZSBncm91cGVkIHRvZ2V0aGVyLiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja19ncm91cDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5XaXRoIHRoaXMgcGFyYW1ldGVyLCBtdWx0aXBsZSBibG9ja3MgY2FuIGJlIGdyb3VwZWQgaW4gYSBmaWVsZHNldC4gQW55IGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgYXMgYSBwb3NzaWJsZSB2YWx1ZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWN0aXZlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGRpc2FibGUgYSBjb250ZW50IGJsb2NrLiBEaXNhYmxlZCBjb250ZW50IGJsb2NrcyB3b24mIzAzOTt0IGJlIHNob3duIGluIGJhY2tlbmQgYXMgd2VsbCBhcyBpbiBmcm9udGVuZC4gKG9ubHkgd29ya3Mgd2l0aCB7QWR2YW5jZWRDb250ZW50fSBwbHVnaW4pPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c3R5bGU8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc2V0IHRoZSBpbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQgaW4gYmFja2VuZC4gPGJyIC8+DQoJCQkJZS5nLjogbWFrZSBhIG5vdGUgcmVkIHdpdGggPGNvZGU+c3R5bGU9JiMwMzk7Y29sb3I6I0ZGMDAwMDsmIzAzOTs8L2NvZGU+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl91c2VyczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHVzZXIgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4gKG5vdCByZWFkeSB5ZXQpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIGdyYW50cyBhY2Nlc3MgdG8gdGhpcyBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkgIChub3QgcmVhZHkgeWV0KQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hbGxvd19ub25lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5TZXQgdG8gdHJ1ZSBpZiB0aGUgdXNlciBtYXkgZW50ZXIgZW1wdHkgdmFsdWVzLiA8YnIgLz5JZiBzZXQgdG8gZmFsc2UgYW5kIHZhbHVlIGlzIGVtcHR5IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBwYXJhbSAmcXVvdDtkZWZhdWx0JnF1b3Q7IHdpbGwgYmUgdXNlZC4gPGJyIC8+SWYgc2V0IHRvIHRydWUgYW5kIGJsb2NrIGlzIG9mIHR5cGUgaW1hZ2UvZmlsZSB0aGUgb3B0aW9uICZxdW90O25vbmUmcXVvdDsgKG1vZGU9JnF1b3Q7ZHJvcGRvd24mcXVvdDspIG9yIGEgYnV0dG9uIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlL2ltYWdlIHZhbHVlIChtb2RlPSZxdW90O2ZpbGVwaWNrZXImcXVvdDspIHdpbGwgYmUgZGlzcGxheWVkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVR1cm4gc21hcnR5IHByb2Nlc3Npbmcgb2YgdmFsdWVzIG9uL29mZi48YnIgLz4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSBhbnkgZ2l2ZW4gdmFsdWUgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHNtYXJ0eSBlbmdpbmUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90ZTogPC9zdHJvbmc+IE5vdGljZSB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7Y2hlY2tib3gmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCWNoZWNrcy91bmNoZWNrcyB0aGUgY2hlY2tib3ggYnkgZGVmYXVsdCB3aGVuIGFkZGluZyBhIHBhZ2U8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBVc2UgJnF1b3Q7MSZxdW90OyBmb3IgY2hlY2tlZCBhbmQgJnF1b3Q7MCZxdW90OyBmb3IgdW5jaGVja2VkIGJ5IGRlZmF1bHQ8YnIgLz48L2VtPg0KCQkJCUUuZy4gPGNvZGU+e2NvbnRlbnQgYmxvY2tfdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7ZHJvcGRvd24mcXVvdDsvJnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pml0ZW1zPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPkl0ZW0gbGFiZWwocykgb2YgdGhlIGZpZWxkKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZXM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+VmFsdWUocykgb2YgdGhlIGl0ZW1zIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGVyZSBhcmUgbGVzcyB2YWx1ZXMgdGhhbiBpdGVtcyB0aGUgaXRlbSBsYWJlbHMgd2lsbCBiZSB1c2VkIGFzIHZhbHVlcyAoYW5kIHZpc2UgdmVyc2EpLjwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVByZXNlbGVjdGVkIHZhbHVlKHMpIChzZXBhcmF0ZWQgYnkgYSBkZWxpbWl0ZXIgLSBkZWZhdWx0IGlzIHwgKHBpcGUpKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlbGltaXRlcjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5BIHNpZ24gb3Igc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldmlkZSB0aGUgaXRlbXMvdmFsdWVzIChkZWZhdWx0IGlzIHwgKHBpcGUpKTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNpemU8L3R0PiAoaW50ZWdlcikNCgkJPHVsPg0KCQkJPGxpPkhlaWdodCBvZiBjb250ZW50IGJsb2NrIGluIGJhY2sgZW5kIGlmIDxjb2RlPmJsb2NrX3R5cGU9JnF1b3Q7c2VsZWN0X211bHRpcGxlJnF1b3Q7PC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uJiMwMzk7dCBiZSBzaG93biBhcyBhIG11bHRpcGxlIHNlbGVjdCBpbnB1dCB3aXRoIG9wdGlvbnMgYnV0IGFzIGEgbGlzdCBvZiBjaGVja2JveGVzIHRoYXQgY2FuIGJlIHJlb3JkZXJlZC48YnIgLz5FYWNoIHJvdyBjb250YWlucyB0aGUgaXRlbSBsYWJlbCBhbmQgYSBjaGVja2JveCB3aXRoIHRoZSBpdGVtIHZhbHVlLjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+Y29sbGFwc2U8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoZSBkZWZhdWx0IGRpc3BsYXkgb2YgdGhlIGJsb2NrIGluIGJhY2tlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJZiBzZXQgdG8gZmFsc2UgMDA6MDAgbyYjMDM5O2Nsb2NrIHdpbGwgYmUgdXNlZDwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGF0ZV9mb3JtYXQ8L3R0PiAoc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoZSBzdHJmdGltZSBkYXRlIGZvcm1hdCB0byBzaG93IGluIGZyb250ZW5kLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgJnF1b3Q7bXVsdGlfaW5wdXQmcXVvdDs6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4gKGNzdiBvZiBpbnB1dCBpZHMgeW91IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQpIA0KCQk8YnIgLz48YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgdmFsdWVzIG9mIHRoZSBpbnB1dHMgb2Ygb25lIG11bHRpX2lucHV0IHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0mYW1wO2d0OyZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X2RlbGxpbWl0ZXIgLS0mYW1wO2d0OyZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlJnF1b3Q7IGxhYmVsPSZxdW90O1BhZ2UgbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDttb2R1bGUsbW9kdWxlLG1vZHVsZSxtb2R1bGUmcXVvdDt9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkV4YW1wbGUgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDs6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHNlbGVjdGlvbiZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90O3xOZXdzfEdhbGxlcnl8TWVudSZxdW90O30NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bW9kdWxlIHBhcmFtcyZxdW90OyBibG9ja190eXBlPSZxdW90O3RleHQmcXVvdDsgb25lbGluZT10cnVlfQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IGVkaXQgYSBwYWdlPzwvcD4NCgkJPHA+SXQgd2lsbCBzaG93IHlvdSBhIGZpZWxkc2V0IHdpdGggbGVnZW5kICZxdW90O1BhZ2UgbW9kdWxlcyZxdW90Oy4gPGJyIC8+DQoJCUluc2lkZSB0aGlzIGZpZWxkc2V0IGl0IHNob3dzIHRoZSBtdWx0aV9pbnB1dCBuYW1lZCAmcXVvdDttb2R1bGUmcXVvdDsgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0JiMwMzk7cyBhc3N1bWUgeW91IHNlbGVjdCB0aGUgTmV3cyBtb2R1bGUgZm91ciB0aW1lcyB3aXRoIGRpZmZlcmVudCBtb2R1bGUgcGFyYW1zIGxpa2UgY2F0ZWdvcnk9JnF1b3Q7MSZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MiZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7MyZxdW90OywgY2F0ZWdvcnk9JnF1b3Q7NCZxdW90Oy48YnIgLz4NCgkJSW4gdGhlIGRhdGFiYXNlIGl0IHN0b3JlcyB0aGlzIHN0cmluZzo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQlOZXdzJmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDtjYXRlZ29yeT0mcXVvdDsxJnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmFtcDtndDs8YnIgLz4NCgkJTmV3cyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLSZhbXA7Z3Q7Y2F0ZWdvcnk9JnF1b3Q7MiZxdW90OyZhbXA7bHQ7IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLSZhbXA7Z3Q7PGJyIC8+DQoJCU5ld3MmYW1wO2x0OyEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0mYW1wO2d0O2NhdGVnb3J5PSZxdW90OzMmcXVvdDsmYW1wO2x0OyEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0mYW1wO2d0OzxiciAvPg0KCQlOZXdzJmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDtjYXRlZ29yeT0mcXVvdDs0JnF1b3Q7DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPkluIHlvdXIgcGFnZSB0ZW1wbGF0ZSB5b3UgY2FuIGV4cGxvZGUgdGhlIGNvbnRlbnQgYnkgdGhlIGRlbGltaXRlcnMgYW5kIGNhbGwgdGhlIHNlbGVjdGVkIG1vZHVsZXMuPC9wPg0KCQk8cD5GdWxsIEV4YW1wbGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJeyogZGVmaW5lIHRoZSBjb250ZW50IGJsb2NrICp9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O215X21vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7TW9kdWxlLE1vZHVsZSxNb2R1bGUsTW9kdWxlJnF1b3Q7IGFzc2lnbj0mcXVvdDttb2R1bGVzJnF1b3Q7fQ0KCQkNCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9DQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9JnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tJmFtcDtndDsmcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7JmFtcDtsdDshLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tJmFtcDtndDsmcXVvdDt8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gJiMwMzk7JiMwMzk7fQ0KCQkJCQ0KCQkJCQl7KiBjYWxsIHRoZSBtb2R1bGUgKn0NCgkJCQkJe2lmIGlzc2V0KCRtb2R1bGVfaXRlbXNbMV0pfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDomIzAzOTtjbXNfbW9kdWxlIG1vZHVsZT0mcXVvdDsmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OiYjMDM5OyZxdW90OyAmIzAzOTt8Y2F0OiRtb2R1bGVfaXRlbXNbMV18Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7ZWxzZX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsmIzAzOTt8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KDQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3VwcG9ydCBvZiB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCAmIzAzOTtjb3JyZWN0bHkmIzAzOTspPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI2MSAoQWRkIHNvcnQgdG8gaW1hZ2UgdHlwZSAtIG5vdGljZSB0aGUgY2hhbmdlIG9mIHBhcmFtIGZpbHRlcik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIHBhcmFtcyBleGNsdWRlX3ByZWZpeCwgaW5jbHVkZV9wcmVmaXgsIGV4Y2x1ZGVfc3VmaXgsIGluY2x1ZGVfc3VmaXg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI1MyAoVGV4dCBpbnB1dCB0byBkZWZpbmUgYWRkIHBhcmFtcyB0byByZWRpcmVjdCBmdW5jdGlvbik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MCAoRGVmYXVsdCB2YWx1ZXMgb2YgQWR2YW5jZWRDb250ZW50IHBhZ2Ugb3B0aW9ucyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmFkZGVkIGZlYXR1cmUgcmVxdWVzdCAjNTI0MSAocHV0IEZldUFjY2VzcyBpbiBCbG9ja3RhYik8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIEFkdmFuY2VkQ29udGVudCBvcHRpb25zIGFyZSBzaG93biBpbiBzZXBhcmF0ZSB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gQWRkZWQgbmV3IHBlcm1pc3Npb24gdG8gbWFuYWdlIHRoZSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbSBmaWx0ZXIgKHVzZSBuZXcgcGFyYW1zIGluc3RlYWQpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhdGggdG8gZmlsZXMgYXJlIHN0b3JlZCByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcGFyYW0gZGlyIG9mIGJsb2NrIHR5cGUgZmlsZS9pbWFnZSBuZWVkcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgdXBsb2FkcyBkaXIgb25seSAodGhlcmUgaXMgbm8gaW1hZ2UgdXBsb2FkcyBkaXIgdXNlZCBhbnltb3JlKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40LjEgKEF1Z3VzdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTE1MTogZml4ZWQgc3R5bGVzaGVldCBpc3N1ZSB3aXRoIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIG9mIGNvbnRlbnQgYmxvY2tzIGluIElFL1NhZmFyaS48L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUxNjI6IFBIUCB3YXJuaW5ncyBpZiBiYWNrZW5kIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MmcXVvdDsgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtkZWxldGUmcXVvdDsgdG8gbGV0IHVzZXJzIGRlbGV0ZSBmaWxlcyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2NyZWF0ZV9kaXJzJnF1b3Q7IHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gJnF1b3Q7TW9kaWZ5IEZpbGVzJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIG5ldyBibG9ja3R5cGUgJnF1b3Q7bm90ZSZxdW90OyB0byBjcmVhdGUgc29tZSBzaW5nbGUgbm90ZXMgZm9yIHlvdXIgZWRpdG9yczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBkZXBlbmRlbmN5IG9mIEZpbGVNYW5hZ2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGJsb2NrIG9mIHR5cGUgZmlsZSBvciBpbWFnZSBzdG9yZXMgcmVsYXRpdmUgdXJsIG5vdzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayB0eXBlIGltYWdlIHNob3dzIHRodW1ibmFpbCBpbiBiYWNrZW5kIHByZXZpZXcgaW5zdGVhZCBvZiBmdWxsIGltYWdlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjQgKEp1bHkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+SW1wb3J0YW50IG5vdGljZTo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBjaGFuZ2VkIHBhcmFtICZxdW90O3R5cGUmcXVvdDsgdG8gJnF1b3Q7YmxvY2tfdHlwZSZxdW90OyBzaW5jZSBpdCBpbnRlcmZlcmVzIHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTEwMTogcGFnZV90YWIgJnF1b3Q7b3B0aW9ucyZxdW90OyB3YXMgc2hvd24gdG8gdXNlcnMgd2l0aCBubyBwZXJtaXNzaW9uIHRvIGVkaXQgcGFnZSBvcHRpb25zIGlmIGEgY29udGVudCBibG9jayB3YXMgYXNzaWduZWQgdG8gdGhhdCB0YWIuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDk3OiBsaW5rIHRvIG1pc3NpbmcgY3NzIHJlbW92ZWQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWltZS10eXBlIGlzc3VlIChhZGRlZCBwcmVmZXJlbmNlIHRvIHRvZ2dsZSBtaW1lLXR5cGUgdXNhZ2Ugb24vb2ZmKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBwYXRoIGlzc3VlIHdoZXJlIHRodW1ibmFpbHMgd2VyZSBub3Qgc2hvd248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgY29tcGF0aWJpbGl0eSB3aXRoIENNU21zIDEuODwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBvdGhlciBtaW5vciBidWdmaXhlczwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIE1MRSBzdXBwb3J0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O3Nob3dfY2xvY2smcXVvdDsgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGF0ZV9mb3JtYXQmcXVvdDsgdG8gZm9ybWF0IHRpbWVzdGFtcCBvZiBibG9ja3R5cGVzICZxdW90O2RhdGUmcXVvdDsgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnVsayBmdW5jdGlvbiB0byBzZXQgYWxsIHBhZ2VzIHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy40IChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MDQ1OiBXaGVuIHN3aXRjaGluZyBmcm9tIENvbnRlbnQgLT4gQWR2YW5jZWQgQ29udGVudCBsb3RzIG9mIFBIUCBlcnJvcnM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNTY6IHBhZ2VfdGFicyBub3Qgd29ya2luZyBmb3IgdXNlcnMgd2l0aG91dCBwZXJtaXNzaW9uICZxdW90O01hbmFnZSBBbGwgQ29udGVudCZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA3MzogaW5jb3JyZWN0IGRpc3BsYXkgb2YgZmlsZXMgd2hlbiBvcGVuaW5nIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgbWlub3IgYnVnIHdoZXJlIHRoZSBvcHRpb24gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAmcXVvdDt2YWx1ZXMmcXVvdDsgaXMgdXNlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc29tZSB0ZW1wbGF0ZSB2YXJzIG9mIHRoZSBmcm9udGVuZCB0byBiZSBhbHNvIGFjY2Vzc2libGUgaW4gYmFja2VuZCAoZS5nLjogJHBhZ2VfYWxpYXMpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHRvIGFsbCBjb250ZW50IGJsb2NrIHR5cGVzIHRvIHNwZWNpZnkgaWYgdGhlIHByZWRlZmluZWQgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHVzZWQgaWYgbm8gdmFsdWUgaXMgZW50ZXJlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGVtcHR5IHZhbHVlcyB3ZXJlIG5ldmVyIGJlIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGRlZmF1bHQgdmFsdWUgaW4gZnJvbnRlbmQgd2FzIGlnbm9yZWQgaWYgdGhlICZxdW90O2FsbG93X25vbmUmcXVvdDsgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzb3J0YWJsZV9pdGVtcyZxdW90OyB0byBjcmVhdGUgYSBzb3J0YWJsZSBtdWx0aXBsZSBzZWxlY3QgbGlzdCAoc2VsZWN0IGxpc3Qgd2lsbCByZXN1bHQgaW4gYSB0YWJsZSB3aXRoIGNoZWNrYm94ZXM7IG9ubHkgb3JkZXIgb2Ygc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBzdG9yZWQgYW5kIHNob3dlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0OyB1bnNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIHRlbXBsYXRlKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjEgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIHJlb3JkZXJpbmcgc3R1ZmYgZm9yIG5vdyAoY2F1c2VzIHRyb3VibGUgYXQgdGhpcyB0aW1lKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgZGIgc3R1ZmYgKHBhcmFtcyBvZiBjb250ZW50IGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIGluIHRlbXBsYXRlIHdvbiYjMDM5O3QgYmUgc2F2ZWQgaW4gbW9kdWxlIGRiIHRhYmxlIGFueW1vcmUgLT4gaG9wZWZ1bGx5IHNwZWVkIHVwIGxvYWRpbmcgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggZHVwbGljYXRlIGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+QWR2YW5jZWRDb250ZW50IDAuMyAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmV3cml0ZSBjb2RlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBidWdmaXhlczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIHVzaW5nIHNlcGFyYXRlIG1vZHVsZSB0ZW1wbGF0ZSBub3cgdG8gZHNwbGF5IGNvbnRlbnQgYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhZ2UgYWxpYXMgaW5oZXJpdGFuY2U8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjx1bD4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDMgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gTWFqb3IgQnVnZml4IChtaXNzaW5nICZxdW90OzsmcXVvdDsgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAmcXVvdDtkZWxpbWl0ZXImcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggc21hcnR5IHByb2Nlc3Npbmc8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mICZxdW90O1Nob3cgbG9naW4gZm9ybSZxdW90OzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgcGFnZSBhbGlhcyB0byBhZGQgaXQgYXMgcHJlZmZpeDsgc28gaWYgeW91IGhhdmUgYSBwYWdlIGNhbGxlZCAmcXVvdDttZW1iZXJzJnF1b3Q7IGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAmcXVvdDtpbmhlcml0IHBhZ2UgYWxpYXMmcXVvdDsgYWxsIGNoaWxkIHBhZ2VzIGFsaWFzZXMgd2lsbCBzdGFydCB3aXRoICZxdW90O21lbWJlcnNfJnF1b3Q7OyBtYWtlcyBmaWx0ZXJpbmcgb2YgbWVudSBlbnRyaWVzIHdpdGggTWVudU1hbmFnZXIgcGFyYW0gJnF1b3Q7ZXhjbHVkZXByZWZmaXgmcXVvdDsgb3IgJnF1b3Q7aW5jbHVkZXByZWZmaXgmcXVvdDsgZWFzaWVyLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXM8L3A+PC9saT4gDQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAoQXByaWwgMjAxMCk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY29udmVydGVkIHRoZSBzaW5nbGUgZmlsZSBpbnRvIGEgbW9kdWxlPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW5hbWVkIHBhcmFtczsgc2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGRldGFpbHM8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+U2luZ2xlIGZpbGUgcmVsZWFzZXMgKGRpc2NvbnRpbnVlZCk8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuNCAoTWFyY2ggMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjbGVhbnVwIGNvZGUgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4ZXMgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcmVkaXJlY3QgcGFnZSBpZiBmZXUgaXMgbm90IGxvZ2dlZCBpbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiBmZXVfYWNjZXNzIGFuZCByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3MgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZWRpcmVjdF9wYWdlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGJsb2NrX29ubHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgc21hcnR5IGxvZ2ljIGluIGJhY2tlbmQgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHN0eWxlIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmaWx0ZXIgKGZpbHRlcmluZyBpbWFnZXMgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIEltZ01vZGUgKGRyb3Bkb3duIG9yIEltYWdlTWFuYWdlcikgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHNtYXJ0eU9uIChmb3IgcHJvY2Vzc2luZyBzbWFydHkgdmFycyBvZiB0aGUgdGVtcGF0ZSBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MS4zIChBcHJpbCAyMDA5KTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIENNU21zIDEuNi4qIHJlYWR5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGZldSBhY2Nlc3Mgb3B0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjIgKE1hcmNoIDIwMDkpOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIEEgc2luZ2xlIGZpbGUgQ29udGVudDIuaW5jLnBocCB0aGF0IG5lZWRzIHRvIGJlIHBhY2VkIGluIGxpYi9jbGFzc2VzL2NvbnRlbnR0eXBlcy48L3A+PC9saT4NCgkJCTxsaT48cD4tIGxheW91dC9vcHRpb25zIG9mIGJhY2tlbmQgcGFuZWwgY2FuIGJlIGNvbnRyb2xlZCBieSBhZGRpdGlvbmFsIHNtYXJ0eSBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlOyBpbnRlZ3JhdGVkIHRoZSB7Y29udGVudF9pbWFnZX0gdGFnIC0gKG1vZCBieSBOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8YnIgLz4nOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzM1Njk4NzA4LjEyODQ1ODYyMTcuMTI5MjE2MDEwNS4xMjkyMTcwOTA1LjU1OCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyOTIxMDQ0NTIuNTUzLjQ5LnV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY249KHJlZmVycmFsKXx1dG1jbWQ9cmVmZXJyYWx8dXRtY2N0PS9pbmRleC5waHAnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTU1MTMwNjE3OS0xMjg0NTg2MjE2NzExJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMuMS4xMC4xMjkyMTcwOTA1JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ0NvbnRpbnV0IEF2YW5zYXQnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGluc3RhbGF0JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGRlemluc3RhbGF0JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgYSBmb3N0IGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGluc3RhbGF0Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWx1bCBDb250aW51dEF2YW5zYXQgJXMgYSBmb3N0IGRlemluc3RhbGF0Lic7CiRsYW5nWydjb25maXJtdW5pbnN0YWxsJ10gPSAnU2lndXIgc2UgZG9yZXN0ZSBkZXppbnN0YWxhcmVhIG1vZHVsdWx1aSBDb250aW51dEF2YW5zYXQ/JzsKJGxhbmdbJ2Vycm9yX2R1cGxpY2F0ZWNvbnRlbnQnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpZmljYXJlOjwvc3Ryb25nPiB7Y29udGVudCBibG9jaz0mIzAzOTslcyYjMDM5OyAuLi4gfSBlc3RlIGFtYmlndXUuIE51bWVsZSBkZSBibG9jdXJpIHRyZWJ1aWUgc2EgZmllIHVuaWNlLiA8YnIgLz5BY2VzdCBibG9jIGVzdGUgZGV6YWN0aXZhdC4gTnVtYWkgcHJpbXVsIGJsb2MgdmEgZmkgYWZpc2F0LiBWZXJpZmljYSBzYWJsb251bCBwYWdpbmlpIHNpIGFsZWdlIG8gYWx0YSB2YWxvYXJlIHBlbnRydSBwYXJhbWV0cnVsICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+Tm90aWZpY2FyZTo8L3N0cm9uZz4gQWNlc3QgYmxvYyBlc3RlIGZvbG9zaXQgZGUgbWFpIG11bHRlIG9yaSBpbiBzYWJsb24uIEFpY2kgZXN0ZSBhZmlzYXQgbnVtYWkgcHJpbXVsIGJsb2MuPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpZmljYXJlOjwvc3Ryb25nPiBOdSBzZSBwb2F0ZSBmb2xvc2kgbnVtZWxlIGRlIHByb3ByaWV0YXRlIGRlIGNvbnRpbnV0IHNpbXBsdSAmIzAzOTslcyYjMDM5OyBjYSB2YWxvYXJlIGEgcGFyYW1ldHJ1bHVpICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5BY2VzdCBibG9jIGVzdGUgZGV6YWN0aXZhdC4gVmVyaWZpY2Egc2FibG9udWwgcGFnaW5paSBzaSBhbGVnZSBvIGFsdGEgdmFsb2FyZSBwZW50cnUgcGFyYW1ldHJ1bCAmIzAzOTtibG9jayYjMDM5Oy48L2VtPic7CiRsYW5nWydlcnJvcl9leHBpcmVkYXRlJ10gPSAnRGF0YSBkZSBmaW5hbGl6YXJlIHRyZWJ1aWUgc2EgZmllIGR1cGEgZGF0YSBkZSBwb3JuaXJlLic7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdGb2xkZXJ1bCBjdXJlbnQnOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0RpbWVuc2l1bmUgaW1hZ2luZSc7CiRsYW5nWydzaXplJ10gPSAnRGltZW5zaXVuZSBmaXNpZXInOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ01vc3Rlbml0IGRlIGxhIHBhcmludGUnOwokbGFuZ1snbm9uZSddID0gJ25pbWljJzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdpbnZhbGlkKGEpJzsKJGxhbmdbJ2ludmFsaWRfYmxvY2t0eXBlJ10gPSAnPGVtPjxzdHJvbmc+Tm90aWZpY2FyZTo8L3N0cm9uZz4gVmFsb2FyZSBpbnZhbGlkYSAmIzAzOTslcyYjMDM5OyBhIHBhcmFtZXRydWx1aSBibG9ja190eXBlIGluIGJsb2N1bCAmIzAzOTslcyYjMDM5Oy48YnIgLz5WZXJpZmljYSBzYWJsb251bCBwYWdpbmlpLjwvZW0+JzsKJGxhbmdbJ3llcyddID0gJ0RhJzsKJGxhbmdbJ25vJ10gPSAnTnUnOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdBY2NlcyBmcm9udGVuZCc7CiRsYW5nWydyZWRpcmVjdHBhZ2UnXSA9ICdQYWdpbmEgZGUgcmVkaXJlY3Rpb25hcmUgZGFjYSBudSBzZSBwZXJtaXRlIGFjY2VzdWwnOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ0FmaXNhcmUgZm9ybXVsYXIgYXV0ZW50aWZpY2FyZSc7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdOdW1haSB1dGlsaXphdG9yaWkgaW5yZWdpc3RyYXRpJzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvYyc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnRm9sb3NpcmUgZGF0YSBkZSBleHBpcmFyZSc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICdEYXRhIHN0YXJ0JzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdEYXRhIG9wcmlyZSc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICdDb250aW51dCBibG9jJzsKJGxhbmdbJ3NldHBhZ2VpbmFjdGl2ZSddID0gJ1NldGFyZSBwYWdpbmEgY2EgaW5hY3RpdmEnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ1N0ZXJnZXJlIHBhZ2luYSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdBY3RpdW5lIGRlemluc3RhbGFyZSc7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldGFyZSB0b2F0ZSBwYWdpbmlsZSBjYSB0aXAgY29udGludXQnOwokbGFuZ1snc2V0Y29udGVudDInXSA9ICdTZXRhcmUgdG9hdGUgcGFnaW5pbGUgY2EgdGlwIGNvbnRpbnV0IHNpIGlubGF0dXJhcmUgYmxvY3VyaSBkZSBjb250aW51dCBhZGl0aW9uYWxlJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmludGVsZSBhdSBmb3N0IGFjdHVhbGl6YXRlLic7CiRsYW5nWydmaWxlb3BlcmF0aW9ucyddID0gJ09wZXJhdGl1bmkgZmlzaWVyZSc7CiRsYW5nWyd1cGxvYWRuZXdmaWxlJ10gPSAnSW5jYXJjYXJlIGZpc2llciBub3UnOwokbGFuZ1snY3JlYXRlbmV3ZGlyJ10gPSAnQ3JlYXJlIGZvbGRlciBub3UnOwokbGFuZ1sndXBsb2FkZmlsZSddID0gJ0luY2FyY2FyZSc7CiRsYW5nWydjcmVhdGVkaXInXSA9ICdDcmVhcmUnOwokbGFuZ1snc3VjY2VzcyddID0gJ09LJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJvYXJlJzsKJGxhbmdbJ2ZpbGV1cGxvYWRlZCddID0gJ0Zpc2llcnVsICYjMDM5OyVzJiMwMzk7IGEgZm9zdCBpbmNhcmNhdCc7CiRsYW5nWydub2Rpcm5hbWUnXSA9ICdOdSBhIGZvc3QgZGF0IHVuIG51bWUgZGUgZm9sZGVyJzsKJGxhbmdbJ2RpcmV4aXN0cyddID0gJ051bWVsZSBkZSBmb2xkZXIgJiMwMzk7JXMmIzAzOTsgZXhpc3RhIGRlamEnOwokbGFuZ1snbmV3ZGlyY3JlYXRlZCddID0gJ0ZvbGRlcnVsIG5vdSAmIzAzOTslcyYjMDM5OyBhIGZvc3QgY3JlYXQgY3Ugc3VjY2VzJzsKJGxhbmdbJ25ld2RpcmZhaWxlZCddID0gJ0EgYXBhcnV0IG8gZXJvYXJlIGxhIGNyZWFyZWEgZm9sZGVydWx1aSAmIzAzOTslcyYjMDM5Oyc7CiRsYW5nWydub2ZpbGUnXSA9ICdOdSBhIGZvc3QgaW5jYXJjYXQgbmljaXVuIGZpc2llcic7CiRsYW5nWydmaWxldG9vYmlnJ10gPSAnRmlzaWVydWwgaW5jYXJjYXQgJiMwMzk7JXMmIzAzOTsgZXN0ZSBwcmVhIG1hcmUnOwokbGFuZ1snY29udGFpbnNpbGxlZ2FsY2hhcnMnXSA9ICdOdW1lbGUgZGUgZmlzaWVyICYjMDM5OyVzJiMwMzk7IGNvbnRpbmUgdW51bCBzYXUgbWFpIG11bHRlIGNhcmFjdGVyZSBuZXBlcm1pc2UgKCYjMDM5OywmcXVvdDssKywqLFwsLywmYW1wOywkKSc7CiRsYW5nWyd1cGxvYWRmYWlsZWQnXSA9ICdFcm9hcmUgbGEgbXV0YXJlIGZpc2llcnVsdWkgaW5jYXJjYXQgJiMwMzk7JXMmIzAzOTsgbGEgbG9jdWwgbHVpJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGUnXSA9ICdTaWd1ciBkb3Jlc3RpIHN0ZXJnZXJlYSBmaXNpZXJ1bHVpIFwmIzAzOTslc1wmIzAzOTs/JzsKJGxhbmdbJ2RlbGV0ZWZpbGVzdWNjZXNzJ10gPSAnRmlzaWVydWwgJiMwMzk7JXMmIzAzOTsgYSBmb3N0IHN0ZXJzJzsKJGxhbmdbJ2RlbGV0ZWZpbGVmYWlsZWQnXSA9ICdGaXNpZXJ1bCAmIzAzOTslcyYjMDM5OyBudSBhIHB1dHV0IGZpIHN0ZXJzJzsKJGxhbmdbJ2RlbGV0ZXN1YmRpcmZhaWxlZCddID0gJ0ZvbGRlcnVsICYjMDM5OyVzJiMwMzk7IG51IGEgcHV0dXQgZmkgc3RlcnMnOwokbGFuZ1snZGVsZXRlc3ViZGlyc3VjY2VzcyddID0gJ0ZvbGRlcnVsICYjMDM5OyVzJiMwMzk7IGEgZm9zdCBzdGVycyc7CiRsYW5nWydjb25maXJtZGVsZXRlZGlyJ10gPSAnU2lndXIgZG9yZXN0aSBzdGVyZ2VyZWEgZm9sZGVydWx1aSBcJiMwMzk7JXNcJiMwMzk7Pyc7CiRsYW5nWydkZWxldGVkaXInXSA9ICdTdGVyZ2VyZSBzdWJmb2xkZXJlIGdvYWxlJzsKJGxhbmdbJ2RlbGV0ZWZpbGUnXSA9ICdTdGVyZ2VyZSBmaXNpZXInOwokbGFuZ1sncmVzdHJpY3RkaXJzJ10gPSAnUmVzdHJpY3Rpb25hcmUgYWNjZXMgdXRpbGl6YXRvcmkgbGEgZm9sZGVyJzsKJGxhbmdbJ3Nob3dmaWxlbWFuYWdlbWVudCddID0gJ0FmaXNhcmUgb3B0aXVuaSBhZG1pbmlzdHJhcmUgZmlzaWVyZSc7CiRsYW5nWydzaG93dGh1bWJuYWlsZmlsZXMnXSA9ICdBZmlzYXJlIG1pbmlhdHVyaSc7CiRsYW5nWydhbGxvd3NjYWxpbmcnXSA9ICdTZSBwZXJtaXRlIHJlZGltZW5zaW9uYXJlYSBvbi10aGUtZmx5IGEgaW1hZ2luaWxvciBpbmNhcmNhdGUnOwokbGFuZ1snc2NhbGluZ3dpZHRoJ10gPSAnTGF0aW1lIHNjYWxhcmUnOwokbGFuZ1snc2NhbGluZ2hlaWdodCddID0gJ0luYWx0aW1lIHNjYWxhcmUnOwokbGFuZ1snZGVmYXVsdGRpbWVuc2lvbnMnXSA9ICdEaW1lbnNpdW5pIGltcGxpY2l0ZSc7CiRsYW5nWydhdXRvJ10gPSAnQXV0b21hdCc7CiRsYW5nWydyZWxhdGl2ZXVybHMnXSA9ICdVUkwtdXJpIHJlbGF0aXZlJzsKJGxhbmdbJ2ZpbGVwaWNrZXJzdHlsZSddID0gJ1N0aWwgc2VsZWN0b3IgZmlzaWVyZSc7CiRsYW5nWydmaWxlcGlja2Vyc2l6ZSddID0gJ0RpbWVuc2l1bmUgc2VsZWN0b3IgZmlzaWVyZSc7CiRsYW5nWydmaWxlbmFtZW9ubHknXSA9ICdBZmlzYXJlIG51bWUgZmlzaWVyZSc7CiRsYW5nWyd0aHVtYm5haWxzb25seSddID0gJ0FmaXNhcmUgbWluaWF0dXJpJzsKJGxhbmdbJ3Nob3d0aHVtYm5haWxmaWxlc3RleHQnXSA9ICdBZmlzYXJlIGZpc2llcmUtbWluaWF0dXJpIGNhIGZpc2llcmUgbm9ybWFsZSc7CiRsYW5nWydmaWxlbmFtZWFuZHRodW1ibmFpbHMnXSA9ICdBZmlzYXJlIHNpIG51bWUgZmlzaWVyZSBzaSBtaW5pYXR1cmknOwokbGFuZ1snbWFrZXRodW1ibmFpbCddID0gJ0NyZWFyZSBtaW5pYXR1cmknOwokbGFuZ1snZmlsZXBpY2tlcnNldHRpbmdzJ10gPSAnU2V0YXJpIHNlbGVjdG9yIGZpc2llcmUnOwokbGFuZ1sncmVzaXpldG8nXSA9ICdSZWRpbWVuc2lvbmFyZSBpbWFnaW5lIGxhJzsKJGxhbmdbJ2tlZXBhc3BlY3RyYXRpbyddID0gJ1NlIHBhc3RyZWF6YSBwcm9wb3J0aWEgZGltZW5zaXVuaWxvcic7CiRsYW5nWydhbGxvd3Vwc2NhbGluZyddID0gJ1NlIHBlcm1pdGUgc2NhbGFyZWEgaW4gc3VzJzsKJGxhbmdbJ2RlY2ltYWxkZWxpbWl0ZXInXSA9ICcuICc7CiRsYW5nWyd0aG91c2FuZGRlbGltaXRlciddID0gJywgJzsKJGxhbmdbJ2Rpcm5vdGZvdW5kJ10gPSAnRm9sZGVydWwgJiMwMzk7JXMmIzAzOTsgbnUgYSBmb3N0IGdhc2l0ISc7CiRsYW5nWydzZWxlY3RpbWFnZSddID0gJ1Jhc2ZvaXJlIGltYWdpbmknOwokbGFuZ1snc2VsZWN0ZmlsZSddID0gJ1Jhc2ZvaXJlIGZpc2llcmUnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICdTdGVyZ2VyZSB0b2F0ZSBwYWdpbmlsZSBkZSB0aXB1bCBDb250aW51dEF2YW5zYXQnOwokbGFuZ1sndXNlbWltZXR5cGUnXSA9ICdGb2xvc2lyZSBtaW1lLXR5cGUgcGVudHJ1IGEgb2J0aW5lIHRpcHVsIGRlIGZpc2llcic7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldGFyZSB0b2F0ZSBwYWdpbmlsZSBkZSB0aXAgY29udGludXQgY2EgdGlwIENvbnRpbnV0QXZhbnNhdC4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ1RvYXRlIHBhZ2luaWxlIGRlIGNvbnRpbnV0IGF1IGZvc3Qgc2V0YXRlIGNhIENvbnRpbnV0YXZhbnNhdC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1NpZ3VyIGRvcmVzdGkgc2NoaW1iYXJlYSB0aXB1bHVpIHBlbnRydSB0b2F0ZSBwYWdpbmlsZSBkZSBjb250aW51dD8nOwokbGFuZ1snbm9taW1ldHlwZSddID0gJ051IGVzdGUgZGlzcG9uaWJpbGEgbmljaW8gZnVuY3RpZSBtaW1lLXR5cGUgc2F1IG51IGZ1bmN0aW9uZWF6YSBpbmNvcmVjdC4gQWNlYXN0YSBjYXJhY3RlcmlzdGljYSBlc3RlIGRlemFjdGl2YXRhLic7CiRsYW5nWyd0b2dnbGVfbWVzc2FnZSddID0gJ0FzY3VuZGUgYWNlc3QgbWVzYWonOwokbGFuZ1snY29udGVudHNldHRpbmdzJ10gPSAnU2V0YXJpIGltcGxpY2l0ZSBDb250aW51dEF2YW5zYXQnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdQYXJhbWV0cmkgVVJMIGNhcmUgc2UgYWRhdWdhIGxhIHJlZGlyZWN0YXJlJzsKJGxhbmdbJ2V2YWx1YXRlc21hcnR5J10gPSAnRm9sb3NpcmUgc21hcnR5IHBlbnRydSBwcm9jZXNhcmVhIHBhcmFtZXRyaWxvcic7CiRsYW5nWydub2ltYWdlZmlsZSddID0gJyYjMDM5OyVzJiMwMzk7IG51IGVzdGUgdW4gZmlzaWVyIGltYWdpbmUnOwokbGFuZ1snZmlsZXR5cGVub3RhbGxvd2VkJ10gPSAnVGlwdWwgZGUgZmlzaWVyICYjMDM5OyVzJiMwMzk7IG51IGVzdGUgcGVybWlzJzsKJGxhbmdbJ3FjYSddID0gJ1AwLTE4MzgyMTUwNDMtMTI4MjgwNzUzMzkzNCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyODI4MDc5NzIuMS4yLnV0bWNzcj1nb29nbGV8dXRtY2NuPShvcmdhbmljKXx1dG1jbWQ9b3JnYW5pY3x1dG1jdHI9Y21zbXMnOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMTkxODczODE3LjEyODI4MDc1MzQuMTI4MjgwNzUzNC4xMjgyODA3NTM0LjEnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEyLjkuMTI4MjgwNzYxNTM2OCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ9Cg0LDRgdGI0LjRgNC10L3QvdC+0LUg0YHQvtC00LXRgNC20LjQvNC+0LUnOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C1INC+0L/RhtC40LgnOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCAlcyDRg9GB0YLQsNC90L7QstC70LXQvSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ9Cc0L7QtNGD0LvRjCBBZHZhbmNlZENvbnRlbnQgJXMg0YPQtNCw0LvQtdC9JzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCDQvtCx0L3QvtCy0LvQtdC9INC00L4gJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICfQnNC+0LTRg9C70YwgQWR2YW5jZWRDb250ZW50ICVzINGD0YHRgtCw0L3QvtCy0LvQtdC9Lic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAn0JzQvtC00YPQu9GMIEFkdmFuY2VkQ29udGVudCAlcyDRg9C00LDQu9C10L0uJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDQvNC+0LTRg9C70YwgQWR2YW5jZWRDb250ZW50Pyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT4gPHN0cm9uZz4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1OiA8L3N0cm9uZz4g0K3RgtC+0YIg0LHQu9C+0Log0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC90LXRgdC60L7Qu9GM0LrQviDRgNCw0Lcg0LIg0YjQsNCx0LvQvtC90LUuINCS0Ysg0LLQuNC00LjRgtC1INC30LTQtdGB0Ywg0YLQvtC70YzQutC+INC/0LXRgNCy0YvQuSDQsdC70L7Qui4gPC9lbT4NCic7CiRsYW5nWydlcnJvcl9iYXNpY2F0dHJpYiddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gQ2Fubm90IHVzZSBiYXNpYyBjb250ZW50IHByb3BlcnR5IG5hbWUgXCclc1wnIGFzIHZhbHVlIG9mIHBhcmFtIFwnYmxvY2tcJy4gPGJyIC8+VGhpcyBibG9jayBpcyBkaXNhYmxlZC4gQ2hlY2sgeW91ciBwYWdlIHRlbXBsYXRlIGFuZCBjaG9zZSBhIGRpZmZlcmVudCB2YWx1ZSBvZiBwYXJhbSBcJ2Jsb2NrXCcuPC9lbT4nOwokbGFuZ1snZXJyb3JfZXhwaXJlZGF0ZSddID0gJ9CU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjyDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0L/QvtC30LbQtSDQtNCw0YLRiyDQvdCw0YfQsNC70LAuJzsKJGxhbmdbJ3lvdWFyZWludGV4dCddID0gJ9Ci0LXQutGD0YnQuNC5INC60LDRgtCw0LvQvtCzJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICfQoNCw0LfQvNC10YAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydzaXplJ10gPSAn0KDQsNC30LzQtdGAINGE0LDQudC70LAnOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ9Cd0LDRgdC70LXQtNC+0LLQsNGC0Ywg0L7RgiDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0LPQvic7CiRsYW5nWydub25lJ10gPSAn0L3QuNGH0LXQs9C+JzsKJGxhbmdbJ2ludmFsaWQnXSA9ICfQvdC10LLQtdGA0L3Qvic7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPtCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtTo8L3N0cm9uZz4g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1IFwnJXNcJyDQv9Cw0YDQsNC80LXRgtGA0LAgYmxvY2tfdHlwZSDQsiDQsdC70L7QutC1IFwnJXNcJy48YnIgLz7Qn9GA0L7QstC10YDRjNGC0LUg0LLQsNGIINGI0LDQsdC70L7QvSDRgdGC0YDQsNC90LjRhtGLLjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudF9ibG9ja3BhcmFtcyddID0gJzxlbT48c3Ryb25nPtCe0YjQuNCx0LrQsDo8L3N0cm9uZz4g0J3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0LDRgNCw0LzQtdGC0YDQvtCyLiA8YnIgLz7QntGC0YHRg9GC0YHRgtCy0YPQtdGCINC/0LDRgNCw0LzQtdGC0YAgXCclc1wnINC00LvRjyDQsdC70L7QutCwIFwnJXNcJy4g0J/RgNC+0LLQtdGA0YzRgtC1INCy0LDRiCDRiNCw0LHQu9C+0L0g0YHRgtGA0LDQvdC40YbRiy48L2VtPic7CiRsYW5nWyd5ZXMnXSA9ICfQlNCwJzsKJGxhbmdbJ25vJ10gPSAn0J3QtdGCJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQg0LTQvtGB0YLRg9C/JzsKJGxhbmdbJ3JlZGlyZWN0cGFnZSddID0gJ1JlZGlyZWN0IFBhZ2UsINC10YHQu9C4INC90LXRgiDQtNC+0YHRgtGD0L/QsCc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAn0J/QvtC60LDQt9Cw0YLRjCDRhNC+0YDQvNGDINCy0YXQvtC00LAnOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAn0KLQvtC70YzQutC+INC00LvRjyDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LknOwokbGFuZ1snYmxvY2snXSA9ICfQkdC70L7Quic7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAn0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC00LDRgtGDINC+0LrQvtC90YfQsNC90LjRjyc7CiRsYW5nWydzdGFydGRhdGUnXSA9ICfQlNCw0YLQsCDQvdCw0YfQsNC70LAnOwokbGFuZ1snZW5kZGF0ZSddID0gJ9CU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjyc7CiRsYW5nWydibG9ja2NvbnRlbnQnXSA9ICfQkdC70L7QuiDRgdC+0LTQtdGA0LbQuNC80L7QtSc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDRjdGC0YMg0YHRgtGA0LDQvdC40YbRgywg0LrQsNC6INC90LXQsNC60YLQuNCy0L3Rg9GOJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICfQo9C00LDQu9C40YLRjCDRgdGC0YDQsNC90LjRhtGDJzsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddID0gJ9Cj0LTQsNC70LjRgtGMINC00LXQudGB0YLQstC40LUnOwokbGFuZ1snc2V0Y29udGVudDEnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCBBZHZhbmNlZENvbnRlbnQg0L7QsdGA0LDRgtC90L4g0Log0YLQuNC/0YMgQ29udGVudCc7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ9Cj0YHRgtCw0L3QvtCy0LjRgtGMINCy0YHQtSDRgdGC0YDQsNC90LjRhtGLINGC0LjQv9CwIEFkdmFuY2VkQ29udGVudCDQvtCx0YDQsNGC0L3QviDQuiDRgtC40L/RgyBDb250ZW50INC4INGD0LTQsNC70LjRgtGMINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LHQu9C+0LrQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQvtCx0L3QvtCy0LvQtdC90YsnOwokbGFuZ1snc3VjY2VzcyddID0gJ9Ce0JonOwokbGFuZ1snZXJyb3InXSA9ICfQntGI0LjQsdC60LAnOwokbGFuZ1snZGVsZXRlcGFnZXMnXSA9ICfQo9C00LDQu9C40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snaW1wb3J0cGFnZXMnXSA9ICfQo9GB0YLQsNC90L7QstC40YLRjCDQstGB0LUg0YHRgtGA0LDQvdC40YbRiyDRgtC40L/QsCAlcyDQuiDRgtC40L/RgyAlcy4nOwokbGFuZ1sncGFnZXNpbXBvcnRlZCddID0gJ9CS0YHQtSDRgdC+0LTQtdGA0LbQuNC80L7QtSDRgdGC0YDQsNC90LjRhiwg0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQsiBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ2NvbmZpcm1pbXBvcnQnXSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQuNC30LzQtdC90LjRgtGMINGC0LjQvyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INC00LvRjyDQstGB0LXRhSDRgdGC0YDQsNC90LjRhj8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICfQodC60YDRi9GC0Ywg0Y3RgtC+INGB0L7QvtCx0YnQtdC90LjQtSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICfQndCw0YHRgtGA0L7QudC60LggQWR2YW5jZWRDb250ZW50INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOJzsKJGxhbmdbJ3JlZGlyZWN0cGFyYW1zJ10gPSAn0LTQvtCx0LDQstC40YLRjCDQv9Cw0YDQsNC80LXRgtGA0YsgVVJMINC/0YDQuCDQv9C10YDQtdC90LDQv9GA0LDQstC70LXQvdC40LgnOwokbGFuZ1snZXZhbHVhdGVzbWFydHknXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgU21hcnR5INC00LvRjyDQvtCx0YDQsNCx0L7RgtC60Lgg0L/QsNGA0LDQvNC10YLRgNC+0LInOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz7QntGI0LjQsdC60LA6PC9zdHJvbmc+INCd0LUg0LzQvtCz0YMg0LfQsNCz0YDRg9C30LjRgtGMINC80L7QtNGD0LvRjCBcJyVzXCcuICjQntC/0YDQtdC00LXQu9C10L3QviDQtNC70Y8g0LHQu9C+0LrQsCBcJyVzXCcg0LIg0LLQsNGI0LXQvCDRiNCw0LHQu9C+0L3QtSDRgdGC0YDQsNC90LjRhtGLLik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPtCe0YjQuNCx0LrQsDo8L3N0cm9uZz4g0JzQvtC00YPQu9GMIFwnJXNcJyDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDQsdC70L7QutC4INC60L7QvdGC0LXQvdGC0LAuICjQntC/0YDQtdC00LXQu9C10L3QviDQtNC70Y8g0LHQu9C+0LrQsCBcJyVzXCcg0LIg0LLQsNGI0LXQvCDRiNCw0LHQu9C+0L3QtSDRgdGC0YDQsNC90LjRhtGLLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAn0JLRgdC1INGB0YLRgNCw0L3QuNGG0Ysg0YLQuNC/0LAgJXMg0YPRgdC/0LXRiNC90L4g0L/RgNC40LLQtdC00LXQvdGLINC6INGC0LjQv9GDICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICfQn9C+0LrQsNC30LDRgtGMINCy0LrQu9Cw0LTQutGDINC/0LDRgNCw0LzQtdGC0YDQvtCyIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgZGlzcGxheSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddID0gJ9Ch0L7RhdGA0LDQvdC40YLRjCDRgdGC0LDRgtGD0YEgY29sbHBhc2Ug0LTQu9GPICVzJzsKJGxhbmdbJ2NvbnRlbnRfYmxvY2tzJ10gPSAn0LHQu9C+0LrQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICfRgdC+0LTQtdGA0LbQuNC80L7QtSDQsdC70L7QutCwINGB0L7QvtCx0YnQtdC90LjRjyc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICfQsdC70L7QuiDQs9GA0YPQv9C/JzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydwZXJfcGFnZSddID0gJ9C90LAg0YHRgtGA0LDQvdC40YbRgyc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICfQvdCwINGI0LDQsdC70L7QvSc7CiRsYW5nWydib3RoMSddID0gJ3RlbXBsYXRlIE9SIHBhZ2UgJzsKJGxhbmdbJ2JvdGgyJ10gPSAndGVtcGxhdGUgQU5EIHBhZ2UnOwokbGFuZ1snY29udGVudCddID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1JzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAn0KDQsNGB0YjQuNGA0LXQvdC90L7QtSDRgdC+0LTQtdGA0LbQuNC80L7QtSc7CiRsYW5nWydwcmVmcyddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ9Cf0L7Qu9GPINCy0LLQvtC00LAnOwokbGFuZ1sndHBsX25hbWUnXSA9ICfQmNC80Y8g0YjQsNCx0LvQvtC90LAnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICfQqNCw0LHQu9C+0L0g0LjQvNC10LXRgiDQvdC10L7QsdGF0L7QtNC40LzRi9C1INC/0L7Qu9GPINC4INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQv9GD0YHRgtGL0LwnOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHkuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkJ10gPSAnTm8gaW5wdXQgaWQgZ2l2ZW4gb3IgaW5wdXQgaWQgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkX2V4aXN0cyddID0gJ0lucHV0IElEIGlzIGFscmVhZHkgaW4gdXNlLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLiAobXVzdCBiZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCBkZWxldGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLic7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICfQo9C00LDQu9C40YLRjCDQstGL0LHRgNCw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGB0LTQtdC70LDRgtGMINGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGN0LvQtdC80LXQvdGCPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINCy0YvQsdGA0LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLPyc7CiRsYW5nWyd1c2VfY29udGVudHR5cGUnXSA9ICfQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgY29udGVudHR5cGUnOwokbGFuZ1snaGVscF90cGxfdmFycyddID0gJzxwPjxzdHJvbmc+VGVtcGxhdGUgdmFyczo8L3N0cm9uZz48L3A+DQo8cD48cHJlPjxjb2RlPnskaW5wdXRzfTwvY29kZT48L3ByZT4gaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbGwgZGVmaW5lZCBpbnB1dCBlbGVtZW50cyBvZiB0aGF0IG11bHRpIGlucHV0IGJsb2NrLjxiciAvPg0KRWFjaCBpbnB1dCBlbGVtZW50IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGl0cyBwYXJhbXMuIDxiciAvPg0KU2VlIG1vZHVsZSBoZWxwIGZvciBtb3JlIGluZm8uPGJyIC8+DQpBZGRpdGlvbmFsIHBhcmFtIGlzICJpbnB1dCIgdGhhdCB3aWxsIHByaW50IG91dCB0aGUgaW5wdXQgZWxlbWVudC48YnIgLz4NClRvIGFjY2VzcyB0aGUgcGFyYW1zIHVzZSB0aGUgZG90IHN5bnRheC48YnIgLz4NCkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT57Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19DQoJeyRlbG0ubGFiZWx9OiZuYnNwO3skZWxtLmlucHV0fTxiciAvPg0Key9mb3JlYWNofTwvY29kZT48L3ByZT4gJzsKJGxhbmdbJ2hlbHAnXSA9ICc8YnIgLz4NCjxoMz5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+VGhpcyBpcyBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUgIkNvbnRlbnQiIG9mIENNU21zLjxiciAvPg0KSXQgcHJvdmlkZXMgbW9yZSBmbGV4aWJpbGl0eSBieSBjcmVhdGluZyBjdXN0b20gaW5wdXQgY29udHJvbHMgaW4gYmFja2VuZC48YnIgLz4NClVzZXJzIGNhbiBhZGQgZHJvcGRvd25zLCBtdWx0aXBsZSBzZWxlY3QgbGlzdHMsIGNoZWNrYm94ZXMsIGdyb3VwIGNvbnRlbnQgYmxvY2tzIA0KaW4gc2VwYXJhdGUgcGFnZSB0YWJzLCBibG9jayB0YWJzIGluc2lkZSBhIHBhZ2UgdGFiIG9yIGluIGZpZWxkc2V0cyBieSBqdXN0IA0KdXNpbmcgYWRkaXRpb25hbCBwYXJhbXMgaW4gdGhlIHRlbXBsYXRlIHdoZW4gY2FsbGluZyB0aGUgY29udGVudC48YnIgLz4NCkl0IGFsc28gYWRkcyBhYmlsaXR5IHRvIGdyYW50IGFjY2VzcyBvZiBwYWdlcyB0byBjZXJ0YWluIHVzZXJzIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIGFuZCBoaWRlIHRoZSBjb250ZW50LCByZXBsYWNlIGl0IGJ5IHRoZSBsb2dpbiBmb3JtIG9mIHRoZSANCkZyb250RW5kVXNlcnMgbW9kdWxlIG9yIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2Ugc2hvd2luZyB0aGUgbG9naW4gZm9ybSBvciANCmp1c3QgcmVkaXJlY3Qgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlLjxiciAvPg0KUGFnZSBwcm9wZXJ0eSBvZiBGcm9udEVuZFVzZXJzIGFjY2VzcyBhbmQgcmVkaXJlY3QgcGFnZSBjYW4gYmUgaW5oZXJpdGVkIGJ5IA0KcGFyZW50IHBhZ2VzLjwvcD4NCjxwPjxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVG8gZ2V0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb250ZW50IHR5cGUgDQppbiBmcm9udGVuZCB5b3UgbmVlZCB0byBjYWxsIHlvdXIgY29udGVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBZHZhbmNlZENvbnRlbnR9IA0KKGNhc2Ugc2Vuc2l0aXZlISkuPGJyIC8+DQpPdGhlcndpc2UgaXQgbWF5IGJlaGF2ZSBsaWtlIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBwbHVnaW4uPC9lbT48L3A+DQo8cD5Zb3UgY2FuIGV2ZW4gdXNlIHNtYXJ0eSBsb2dpYyBpbiBwYXJhbWV0ZXIgdmFsdWVzLiBUaGF0IG1lYW5zIHlvdSBjYW4gdXNlIHRoZSANCnJlc3VsdCBvZiBhIHBsdWdpbiwgYW4gdWR0IG9yIGV2ZW4gYSBtb2R1bGUgb3IganVzdCB0aGUgY29udGVudCBvZiBhIGdsb2JhbCANCmNvbnRlbnQgYmxvY2sgYXMgcGFyYW1ldGVyIHZhbHVlIHRvIGNyZWF0ZSBkeW5hbWljIHZhbHVlcy48L3A+DQo8aDM+SG93IGlzIGl0IHVzZWQ/PC9oMz4NCjxwPkFmdGVyIGluc3RhbGxhdGlvbiB0aGUgbW9kdWxlIHNldHRpbmdzIGNhbiBiZSBmb3VuZCBpbiAiRXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50Ii48L3A+DQo8cD5BZGRpdGlvbmFsbHkgeW91IHdpbGwgaGF2ZSBhIG5ldyBjb250ZW50IHR5cGUgIkFkdmFuY2VkQ29udGVudCIgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICJBZHZhbmNlZENvbnRlbnQiIGFuZCBzZWUgd2hhdCBoYXBwZW5zIA0KaW4gYmFja2VuZC4uLjwvcD4NCjxoMz5XaGF0IHBhcmFtZXRlcnMgYXJlIGF2YWlsYWJsZT88L2gzPg0KPHA+YWxsIHBhcmFtcyBhcmUgb3B0aW9uYWw8L3A+DQo8cD48c3Ryb25nPkRlZmF1bHQgcGFyYW1zOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gaGF2ZSBtb3JlIHRoYW4gb25lIGNvbnRlbnQgYmxvY2sgcGVyIHBhZ2UuIElmIG11bHRpcGxlIGNvbnRlbnQgdGFncyBhcmUgcHV0IG9uIGEgdGVtcGxhdGUsIHRoYXQgbnVtYmVyIG9mIGVkaXQgYm94ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgaWYgdGhlIHBhZ2UgaXMgZWRpdGVkLjxiciAvPg0KCQkJCWUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSJTZWNvbmQgQ29udGVudCBibG9jayJ9PC9jb2RlPjxiciAvPg0KCQkJCU5vdywgaWYgeW91IGVkaXQgYSBwYWdlIHRoZXJlIHdpbGwgYmEgYSB0ZXh0YXJlYSBjYWxsZWQgIlNlY29uZCBDb250ZW50IGJsb2NrIi48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9IiRwYWdlY29udGVudCJ9PC9jb2RlPjxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gRm9yIHNvbWUgcmVhc29uIHRoaXMgcGFyYW0gZG9lcyBub3Qgd29yayBhdCB0aGUgbW9tZW50IHdpdGggdGhlIG1vZHVsZSBwbHVnaW4ge0F2YW5jZWRDb250ZW50fS4gVXNlIDxiciAvPjxjb2RlPntjYXB0dXJlIGFzc2lnbj0iZm9vIn17QWR2YW5jZWRDb250ZW50fXsvY2FwdHVyZX08L2NvZGU+IDxiciAvPmluc3RlYWQuPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5BZHZhbmNlZCBwYXJhbXM6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdHlwZTwvdHQ+ICh0ZXh0LGNoZWNrYm94LGRyb3Bkb3duLHNlbGVjdF9tdWx0aXBsZSxkYXRlLG11bHRpX2lucHV0KSANCgkJPHVsPg0KCQkJPGxpPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB3aGF0IGNvbnRlbnQgY29udHJvbCB0eXBlIGlzIHVzZWQgaW4gdGhlIGJhY2sgZW5kLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5wYWdlX3RhYjwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSB0YWIgaW4gd2hpY2ggdGhlIGNvbnRlbnQgYmxvY2sgaXMgZGlzcGxheWVkIGluIHRoZSBiYWNrZW5kLjxiciAvPg0KCQkJCVBvc3NpYmxlIHZhbHVlcyBhcmUgIm1haW4iICggPSBUYWIgIk1haW4gTWVudSIpLCAib3B0aW9ucyIgKCA9IFRhYiAiT3B0aW9ucyIpLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvblwndCBiZSBzaG93biBpbiBiYWNrZW5kIGFzIHdlbGwgYXMgaW4gZnJvbnRlbmQuIChvbmx5IHdvcmtzIHdpdGgge0FkdmFuY2VkQ29udGVudH0gcGx1Z2luKTxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmVkaXRvcl9ncm91cHM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfdXNlcnM8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiB1c2VyIG5hbWVzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCB0aGlzIGJsb2NrLg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHRoZSBwYXJhbXMgPHR0PmVkaXRvcl91c2VyczwvdHQ+IGFuZCA8dHQ+ZWRpdG9yX2dyb3VwczwvdHQ+IGFyZSBlbXB0eSB0aGUgYmxvY2sgbWF5IGJlIGVkaXRlZCBieSBhbnkgdXNlciB3aXRoIHN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byBlZGl0IGEgcGFnZTwvZW0+PGJyIC8+PGJyIC8+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5mZXVfYWNjZXNzPC90dD4NCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgbGlzdCBvZiBmZXUgZ3JvdXAgaWRzIHNlcGFyYXRlZCBieSBhIGNvbW1hLjxiciAvPg0KCQkJCVRoaXMgc2hvd3MgdGhlIGNvbnRlbnQgYmxvY2sgb25seSB0byBjZXJ0YWluIGZldSBncm91cHMuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjdGlvbjwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJU3BlY2lmeSBpZiB0aGUgbG9naW4gZm9ybSBvZiB0aGUgZmV1IG1vZHVsZSB3aWxsIGJlIHNob3duIG9yIG5vdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBsb2dpbiBmb3JtIHdpbGwgb25seSBiZSBzaG93biBvbmUgdGltZS48YnIgLz4NCgkJCQlJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2tzIHdpdGggbGltaXRlZCBmZXVfYWNjZXNzIGFuZCBmZXVfYWN0aW9uIHNldCB0byB0cnVlIG9ubHkgdGhlIGZpcnN0IGJsb2NrcyBsb2dpbiBmb3JtIHdpbGwgYmUgc2hvd24gYW5kIGFsbCBvdGhlciBibG9ja3Mgd2lsbCBqdXN0IGJlIGVtcHR5LjwvZW0+PGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YWxsb3dfbm9uZTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+U2V0IHRvIHRydWUgaWYgdGhlIHVzZXIgbWF5IGVudGVyIGVtcHR5IHZhbHVlcy4gPGJyIC8+SWYgc2V0IHRvIGZhbHNlIGFuZCB2YWx1ZSBpcyBlbXB0eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgcGFyYW0gImRlZmF1bHQiIHdpbGwgYmUgdXNlZC4gPGJyIC8+SWYgc2V0IHRvIHRydWUgYW5kIGJsb2NrIGlzIG9mIHR5cGUgaW1hZ2UvZmlsZSB0aGUgb3B0aW9uICJub25lIiAobW9kZT0iZHJvcGRvd24iKSBvciBhIGJ1dHRvbiB0byBjbGVhciB0aGUgc2VsZWN0ZWQgZmlsZS9pbWFnZSB2YWx1ZSAobW9kZT0iZmlsZXBpY2tlciIpIHdpbGwgYmUgZGlzcGxheWVkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zbWFydHk8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVR1cm4gc21hcnR5IHByb2Nlc3Npbmcgb2YgdmFsdWVzIG9uL29mZi48YnIgLz4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSBhbnkgZ2l2ZW4gdmFsdWUgd2lsbCBiZSBwcm9jZXNzZWQgYnkgdGhlIHNtYXJ0eSBlbmdpbmUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOiA8L3N0cm9uZz4gQ29uc2lkZXIgdGhhdCB5b3UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBzbWFydHkgZGVsaW1pdGVycyB0aGF0IGFyZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gVGhpcyB3aWxsIGNhdXNlIHNtYXJ0eSBlcnJvcnMgaW4gZnJvbnRlbmQuPGJyIC8+DQoJCQkJU28geW91IG5lZWQgdG8gdXNlIDo6OiBhcyBkZWxpbWl0ZXIgaW5zdGVhZC48YnIgLz48L2VtPg0KCQkJCUUuZy46IDxjb2RlPntjb250ZW50IGJsb2NrPSJDYXRlZ29yaWVzIiBsYWJlbD0iU2VsZWN0IGEgY2F0ZWdvcnkiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0iOjo6Z2xvYmFsX2NvbnRlbnQgbmFtZT1cJ2NhdGVnb3J5bGlzdFwnOjo6IiBzbWFydHk9InRydWUifTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAiY2hlY2tib3giOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAodHJ1ZS9mYWxzZSkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQljaGVja3MvdW5jaGVja3MgdGhlIGNoZWNrYm94IGJ5IGRlZmF1bHQgd2hlbiBhZGRpbmcgYSBwYWdlPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBVc2UgIjEiIGZvciBjaGVja2VkIGFuZCAiMCIgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9ImNoZWNrYm94IiBkZWZhdWx0PTF9PC9jb2RlPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRyb3Bkb3duIi8ic2VsZWN0X211bHRpcGxlIjo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSJzZWxlY3RfbXVsdGlwbGUiPC9jb2RlPiBpcyBzZXQuIDxlbT4oRGVmYXVsdCBpcyBudW1iZXIgb2YgaXRlbXMpPC9lbT48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zb3J0YWJsZV9pdGVtczwvdHQ+ICh0cnVlL2ZhbHNlKSAtIHNlbGVjdF9tdWx0aXBsZSBvbmx5DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlJZiBzZXQgdG8gdHJ1ZSB0aGUgaXRlbXMgd29uXCd0IGJlIHNob3duIGFzIGEgbXVsdGlwbGUgc2VsZWN0IGlucHV0IHdpdGggb3B0aW9ucyBidXQgYXMgYSBsaXN0IG9mIGNoZWNrYm94ZXMgdGhhdCBjYW4gYmUgcmVvcmRlcmVkLjxiciAvPkVhY2ggcm93IGNvbnRhaW5zIHRoZSBpdGVtIGxhYmVsIGFuZCBhIGNoZWNrYm94IHdpdGggdGhlIGl0ZW0gdmFsdWUuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBvbmx5IHRoZSBvcmRlciBvZiB0aGUgPHN0cm9uZz5zZWxlY3RlZDwvc3Ryb25nPiBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgYWx3YXlzIGRpc3BsYXllZCBvbiB0aGUgdG9wIG9mIHRoZSBsaXN0IHdoZW4gcmVsb2FkaW5nIHRoZSBlZGl0IHBhZ2UuPGJyIC8+DQoJCQkJVW5zZWxlY3RlZCBpdGVtcyB3aWxsIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgdGVtcGxhdGU8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlBhcmFtcyBvZiBibG9ja3R5cGUgImRhdGUiOjwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvXCdjbG9jayB3aWxsIGJlIHVzZWQ8L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRhdGVfZm9ybWF0PC90dD4gKHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGUgc3RyZnRpbWUgZGF0ZSBmb3JtYXQgdG8gc2hvdyBpbiBmcm9udGVuZC4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICJtdWx0aV9pbnB1dCI6PC9zdHJvbmc+PC9wPg0KPHVsPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+aW5wdXRzPC90dD4gKGNzdiBvZiBpbnB1dCBpZHMgeW91IGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQpIA0KCQk8YnIgLz48YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVfZGVsaW1pdGVyPC90dD4gKGFueSBzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhpcyBkZWZpbmVzIGEgc3RyaW5nIHRoYXQgZGV2aWRlcyB0aGUgdmFsdWVzIG9mIHRoZSBpbnB1dHMgb2Ygb25lIG11bHRpX2lucHV0IHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICI8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGxpbWl0ZXIgLS0+Ig0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICI8IS0tIG11bHRpX2lucHV0X2RlbGxpbWl0ZXIgLS0+Ig0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+V2hhdCBpcyBhIG11bHRpX2lucHV0IGZvcj88L3N0cm9uZz48L3A+DQoJCTxwPkEgbXVsdGlfaW5wdXQgYmxvY2sgaXMgYSBjb250ZW50IGJsb2NrIHRoYXQgY29uc2lzdHMgb2YgZGlmZmVyZW50IGlucHV0IGZpZWxkcy4gPGJyIC8+DQoJCVlvdSBjYW4gZGVmaW5lIHRoZW0gaW4gdGhlIG1vZHVsZSBhZG1pbmlzdHJhdGlvbiB1c2luZyB0aGUgc2FtZSBzeW50YXggeW91IHVzZSBpbiBhIHRlbXBsYXRlIHdoZW4gZGVmaW5pbmcgYSBjb250ZW50IGJsb2NrLjxiciAvPg0KCQlNdWx0aSBpbnB1dHMgY2FuIGJlIHVzZWQgaWYgeW91IHdhbnQgdG8gc3RvcmUgZGlmZmVyZW50IHZhbHVlcyBpbiBvbmUgY29udGVudCBibG9jayBhbmQgcHJvdmlkZSBkaWZmZXJlbnQgaW5wdXQgdHlwZXMgZm9yIGVhY2ggdmFsdWVzLjxiciAvPg0KCQlUaGlzIGNhbiBiZSB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIGRyb3Bkb3duIHRvIHNlbGVjdCBhIG1vZHVsZSB0byBiZSBzaG93biBpbiBmcm9udGVuZCBhbmQgdGV4dCBpbnB1dCB0byBkZWZpbmUgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLjxiciAvPg0KCQlFeGFtcGxlIGZvciBhIG11bHRpX2lucHV0IGluIHBhZ2UgdGVtcGxhdGU6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJe2NvbnRlbnQgYmxvY2s9Im1vZHVsZSIgbGFiZWw9IlBhZ2UgbW9kdWxlcyIgYmxvY2tfdHlwZT0ibXVsdGlfaW5wdXQiIGlucHV0cz0ibW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlIn0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+RXhhbXBsZSBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhlIG11bHRpX2lucHV0IG5hbWVkICJtb2R1bGUiOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgc2VsZWN0aW9uIiBibG9ja190eXBlPSJkcm9wZG93biIgaXRlbXM9InxOZXdzfEdhbGxlcnl8TWVudSJ9DQoJCXtjb250ZW50IGJsb2NrPSJtb2R1bGUgcGFyYW1zIiBibG9ja190eXBlPSJ0ZXh0IiBvbmVsaW5lPXRydWV9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJCTxwPldoYXQgaGFwcGVucyBpZiB5b3UgZWRpdCBhIHBhZ2U/PC9wPg0KCQk8cD5JdCB3aWxsIHNob3cgeW91IGEgZmllbGRzZXQgd2l0aCBsZWdlbmQgIlBhZ2UgbW9kdWxlcyIuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgIm1vZHVsZSIgZm91ciB0aW1lcy48YnIgLz4NCgkJVGhhdCBtZWFucyB5b3Ugc2VlIGZvdXIgbGluZXMgd2l0aCB0d28gaW5wdXQgZmllbGRzLiBBIGRyb3Bkb3duIGFuZCBhIHRleHQgaW5wdXQuPC9wPg0KCQk8cD5XaGF0IGhhcHBlbnMgaWYgeW91IHNhdmUgYSBwYWdlPzwvcD4NCgkJPHA+VGhlIG1vZHVsZSBzdG9yZXMgdGhlIHZhbHVlcyBhcyBvbmUgc2luZ2xlIGNvbnRlbnQgcHJvcGVydHkgKGFrYSBjb250ZW50YmxvY2spIGFuZCBzZXBhcmF0ZXMgdGhlIGlucHV0cyBieSBhIGdpdmVuIGRlbGltaXRlci48YnIgLz4NCgkJTGV0XCdzIGFzc3VtZSB5b3Ugc2VsZWN0IHRoZSBOZXdzIG1vZHVsZSBmb3VyIHRpbWVzIHdpdGggZGlmZmVyZW50IG1vZHVsZSBwYXJhbXMgbGlrZSBjYXRlZ29yeT0iMSIsIGNhdGVnb3J5PSIyIiwgY2F0ZWdvcnk9IjMiLCBjYXRlZ29yeT0iNCIuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSIxIjwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPjxiciAvPg0KCQlOZXdzPCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+Y2F0ZWdvcnk9IjIiPCEtLSBtdWx0aV9pbnB1dF9kZWxpbWl0ZXIgLS0+PGJyIC8+DQoJCU5ld3M8IS0tIG11bHRpX2lucHV0X3ZhbHVlX2RlbGltaXRlciAtLT5jYXRlZ29yeT0iMyI8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSI0Ig0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgeW91IGNhbiBleHBsb2RlIHRoZSBjb250ZW50IGJ5IHRoZSBkZWxpbWl0ZXJzIGFuZCBjYWxsIHRoZSBzZWxlY3RlZCBtb2R1bGVzLjwvcD4NCgkJPHA+RnVsbCBFeGFtcGxlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXsqIGRlZmluZSB0aGUgY29udGVudCBibG9jayAqfQ0KCQl7Y29udGVudCBibG9jaz0ibXlfbW9kdWxlcyIgYmxvY2tfdHlwZT0ibXVsdGlfaW5wdXQiIGlucHV0cz0iTW9kdWxlLE1vZHVsZSxNb2R1bGUsTW9kdWxlIiBhc3NpZ249Im1vZHVsZXMifQ0KCQkNCgkJeyogZXhwbG9kZSBibG9jayBjb250ZW50IGluIGFuIGFycmF5IHRvIGdldCB0aGUgaW5wdXQgZ3JvdXBzICp9DQoJCXthc3NpZ24gdmFyPW1vZHVsZXMgdmFsdWU9IjwhLS0gbXVsdGlfaW5wdXRfZGVsaW1pdGVyIC0tPiJ8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09Im1vZHVsZSJ9DQoJCQl7aWYgJG1vZHVsZSAhPSBcJ1wnfQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9IjwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPiJ8ZXhwbG9kZTokbW9kdWxlfQ0KCQkJCQ0KCQkJCXtpZiRtb2R1bGVfaXRlbXNbMF0gIT0gXCdcJ30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6XCdjbXNfbW9kdWxlIG1vZHVsZT0iXCd8Y2F0OiRtb2R1bGVfaXRlbXNbMF18Y2F0OlwnIiBcJ3xjYXQ6JG1vZHVsZV9pdGVtc1sxXXxjYXQ6JHNtYXJ0eS5yZGVsaW19DQoJCQkJCXtlbHNlfQ0KCQkJCQkJe2V2YWwgdmFyPSRzbWFydHkubGRlbGltfGNhdDpcJ2Ntc19tb2R1bGUgbW9kdWxlPSJcJ3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6XCciXCd8Y2F0OiRzbWFydHkucmRlbGltfQ0KCQkJCQl7L2lmfQ0KCQkJCQkNCgkJCQl7L2lmfQ0KCQkJCQ0KCQkJey9pZn0NCgkJDQoJCXsvZm9yZWFjaH0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgk8L2xpPg0KPC91bD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KCTxsaT5UaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXMgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jb250ZW50Mi8iPmh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvPC9hPjwvbGk+DQoJPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPC91bD4NCjxiciAvPg0KPHA+RmVlbCBmcmVlIHJlcG9ydCBhbnkga2luZCBvZiBmZWVkYmFjay48L3A+DQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPg0KCUFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLjxiciAvPg0KCVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLDxiciAvPg0KCWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mPGJyIC8+DQoJTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLjxiciAvPg0KCVNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48YnIgLz4NCglZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTxiciAvPg0KCWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlPGJyIC8+DQoJRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8YnIgLz4NCglPciByZWFkIGl0IG9ubGluZTogPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5odHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEw8L2E+PGJyIC8+DQoJUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQo8L3A+DQo8cD5Db3B5cmlnaHQgwqkgMjAxMCwgR2VvcmcgQnVzY2ggKE5hTikuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQo8YnIgLz4gJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzxiciAvPg0KPHA+PHN0cm9uZz5Nb2R1bGUgcmVsZWFzZXM8L3N0cm9uZz4uLi48L3A+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+MC43LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgaXRlbSAjNTY1MTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY2Nlc3M8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjdGlvbjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSByZXF1aXJlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC43IChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSBidWdmaXhlcyBmb3IgQ01TbXMgMS45KyAobmVlZHMgQ01TbXMgMS45IG1pbmltdW0gbm93KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHN1cHBvcnQgb2Yge2NvbnRlbnRfbW9kdWxlfSB0YWc8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gbm9fY29sbGFwc2U8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4yIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gbWlub3IgYnVnZml4IChzaG93ZWQgdGFicyBvZiBwcmV2aW91cyB0ZW1wbGF0ZSB3aGVuIHRlbXBsYXRlIHdhcyBjaGFuZ2VkKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC42LjEgKE5vdiAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJsb2NrX3R5cGUgbXVsdGlfaW5wdXQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNiAoT2N0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHNldmVyYWwgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19ncm91cDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPk1pc2M6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gUmVtb3ZlZCBmaWxlIHBpY2tlciAoYW5kIGFzc29jaWF0ZWQgYmxvY2tfdHlwZXMgaW1hZ2UvZmlsZSkgLSB1c2UgR0JGaWxlUGlja2VyIGluc3RlYWQuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjUgKFNlcHQgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MjkyIChtZW1vcnkgaXNzdWUpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI1NCAoZGlzYWJsZSB3eXNpd3lnIG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTAgKHVybG9ubHkgbm90IHdvcmtpbmcpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTMxMSAoaW1hZ2UgcGF0aHMgbm90IHN0b3JlZCBcJ2NvcnJlY3RseVwnKTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcyIgb3BlbiBhbiBhZHZhbmNlZCBjb250ZW50IHBhZ2UgYW5kIG11bHRpcGxlIGNvbnRlbnQgYmxvY2tzIG9mIHNhbWUgbmFtZSB3ZXJlIHVzZWQgaW4gdGVtcGxhdGUuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBleHRyYSBmaWVsZHMgY291bGQgbm90IGJlIHVwZGF0ZWQuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBmZXUgYWNjZXNzIGRpZCBub3Qgd29yay48L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGVsZXRlIiB0byBsZXQgdXNlcnMgZGVsZXRlIGZpbGVzIGV2ZW4gaWYgbm8gcGVybWlzc2lvbiAiTW9kaWZ5IEZpbGVzIjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiY3JlYXRlX2RpcnMiIHRvIGxldCB1c2VycyBjcmVhdGVfZGlycyBldmVuIGlmIG5vIHBlcm1pc3Npb24gIk1vZGlmeSBGaWxlcyI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbmV3IGJsb2NrdHlwZSAibm90ZSIgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAidHlwZSIgdG8gImJsb2NrX3R5cGUiIHNpbmNlIGl0IGludGVyZmVyZXMgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tICM1MTAxOiBwYWdlX3RhYiAib3B0aW9ucyIgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic2hvd19jbG9jayIgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHRpbWUgZHJvcGRvd24gb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAiZGF0ZV9mb3JtYXQiIHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAiZGF0ZSIgaW4gZnJvbnRlbmQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gImRlc2NyaXB0aW9uIjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBidWxrIGZ1bmN0aW9uIHRvIHNldCBhbGwgcGFnZXMgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCB7Y29udGVudF9tb2R1bGV9IHRhZzwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjQgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUwNDU6IFdoZW4gc3dpdGNoaW5nIGZyb20gQ29udGVudCAtPiBBZHZhbmNlZCBDb250ZW50IGxvdHMgb2YgUEhQIGVycm9yczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA1NjogcGFnZV90YWJzIG5vdCB3b3JraW5nIGZvciB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gIk1hbmFnZSBBbGwgQ29udGVudCI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICJhbGxvd19ub25lIiBvZiBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGUgd2FzIG5vdCBzaG93biB3aGVuIHRlbXBsYXRlIGhhcyBiZWVuIGVkaXRlZDwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGZpbGVtYW5hZ2VtZW50IGFuZCB1cGxvYWQgZnVuY3Rpb25zIHRvIGNvbnRlbnQgYmxvY2tzIG9mIHR5cGUgaW1hZ2UvZmlsZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBicmVhZGN1bWJzIHRvIGZpbGVwaWNrZXI8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRtaW5zIG1heSBicm93c2UgdGhlIGVudGlyZSBkaXIgdHJlZSBpbiBmaWxlcGlja2VyIGZpbGUgYnJvd3NlciByZWdhcmRsZXNzIG9mIHRlbXBsYXRlIHBhcmFtczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBtaW1lIHR5cGUgY2hlY2tpbmcgdG8gZ2V0IGZpbGUgdHlwZTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCByYXd1cmxlbmNvZGUgaW4gc3JjIGF0dHJpYnMgdG8gZGlzcGxheSBpbWFnZXMgd2l0aCB3ZWlyZCBmaWxlbmFtZXMuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+bWlzY2VsbGFuZW91czo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIE9PUCBzdHVmZiAocHJpdmF0ZS9wdWJsaWMvcHJvdGVjdGVkKSB0byBnYWluIG1vcmUgY29tcGF0aWJpbGl0eSB3aXRoIFBIUDQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBhamF4IGZ1bmN0aW9ucyB0byByZXR1cm4geG1sIHZhbHVlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSByZW1vdmVkIHVzYWdlIG9mIEltYWdlTWFuYWdlciBvbmNlIGFuZCBmb3IgYWxsLiAoY2F1c2VkIG9ubHkgdHJvdWJsZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4zIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgk8dWw+DQoJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWxpYXMgd2FzIG5vdCBhbHdheXMgY29udmVydGVkIHByb3Blcmx5PC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gdW5zdWJtaXR0ZWQgY29udGVudCBnb3QgbG9zdCBpZiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IHRvIEFkdmFuY2VkQ29udGVudDwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCTx1bD4NCgkJCQk8bGk+PHA+LSBhZGRlZCBzdGFydC9lbmQgZGF0ZTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHJlbW92ZWQgdGltZXBpY2tlcjsgcmVwbGFjZWQgYnkgYSBzaW1wbGUgZHJvcGRvd248L3A+PC9saT4NCgkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IHdpdGgge2NvbnRlbnRfaW1hZ2V9PC9wPjwvbGk+DQoJCQk8L3VsPg0KCQk8L2xpPg0KCTwvdWw+DQoJPGxpPjxwPjxzdHJvbmc+MC4zLjIgKEp1bmUgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgY2hhbmdpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRlbnQgdHlwZSBvciBjaGFuZ2luZyB0ZW1wbGF0ZSBjYXVzZWQgZmF0YWwgZXJyb3JzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nIHdoZW4gc2F2aW5nIGEgcGFnZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwcmV2aWV3IHRhYjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmUtYWRkZWQgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiB0byB0b2dnbGUgY29udGVudCBibG9ja3MgaW4gYmFja2VuZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW1zIGVkaXRvcl9ncm91cHMvZWRpdG9yX3VzZXJzIHRvIHNwZWNpZnkgY2VydGFpbiB1c2Vycy9ncm91cHMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IGNlcnRhaW4gYmxvY2tzPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHBhcmFtcyBzZWxlY3RlZC9jaGVja2VkOyB1c2UgcGFyYW0gZGVmYXVsdCBpbnN0ZWFkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBibG9jayBpZHMgd2lsbCBiZSBjb252ZXJ0ZWQgZnJvbSBibG9jayBuYW1lIHVzaW5nIGNvcmUgZnVuY3Rpb24gbXVuZ2Vfc3RyaW5nX3RvX3VybCAodG8gcmVtb3ZlIHNwZWNpYWwgY2hhcnMsIHdoaXRlc3BhY2VzLCB1bWxhdXRzIGV0Yy4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBidWcgb2YgYmxvY2t0eXBlIGRyb3Bkb3duL3NlbGVjdF9tdWx0aXBsZSB3aGVyZSBmaXJzdCBpdGVtIGhhZCBhbiBlbXB0eSBsYWJlbCBpZiBvbmx5IHRoZSBwYXJhbSAidmFsdWVzIiBpcyB1c2VkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzb21lIHRlbXBsYXRlIHZhcnMgb2YgdGhlIGZyb250ZW5kIHRvIGJlIGFsc28gYWNjZXNzaWJsZSBpbiBiYWNrZW5kIChlLmcuOiAkcGFnZV9hbGlhcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICJhbGxvd19ub25lIiB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAiYWxsb3dfbm9uZSIgcGFyYW0gd2FzIGNoYW5nZWQgYWZ0ZXIgYW4gZW1wdHkgdmFsdWUgaGFzIGJlZW4gc3RvcmVkPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAic29ydGFibGVfaXRlbXMiIHRvIGNyZWF0ZSBhIHNvcnRhYmxlIG11bHRpcGxlIHNlbGVjdCBsaXN0IChzZWxlY3QgbGlzdCB3aWxsIHJlc3VsdCBpbiBhIHRhYmxlIHdpdGggY2hlY2tib3hlczsgb25seSBvcmRlciBvZiBzZWxlY3RlZCBpdGVtcyB3aWxsIGJlIHN0b3JlZCBhbmQgc2hvd2VkIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Q7IHVuc2VsZWN0ZWQgaXRlbXMgd2lsbCBiZSBhcHBlbmRlZCBpbiB0aGF0IG9yZGVyIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgdGVtcGxhdGUpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMSAoTWF5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCB0aGUgcmVvcmRlcmluZyBzdHVmZiBmb3Igbm93IChjYXVzZXMgdHJvdWJsZSBhdCB0aGlzIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSBkYiBzdHVmZiAocGFyYW1zIG9mIGNvbnRlbnQgYmxvY2tzIHRoYXQgYXJlIGRlZmluZWQgaW4gdGVtcGxhdGUgd29uXCd0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAiOyIgYW5kIHN0cmFuZ2UgaW52aXNpYmxlIGludmFsaWQgY2hhcnMpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIDIgKEFwcmlsIDIwMTAgLSBkaXNjb250aW51ZWQpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBwYXJhbSAiZGVsaW1pdGVyIjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZzwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgIlNob3cgbG9naW4gZm9ybSI8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgIm1lbWJlcnMiIGFuZCBzZWxlY3QgZm9yIGVhY2ggY2hpbGQgcGFnZSAiaW5oZXJpdCBwYWdlIGFsaWFzIiBhbGwgY2hpbGQgcGFnZXMgYWxpYXNlcyB3aWxsIHN0YXJ0IHdpdGggIm1lbWJlcnNfIjsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICJleGNsdWRlcHJlZmZpeCIgb3IgImluY2x1ZGVwcmVmZml4IiBlYXNpZXIuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlczwvcD48L2xpPiANCgkJPC91bD4NCgk8L2xpPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz5YQ29udGVudCBCRVRBIChBcHJpbCAyMDEwKTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBjb252ZXJ0ZWQgdGhlIHNpbmdsZSBmaWxlIGludG8gYSBtb2R1bGU8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgcGFyYW1zOyBzZWUgbW9kdWxlIGhlbHAgZm9yIG1vcmUgZGV0YWlsczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5TaW5nbGUgZmlsZSByZWxlYXNlcyAoZGlzY29udGludWVkKTwvc3Ryb25nPi4uLjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS40IChNYXJjaCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNsZWFudXAgY29kZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBtaW5vciBidWdmaXhlcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCByZWRpcmVjdCBwYWdlIGlmIGZldSBpcyBub3QgbG9nZ2VkIGluIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIGZldV9hY2Nlc3MgYW5kIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmV1X2FjY2VzcyAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWN0aW9uIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIHJlZGlyZWN0X3BhZ2UgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfb25seSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBzbWFydHkgbG9naWMgaW4gYmFja2VuZCAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc3R5bGUgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZpbHRlciAoZmlsdGVyaW5nIGltYWdlcyBpbiBiYWNrZW5kKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gSW1nTW9kZSAoZHJvcGRvd24gb3IgSW1hZ2VNYW5hZ2VyKSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gc21hcnR5T24gKGZvciBwcm9jZXNzaW5nIHNtYXJ0eSB2YXJzIG9mIHRoZSB0ZW1wYXRlIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4xLjMgKEFwcmlsIDIwMDkpOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQ01TbXMgMS42LiogcmVhZHkgLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgZmV1IGFjY2VzcyBvcHRpb24gLSAoTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPjEuMiAoTWFyY2ggMjAwOSk6PC9zdHJvbmc+IGluaXRpYWwgcmVsZWFzZTwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gQSBzaW5nbGUgZmlsZSBDb250ZW50Mi5pbmMucGhwIHRoYXQgbmVlZHMgdG8gYmUgcGFjZWQgaW4gbGliL2NsYXNzZXMvY29udGVudHR5cGVzLjwvcD48L2xpPg0KCQkJPGxpPjxwPi0gbGF5b3V0L29wdGlvbnMgb2YgYmFja2VuZCBwYW5lbCBjYW4gYmUgY29udHJvbGVkIGJ5IGFkZGl0aW9uYWwgc21hcnR5IHBhcmFtcyBpbiB0aGUgdGVtcGxhdGU7IGludGVncmF0ZWQgdGhlIHtjb250ZW50X2ltYWdlfSB0YWcgLSAobW9kIGJ5IE5hTik8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KPC91bD4NCjxiciAvPiAnOwokbGFuZ1sncWNhJ10gPSAnUDAtNjM2NjExNzU4LTEyOTA3NzMwNTQwMzAnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjkzMTQyNTc5LjEyLjcudXRtY3NyPWNtc21hZGVzaW1wbGUucnV8dXRtY2NuPShyZWZlcnJhbCl8dXRtY21kPXJlZmVycmFsfHV0bWNjdD0vJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTgxMTAzODA5LjEyOTA3NzMwNDcuMTI5MzE0MjU3OS4xMjkzMjEyNTYyLjEzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ1JveiZzY2Fyb247JmlhY3V0ZTtyZW4meWFjdXRlOyBvYnNhaCc7CiRsYW5nWydhZHZhbmNlZGNvbnRlbnRfdGFibmFtZSddID0gJ1JveiZzY2Fyb247JmlhY3V0ZTtyZW4mZWFjdXRlOyBuYXN0YXZlbmlhJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsICVzIG5haW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIEFkdmFuY2VkQ29udGVudCAlcyBvZGluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBha3R1YWxpem92YW4meWFjdXRlOyBuYSB2ZXJ6aXUgJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bCAlcyBuYWluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bCAlcyBvZGluJnNjYXJvbjt0YWxvdmFuJnlhY3V0ZTsuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdTdGUgc2kgaXN0JnlhY3V0ZTssIMW+ZSBjaGNldGUgbW9kdWwgb2RzdHImYWFjdXRlO25pxaU/JzsKJGxhbmdbJ25vdGljZV9kdXBsaWNhdGVjb250ZW50J10gPSAnPGVtPjxzdHJvbmc+UG96biZhYWN1dGU7bWthOjwvc3Ryb25nPiBUZW50byBibG9rIGplIHBvdcW+aXQmeWFjdXRlOyB2aWFjbiZhYWN1dGU7c29ibmUgdiAmc2Nhcm9uO2FibCZvYWN1dGU7bmUsIHpvYnJhenVqZSBzYSBWJmFhY3V0ZTttIGliYSBwcnYmeWFjdXRlOyB6IG5pY2guPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IENhbm5vdCB1c2UgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBuYW1lICYjMDM5OyVzJiMwMzk7IGFzIHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2V4cGlyZWRhdGUnXSA9ICdEJmFhY3V0ZTt0dW0ga29uY2EgbXVzJmlhY3V0ZTsgYnnFpSBuZXNrb3Imc2Nhcm9uOyZpYWN1dGU7ICBha28gZCZhYWN1dGU7dHVtIHphxI1pYXRrdSc7CiRsYW5nWyd5b3VhcmVpbnRleHQnXSA9ICdTJnVhY3V0ZTvEjWFzbiZ5YWN1dGU7IGFkcmVzJmFhY3V0ZTtyJzsKJGxhbmdbJ2RpbWVuc2lvbnMnXSA9ICdWZcS+a29zxaUgb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snc2l6ZSddID0gJ1ZlxL5rb3PFpSBvYnImYWFjdXRlO3prdSc7CiRsYW5nWydpbmhlcml0X2Zyb21fcGFyZW50J10gPSAnUHJldnppYcWlIG9kIG5hZHJpYWRlbmVqJzsKJGxhbmdbJ25vbmUnXSA9ICfFvmlhZG55JzsKJGxhbmdbJ2ludmFsaWQnXSA9ICdzIGNoeWJvdSc7CiRsYW5nWydpbnZhbGlkX2Jsb2NrdHlwZSddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gSW52YWxpZCB2YWx1ZSAmIzAzOTslcyYjMDM5OyBvZiBwYXJhbSBibG9ja190eXBlIGluIGJsb2NrICYjMDM5OyVzJiMwMzk7LjxiciAvPkNoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZS48L2VtPic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRfYmxvY2twYXJhbXMnXSA9ICc8ZW0+PHN0cm9uZz5FcnJvcjo8L3N0cm9uZz4gSW5zdWZmaWNpZW50IHBhcmFtcy4gPGJyIC8+TWlzc2luZyBwYXJhbSAmIzAzOTslcyYjMDM5OyBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsuIENoZWNrIHlvdXIgcGFnZSB0ZW1wbGF0ZS48L2VtPic7CiRsYW5nWyd5ZXMnXSA9ICcmQWFjdXRlO25vJzsKJGxhbmdbJ25vJ10gPSAnTmllJzsKJGxhbmdbJ2Zyb250ZW5kYWNjZXNzJ10gPSAnRnJvbnRlbmQgcHImaWFjdXRlO3N0dXAnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnUFJlc21lcm92YcWlIHBva2lhxL4gbmllIGplIHXFviZpYWN1dGU7dmF0ZcS+IHByaWhsJmFhY3V0ZTtzZW4meWFjdXRlOyc7CiRsYW5nWydzaG93bG9naW5mb3JtJ10gPSAnWm9icmF6acWlIGZvcm11bCZhYWN1dGU7ciBwcmlobCZhYWN1dGU7c2VuaWEnOwokbGFuZ1sncmVnaXN0ZXJlZHVzZXJzJ10gPSAnSWJhIHJlc2lzdHJvdmFuJnlhY3V0ZTsgdcW+JmlhY3V0ZTt2YXRlbGlhJzsKJGxhbmdbJ2Jsb2NrJ10gPSAnQmxvayc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnUG91xb5pxaUgZCZhYWN1dGU7dHVtIGtvbmNhJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1phxI0maWFjdXRlO25hJzsKJGxhbmdbJ2VuZGRhdGUnXSA9ICdLb27EjSZpYWN1dGU7JzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ09ic2Fob3YmeWFjdXRlOyBibG9rICc7CiRsYW5nWydzZXRwYWdlaW5hY3RpdmUnXSA9ICdOYXN0YXZpxaUgYWtvIG5lYWt0JmlhY3V0ZTt2bnUgJzsKJGxhbmdbJ2RlbGV0ZXBhZ2UnXSA9ICdPZHN0ciZhYWN1dGU7bmnFpSBzdHImYWFjdXRlO25rdSc7CiRsYW5nWyd1bmluc3RhbGxhY3Rpb24nXSA9ICdPZGluJnNjYXJvbjt0YWwmYWFjdXRlO2NpYSc7CiRsYW5nWydzZXRjb250ZW50MSddID0gJ1NldCBhbGwgUGFnZXMgdG8gdHlwZSBDb250ZW50JzsKJGxhbmdbJ3NldGNvbnRlbnQyJ10gPSAnU2V0IGFsbCBQYWdlcyB0byB0eXBlIENvbnRlbnQgYW5kIHJlbW92ZSBhZGRpdGlvbmFsIGNvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ05hc3RhdmVuaWEgdXByYXZlbiZlYWN1dGU7JzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdPSyc7CiRsYW5nWydlcnJvciddID0gJ0NoeWJhJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnT2RzdHImYWFjdXRlO25pxaUgdiZzY2Fyb247ZXRreSBzdHImYWFjdXRlO25reSB6IG9ic2Fob3YmeWFjdXRlO20gdHlwb20gQWR2YW5jZWRDb250ZW50JzsKJGxhbmdbJ2ltcG9ydHBhZ2VzJ10gPSAnU2V0IGFsbCBQYWdlcyBvZiB0eXBlIGNvbnRlbnQgdG8gdHlwZSBBZHZhbmNlZENvbnRlbnQuJzsKJGxhbmdbJ3BhZ2VzaW1wb3J0ZWQnXSA9ICdWJnNjYXJvbjtldGt5IHN0ciZhYWN1dGU7bmt5IG5hc3RhdmnFpSBha28gb2JzYWhvdiZ5YWN1dGU7IHR5cCBBZHZhbmNlZENvbnRlbnQnOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ1NrdXRvxI1uZSBjaGNldGUgbmFzdGF2ecWlIG9ic2Fob3YmZWFjdXRlOyB0eXB5IHByZSB2JnNjYXJvbjtldGt5IHN0ciZhYWN1dGU7bmt5JzsKJGxhbmdbJ3RvZ2dsZV9tZXNzYWdlJ10gPSAnU2tyecWlIHQmdWFjdXRlO3RvIGluZm9ybSZhYWN1dGU7Y2l1JzsKJGxhbmdbJ2NvbnRlbnRzZXR0aW5ncyddID0gJ1ByZWRuYXN0YXZlbiZlYWN1dGU7IG5hc3RhdmVuaWEnOwokbGFuZ1sncmVkaXJlY3RwYXJhbXMnXSA9ICdVUkwgcGFyYW1zIHRvIGFwcGVuZCB3aGVuIHJlZGlyZWN0aW5nIChwYXJhbTE9dmFsdWUxIHBhcmFtMj12YWx1ZTIgLi4uKSc7CiRsYW5nWydldmFsdWF0ZXNtYXJ0eSddID0gJ1VzZSBzbWFydHkgdG8gY3JlYXRlIHRoZSBwYXJhbXMnOwokbGFuZ1snZXJyb3JfbG9hZGluZ19tb2R1bGUnXSA9ICc8ZW0+PHN0cm9uZz5DaHliYTo8L3N0cm9uZz4gTmVtJm9jaXJjO8W+ZW0gbmFocmHFpSBtb2R1bCAmIzAzOTslcyYjMDM5Oy4gKHphZGFuJnlhY3V0ZTsgcHJlIGJsb2sgJiMwMzk7JXMmIzAzOTsgc3RyJmFhY3V0ZTtua2UgJnNjYXJvbjthYmwmb2FjdXRlO255Lik8L2VtPic7CiRsYW5nWydlcnJvcl9jb250ZW50YmxvY2tfc3VwcG9ydCddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBNb2R1bGUgJiMwMzk7JXMmIzAzOTsgZG9lcyBub3Qgc3VwcG9ydCBjb250ZW50YmxvY2tzLiAoRGVmaW5lZCBmb3IgYmxvY2sgJiMwMzk7JXMmIzAzOTsgaW4geW91ciBwYWdlIHRlbXBsYXRlLik8L2VtPic7CiRsYW5nWydzdWNjZXNzX2ltcG9ydHBhZ2VzJ10gPSAnQWxsIHBhZ2VzIG9mIHR5cGUgJXMgc3VjY2VzZnVsbHkgY2hhbmdlZCB0byAlcyc7CiRsYW5nWydzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zJ10gPSAnU2hvdyBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyB0YWInOwokbGFuZ1snZGlzcGxheV9zZXR0aW5ncyddID0gJyVzIGRpc3BsYXkgc2V0dGluZ3MnOwokbGFuZ1snc2F2ZV9jb2xsYXBzZV9zdGF0dXMnXSA9ICdTYXZlIGNvbGxwYXNlIHN0YXR1cyBvZiAlcyc7CiRsYW5nWydjb250ZW50X2Jsb2NrcyddID0gJ2NvbnRlbnQgYmxvY2tzJzsKJGxhbmdbJ2Jsb2NrX21lc3NhZ2UnXSA9ICdjb250ZW50IGJsb2NrIG1lc3NhZ2UnOwokbGFuZ1snYmxvY2tfZ3JvdXBzJ10gPSAnYmxvY2sgZ3JvdXBzJzsKJGxhbmdbJ2NvbGxhcHNlX2RlZmF1bHQnXSA9ICdDb2xsYXBzZSAlcyBieSBkZWZhdWx0JzsKJGxhbmdbJ3Blcl9wYWdlJ10gPSAncGVyIHBhZ2UnOwokbGFuZ1sncGVyX3RlbXBsYXRlJ10gPSAncGVyIHRlbXBsYXRlJzsKJGxhbmdbJ2JvdGgxJ10gPSAndGVtcGxhdGUgT1IgcGFnZSAnOwokbGFuZ1snYm90aDInXSA9ICd0ZW1wbGF0ZSBBTkQgcGFnZSc7CiRsYW5nWydjb250ZW50J10gPSAnQ29udGVudCc7CiRsYW5nWydjb250ZW50MiddID0gJ0FkdmFuY2VkIENvbnRlbnQnOwokbGFuZ1sncHJlZnMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydtdWx0aV9pbnB1dCddID0gJ011bHRpIElucHV0cyc7CiRsYW5nWydtdWx0aV9pbnB1dF90cGwnXSA9ICdNdWx0aSBJbnB1dCBUZW1wbGF0ZXMnOwokbGFuZ1snYWRkX211bHRpX2lucHV0J10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXRfdHBsJ10gPSAnQWRkIG5ldyBtdWx0aSBpbnB1dCB0ZW1wbGF0ZSc7CiRsYW5nWydpbnB1dF9pZCddID0gJ0lucHV0IElEJzsKJGxhbmdbJ2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyc7CiRsYW5nWyd0cGxfbmFtZSddID0gJ1RlbXBsYXRlIG5hbWUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX2lucHV0X2ZpZWxkcyddID0gJ0lucHV0IGZpZWxkcyBpcyBhIHJlcXVpcmVkIGZpZWxkIGFuZCBtYXkgbm90IGJlIGVtcHR5Lic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZCddID0gJ05vIGlucHV0IGlkIGdpdmVuIG9yIGlucHV0IGlkIGFscmVhZHkgZXhpc3RzLic7CiRsYW5nWydlcnJvcl9pbnB1dF9pZF9leGlzdHMnXSA9ICdJbnB1dCBJRCBpcyBhbHJlYWR5IGluIHVzZS4gQ2hvb3NlIGEgZGlmZmVyZW50IG9uZS4gKG11c3QgYmUgdW5pcXVlKSc7CiRsYW5nWydtdWx0aV9pbnB1dF9hZGRlZCddID0gJ011bHRpIElucHV0IGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgZGVsZXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9hZGRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIGFkZGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF90cGxfdXBkYXRlZCddID0gJ011bHRpIElucHV0IHRlbXBsYXRlIHVwZGF0ZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF9kZWxldGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgZGVsZXRlZC4nOwokbGFuZ1snZGVsZXRlX3NlbGVjdGVkJ10gPSAnT2RzdHImYWFjdXRlO25pxaUgdnlicmFuJmVhY3V0ZTsgcG9sb8W+a3knOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdDaGNldGUgc2t1dG/EjW5lIG9kc3RyJmFhY3V0ZTtuacWlIHBvbG/Fvmt1Pyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ0NoY2V0ZSAgc2t1dG/EjW5lIG9kc3RyJmFhY3V0ZTtuacWlIHZ5YnJhbiZlYWN1dGU7IHBvbG/Fvmt5Lic7CiRsYW5nWyd1c2VfY29udGVudHR5cGUnXSA9ICdQb3XFvmnFpSBvYnNhaG92JnlhY3V0ZTsgdHlwJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+WW91IGNhbiBldmVuIHVzZSBzbWFydHkgbG9naWMgaW4gcGFyYW1ldGVyIHZhbHVlcy4gVGhhdCBtZWFucyB5b3UgY2FuIHVzZSB0aGUgDQpyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgDQpjb250ZW50IGJsb2NrIGFzIHBhcmFtZXRlciB2YWx1ZSB0byBjcmVhdGUgZHluYW1pYyB2YWx1ZXMuPC9wPg0KPGgzPkhvdyBpcyBpdCB1c2VkPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEZvciBzb21lIHJlYXNvbiB0aGlzIHBhcmFtIGRvZXMgbm90IHdvcmsgYXQgdGhlIG1vbWVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBdmFuY2VkQ29udGVudH0uIFVzZSA8YnIgLz48Y29kZT57Y2FwdHVyZSBhc3NpZ249JnF1b3Q7Zm9vJnF1b3Q7fXtBZHZhbmNlZENvbnRlbnR9ey9jYXB0dXJlfTwvY29kZT4gPGJyIC8+aW5zdGVhZC48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPkFkdmFuY2VkIHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190eXBlPC90dD4gKHRleHQsY2hlY2tib3gsZHJvcGRvd24sc2VsZWN0X211bHRpcGxlLGRhdGUsbXVsdGlfaW5wdXQpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnBhZ2VfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIHRhYiBpbiB3aGljaCB0aGUgY29udGVudCBibG9jayBpcyBkaXNwbGF5ZWQgaW4gdGhlIGJhY2tlbmQuPGJyIC8+DQoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAmcXVvdDttYWluJnF1b3Q7ICggPSBUYWIgJnF1b3Q7TWFpbiBNZW51JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbnMmcXVvdDspLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvbiYjMDM5O3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwIGlkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIHNob3dzIHRoZSBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+DQoJCQkJSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJsb2NrcyB3aXRoIGxpbWl0ZWQgZmV1X2FjY2VzcyBhbmQgZmV1X2FjdGlvbiBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBmaXJzdCBibG9ja3MgbG9naW4gZm9ybSB3aWxsIGJlIHNob3duIGFuZCBhbGwgb3RoZXIgYmxvY2tzIHdpbGwganVzdCBiZSBlbXB0eS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICZxdW90O2RlZmF1bHQmcXVvdDsgd2lsbCBiZSB1c2VkLiA8YnIgLz5JZiBzZXQgdG8gdHJ1ZSBhbmQgYmxvY2sgaXMgb2YgdHlwZSBpbWFnZS9maWxlIHRoZSBvcHRpb24gJnF1b3Q7bm9uZSZxdW90OyAobW9kZT0mcXVvdDtkcm9wZG93biZxdW90Oykgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9JnF1b3Q7ZmlsZXBpY2tlciZxdW90Oykgd2lsbCBiZSBkaXNwbGF5ZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPg0KCQkJCUlmIHNldCB0byB0cnVlIGFueSBnaXZlbiB2YWx1ZSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGUgc21hcnR5IGVuZ2luZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6IDwvc3Ryb25nPiBDb25zaWRlciB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtjaGVja2JveCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJY2hlY2tzL3VuY2hlY2tzIHRoZSBjaGVja2JveCBieSBkZWZhdWx0IHdoZW4gYWRkaW5nIGEgcGFnZTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvJiMwMzk7Y2xvY2sgd2lsbCBiZSB1c2VkPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kYXRlX2Zvcm1hdDwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhlIHN0cmZ0aW1lIGRhdGUgZm9ybWF0IHRvIHNob3cgaW4gZnJvbnRlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PiAoY3N2IG9mIGlucHV0IGlkcyB5b3UgY3JlYXRlZCBpbiB0aGUgYmFja2VuZCkgDQoJCTxiciAvPjxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cyBvZiBvbmUgbXVsdGlfaW5wdXQgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLT4mcXVvdDsNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPldoYXQgaXMgYSBtdWx0aV9pbnB1dCBmb3I/PC9zdHJvbmc+PC9wPg0KCQk8cD5BIG11bHRpX2lucHV0IGJsb2NrIGlzIGEgY29udGVudCBibG9jayB0aGF0IGNvbnNpc3RzIG9mIGRpZmZlcmVudCBpbnB1dCBmaWVsZHMuIDxiciAvPg0KCQlZb3UgY2FuIGRlZmluZSB0aGVtIGluIHRoZSBtb2R1bGUgYWRtaW5pc3RyYXRpb24gdXNpbmcgdGhlIHNhbWUgc3ludGF4IHlvdSB1c2UgaW4gYSB0ZW1wbGF0ZSB3aGVuIGRlZmluaW5nIGEgY29udGVudCBibG9jay48YnIgLz4NCgkJTXVsdGkgaW5wdXRzIGNhbiBiZSB1c2VkIGlmIHlvdSB3YW50IHRvIHN0b3JlIGRpZmZlcmVudCB2YWx1ZXMgaW4gb25lIGNvbnRlbnQgYmxvY2sgYW5kIHByb3ZpZGUgZGlmZmVyZW50IGlucHV0IHR5cGVzIGZvciBlYWNoIHZhbHVlcy48YnIgLz4NCgkJVGhpcyBjYW4gYmUgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBkcm9wZG93biB0byBzZWxlY3QgYSBtb2R1bGUgdG8gYmUgc2hvd24gaW4gZnJvbnRlbmQgYW5kIHRleHQgaW5wdXQgdG8gZGVmaW5lIHRoZSBtb2R1bGUgcGFyYW1ldGVycy48YnIgLz4NCgkJRXhhbXBsZSBmb3IgYSBtdWx0aV9pbnB1dCBpbiBwYWdlIHRlbXBsYXRlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5FeGFtcGxlIGZvciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7OjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBlZGl0IGEgcGFnZT88L3A+DQoJCTxwPkl0IHdpbGwgc2hvdyB5b3UgYSBmaWVsZHNldCB3aXRoIGxlZ2VuZCAmcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7IGZvdXIgdGltZXMuPGJyIC8+DQoJCVRoYXQgbWVhbnMgeW91IHNlZSBmb3VyIGxpbmVzIHdpdGggdHdvIGlucHV0IGZpZWxkcy4gQSBkcm9wZG93biBhbmQgYSB0ZXh0IGlucHV0LjwvcD4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBzYXZlIGEgcGFnZT88L3A+DQoJCTxwPlRoZSBtb2R1bGUgc3RvcmVzIHRoZSB2YWx1ZXMgYXMgb25lIHNpbmdsZSBjb250ZW50IHByb3BlcnR5IChha2EgY29udGVudGJsb2NrKSBhbmQgc2VwYXJhdGVzIHRoZSBpbnB1dHMgYnkgYSBnaXZlbiBkZWxpbWl0ZXIuPGJyIC8+DQoJCUxldCYjMDM5O3MgYXNzdW1lIHlvdSBzZWxlY3QgdGhlIE5ld3MgbW9kdWxlIGZvdXIgdGltZXMgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIHBhcmFtcyBsaWtlIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzEmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzImcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzMmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzQmcXVvdDsNCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+SW4geW91ciBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gZXhwbG9kZSB0aGUgY29udGVudCBieSB0aGUgZGVsaW1pdGVycyBhbmQgY2FsbCB0aGUgc2VsZWN0ZWQgbW9kdWxlcy48L3A+DQoJCTxwPkZ1bGwgRXhhbXBsZTo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQl7KiBkZWZpbmUgdGhlIGNvbnRlbnQgYmxvY2sgKn0NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bXlfbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDtNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUmcXVvdDsgYXNzaWduPSZxdW90O21vZHVsZXMmcXVvdDt9DQoJCQ0KCQl7KiBleHBsb2RlIGJsb2NrIGNvbnRlbnQgaW4gYW4gYXJyYXkgdG8gZ2V0IHRoZSBpbnB1dCBncm91cHMgKn0NCgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZX0NCgkJCQkNCgkJCQl7aWYkbW9kdWxlX2l0ZW1zWzBdICE9ICYjMDM5OyYjMDM5O30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsgJiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzFdfGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJe2Vsc2V9DQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OiYjMDM5O2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90OyYjMDM5O3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JiMwMzk7JnF1b3Q7JiMwMzk7fGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJey9pZn0NCgkJCQkJDQoJCQkJey9pZn0NCgkJCQkNCgkJCXsvaWZ9DQoJCQ0KCQl7L2ZvcmVhY2h9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJPC9saT4NCjwvdWw+DQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCgk8bGk+VGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvIj5odHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLzwvYT48L2xpPg0KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjwvdWw+DQo8YnIgLz4NCjxwPkZlZWwgZnJlZSByZXBvcnQgYW55IGtpbmQgb2YgZmVlZGJhY2suPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD4NCglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4NCglUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCw8YnIgLz4NCglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZjxiciAvPg0KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4NCglTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPGJyIC8+DQoJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8YnIgLz4NCglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPg0KCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPGJyIC8+DQoJT3IgcmVhZCBpdCBvbmxpbmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMPC9hPjxiciAvPg0KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KPC9wPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNyAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOSsgKG5lZWRzIENNU21zIDEuOSBtaW5pbXVtIG5vdyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBzdXBwb3J0IG9mIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IGJ1Z2ZpeGVzIGZvciBDTVNtcyAxLjk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIFJlbW92ZWQgZmlsZSBwaWNrZXIgKGFuZCBhc3NvY2lhdGVkIGJsb2NrX3R5cGVzIGltYWdlL2ZpbGUpIC0gdXNlIEdCRmlsZVBpY2tlciBpbnN0ZWFkLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI5MiAobWVtb3J5IGlzc3VlKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTEgKGltYWdlIHBhdGhzIG5vdCBzdG9yZWQgJiMwMzk7Y29ycmVjdGx5JiMwMzk7KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJnF1b3Q7IG9wZW4gYW4gYWR2YW5jZWQgY29udGVudCBwYWdlIGFuZCBtdWx0aXBsZSBjb250ZW50IGJsb2NrcyBvZiBzYW1lIG5hbWUgd2VyZSB1c2VkIGluIHRlbXBsYXRlLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVsZXRlJnF1b3Q7IHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtjcmVhdGVfZGlycyZxdW90OyB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICZxdW90O25vdGUmcXVvdDsgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAmcXVvdDt0eXBlJnF1b3Q7IHRvICZxdW90O2Jsb2NrX3R5cGUmcXVvdDsgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICZxdW90O29wdGlvbnMmcXVvdDsgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzaG93X2Nsb2NrJnF1b3Q7IHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGZyb250ZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJ1bGsgZnVuY3Rpb24gdG8gc2V0IGFsbCBwYWdlcyB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuNCAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICZxdW90O2FsbG93X25vbmUmcXVvdDsgb2YgY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlIHdhcyBub3Qgc2hvd24gd2hlbiB0ZW1wbGF0ZSBoYXMgYmVlbiBlZGl0ZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnJlYWRjdW1icyB0byBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcmF3dXJsZW5jb2RlIGluIHNyYyBhdHRyaWJzIHRvIGRpc3BsYXkgaW1hZ2VzIHdpdGggd2VpcmQgZmlsZW5hbWVzLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPm1pc2NlbGxhbmVvdXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgYWpheCBmdW5jdGlvbnMgdG8gcmV0dXJuIHhtbCB2YWx1ZXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMyAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJPHVsPg0KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X2ltYWdlfTwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgk8L3VsPg0KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGNoYW5naW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgY2hhbmdpbmcgdGVtcGxhdGUgY2F1c2VkIGZhdGFsIGVycm9yczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlLWFkZGVkIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gdG8gdG9nZ2xlIGNvbnRlbnQgYmxvY2tzIGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYmxvY2sgaWRzIHdpbGwgYmUgY29udmVydGVkIGZyb20gYmxvY2sgbmFtZSB1c2luZyBjb3JlIGZ1bmN0aW9uIG11bmdlX3N0cmluZ190b191cmwgKHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJzLCB3aGl0ZXNwYWNlcywgdW1sYXV0cyBldGMuKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gJnF1b3Q7dmFsdWVzJnF1b3Q7IGlzIHVzZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNvbWUgdGVtcGxhdGUgdmFycyBvZiB0aGUgZnJvbnRlbmQgdG8gYmUgYWxzbyBhY2Nlc3NpYmxlIGluIGJhY2tlbmQgKGUuZy46ICRwYWdlX2FsaWFzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c29ydGFibGVfaXRlbXMmcXVvdDsgdG8gY3JlYXRlIGEgc29ydGFibGUgbXVsdGlwbGUgc2VsZWN0IGxpc3QgKHNlbGVjdCBsaXN0IHdpbGwgcmVzdWx0IGluIGEgdGFibGUgd2l0aCBjaGVja2JveGVzOyBvbmx5IG9yZGVyIG9mIHNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBzaG93ZWQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdDsgdW5zZWxlY3RlZCBpdGVtcyB3aWxsIGJlIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgcGxhY2VkIGluIHRoZSB0ZW1wbGF0ZSk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4xIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIGRiIHN0dWZmIChwYXJhbXMgb2YgY29udGVudCBibG9ja3MgdGhhdCBhcmUgZGVmaW5lZCBpbiB0ZW1wbGF0ZSB3b24mIzAzOTt0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAmcXVvdDs7JnF1b3Q7IGFuZCBzdHJhbmdlIGludmlzaWJsZSBpbnZhbGlkIGNoYXJzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAyIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gJnF1b3Q7ZGVsaW1pdGVyJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAmcXVvdDtTaG93IGxvZ2luIGZvcm0mcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgJnF1b3Q7bWVtYmVycyZxdW90OyBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgJnF1b3Q7aW5oZXJpdCBwYWdlIGFsaWFzJnF1b3Q7IGFsbCBjaGlsZCBwYWdlcyBhbGlhc2VzIHdpbGwgc3RhcnQgd2l0aCAmcXVvdDttZW1iZXJzXyZxdW90OzsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICZxdW90O2V4Y2x1ZGVwcmVmZml4JnF1b3Q7IG9yICZxdW90O2luY2x1ZGVwcmVmZml4JnF1b3Q7IGVhc2llci48L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IA0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlNpbmdsZSBmaWxlIHJlbGVhc2VzIChkaXNjb250aW51ZWQpPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjQgKE1hcmNoIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19vbmx5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmlsdGVyIChmaWx0ZXJpbmcgaW1hZ2VzIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS4yIChNYXJjaCAyMDA5KTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPGJyIC8+JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTYwODkyNjA0MC0xMjcxMTQ0MTc1NzgzJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNzg2Mzg1OTA0LjEyNzExNTc5OTcuMTI5NzE2Nzc4MS4xMjk3MTcwODU2LjE2Nic7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEyOTcxNzA4NTYuMTY2LjE1MS51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9ZGV2LmNtc21hZGVzaW1wbGUub3JnfHV0bWNjdD0vfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzLjEuMTAuMTI5NzE3MDg1Nic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sl_SI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ0FkdmFuY2VkQ29udGVudCddID0gJ05hcHJlZG5lIFZzZWJpbmUnOwokbGFuZ1snYWR2YW5jZWRjb250ZW50X3RhYm5hbWUnXSA9ICdOYXByZWRuZSBOYXN0YXZpdHZlJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSBOYXByZWRuZVZzZWJpbmUgJXMgamUgaW5zdGFsaXJhbic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBOYXByZWRuZVZzZWJpbmUgJXMgemJyaXNhbic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgdXBncmFkZWQgdG8gJXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bGUgQWR2YW5jZWRDb250ZW50ICVzIGluc3RhbGxlZC4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsZSBBZHZhbmNlZENvbnRlbnQgJXMgdW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2NvbmZpcm11bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdW5pbnN0YWxsIHRoZSBtb2R1bGUgQWR2YW5jZWRDb250ZW50Pyc7CiRsYW5nWydub3RpY2VfZHVwbGljYXRlY29udGVudCddID0gJzxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVGhpcyBibG9jayBpcyB1c2VkIG11bHRpcGxlIHRpbWVzIGluIHRlbXBsYXRlLiBZb3Ugb25seSBzZWUgdGhlIGZpcnN0IGJsb2NrIGhlcmUuPC9lbT4nOwokbGFuZ1snZXJyb3JfYmFzaWNhdHRyaWInXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IENhbm5vdCB1c2UgYmFzaWMgY29udGVudCBwcm9wZXJ0eSBuYW1lICYjMDM5OyVzJiMwMzk7IGFzIHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LiA8YnIgLz5UaGlzIGJsb2NrIGlzIGRpc2FibGVkLiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUgYW5kIGNob3NlIGEgZGlmZmVyZW50IHZhbHVlIG9mIHBhcmFtICYjMDM5O2Jsb2NrJiMwMzk7LjwvZW0+JzsKJGxhbmdbJ2Vycm9yX2V4cGlyZWRhdGUnXSA9ICdFbmQgZGF0ZSBtdXN0IGJlIGxhdGVyIHRoYW4gc3RhcnQgZGF0ZS4nOwokbGFuZ1sneW91YXJlaW50ZXh0J10gPSAnQ3VycmVudCBkaXJlY3RvcnknOwokbGFuZ1snZGltZW5zaW9ucyddID0gJ0ltYWdlc2l6ZSc7CiRsYW5nWydzaXplJ10gPSAnRmlsZXNpemUnOwokbGFuZ1snaW5oZXJpdF9mcm9tX3BhcmVudCddID0gJ0luaGVyaXQgZnJvbSBwYXJlbnQnOwokbGFuZ1snbm9uZSddID0gJ25vbmUnOwokbGFuZ1snaW52YWxpZCddID0gJ2ludmFsaWQnOwokbGFuZ1snaW52YWxpZF9ibG9ja3R5cGUnXSA9ICc8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEludmFsaWQgdmFsdWUgJiMwMzk7JXMmIzAzOTsgb2YgcGFyYW0gYmxvY2tfdHlwZSBpbiBibG9jayAmIzAzOTslcyYjMDM5Oy48YnIgLz5DaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50X2Jsb2NrcGFyYW1zJ10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IEluc3VmZmljaWVudCBwYXJhbXMuIDxiciAvPk1pc3NpbmcgcGFyYW0gJiMwMzk7JXMmIzAzOTsgZm9yIGJsb2NrICYjMDM5OyVzJiMwMzk7LiBDaGVjayB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9lbT4nOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZnJvbnRlbmRhY2Nlc3MnXSA9ICdGcm9udGVuZCBhY2Nlc3MnOwokbGFuZ1sncmVkaXJlY3RwYWdlJ10gPSAnUmVkaXJlY3QgUGFnZSBpZiBubyBhY2Nlc3MnOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ1Nob3cgbG9naW4gZm9ybSc7CiRsYW5nWydyZWdpc3RlcmVkdXNlcnMnXSA9ICdSZWdpc3RlcmVkIHVzZXJzIG9ubHknOwokbGFuZ1snYmxvY2snXSA9ICdCbG9jayc7CiRsYW5nWyd1c2VleHBpcmVkYXRlJ10gPSAnVXNlIGV4cGlyZSBkYXRlJzsKJGxhbmdbJ3N0YXJ0ZGF0ZSddID0gJ1N0YXJ0IERhdGUnOwokbGFuZ1snZW5kZGF0ZSddID0gJ0VuZCBEYXRlJzsKJGxhbmdbJ2Jsb2NrY29udGVudCddID0gJ0Jsb2NrIENvbnRlbnQnOwokbGFuZ1snc2V0cGFnZWluYWN0aXZlJ10gPSAnU2V0IFBhZ2UgdG8gSW5hY3RpdmUnOwokbGFuZ1snZGVsZXRlcGFnZSddID0gJ0RlbGV0ZSBQYWdlJzsKJGxhbmdbJ3VuaW5zdGFsbGFjdGlvbiddID0gJ1VuaW5zdGFsbCBhY3Rpb24nOwokbGFuZ1snc2V0Y29udGVudDEnXSA9ICdTZXQgYWxsIFBhZ2VzIG9mIEFkdmFuY2VkQ29udGVudCBiYWNrIHRvIHR5cGUgQ29udGVudCc7CiRsYW5nWydzZXRjb250ZW50MiddID0gJ1NldCBhbGwgUGFnZXMgb2YgQWR2YW5jZWRDb250ZW50IGJhY2sgdG8gdHlwZSBDb250ZW50IGFuZCByZW1vdmUgYWRkaXRpb25hbCBjb250ZW50IGJsb2Nrcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQcmVmZXJlbmNlcyB1cGRhdGVkJzsKJGxhbmdbJ3N1Y2Nlc3MnXSA9ICdPayc7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yJzsKJGxhbmdbJ2RlbGV0ZXBhZ2VzJ10gPSAnRGVsZXRlIGFsbCBwYWdlcyBvZiB0eXBlIEFkdmFuY2VkQ29udGVudCc7CiRsYW5nWydpbXBvcnRwYWdlcyddID0gJ1NldCBhbGwgUGFnZXMgb2YgdHlwZSAlcyB0byB0eXBlICVzLic7CiRsYW5nWydwYWdlc2ltcG9ydGVkJ10gPSAnQWxsIGNvbnRlbnQgcGFnZXMgc2V0IHRvIEFkdmFuY2VkQ29udGVudC4nOwokbGFuZ1snY29uZmlybWltcG9ydCddID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBjaGFuZ2UgdGhlIGNvbnRlbnQgdHlwZSBvZiBhbGwgY29udGVudCBwYWdlcz8nOwokbGFuZ1sndG9nZ2xlX21lc3NhZ2UnXSA9ICdIaWRlIHRoaXMgbWVzc2FnZSc7CiRsYW5nWydjb250ZW50c2V0dGluZ3MnXSA9ICdEZWZhdWx0IEFkdmFuY2VkQ29udGVudCBzZXR0aW5ncyc7CiRsYW5nWydyZWRpcmVjdHBhcmFtcyddID0gJ1VSTCBwYXJhbXMgdG8gYXBwZW5kIHdoZW4gcmVkaXJlY3RpbmcnOwokbGFuZ1snZXZhbHVhdGVzbWFydHknXSA9ICdVc2Ugc21hcnR5IHRvIHByb2Nlc3MgdGhlIHBhcmFtcyc7CiRsYW5nWydlcnJvcl9sb2FkaW5nX21vZHVsZSddID0gJzxlbT48c3Ryb25nPkVycm9yOjwvc3Ryb25nPiBDb3VsZCBub3QgbG9hZCBtb2R1bGUgJiMwMzk7JXMmIzAzOTsuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ2Vycm9yX2NvbnRlbnRibG9ja19zdXBwb3J0J10gPSAnPGVtPjxzdHJvbmc+RXJyb3I6PC9zdHJvbmc+IE1vZHVsZSAmIzAzOTslcyYjMDM5OyBkb2VzIG5vdCBzdXBwb3J0IGNvbnRlbnRibG9ja3MuIChEZWZpbmVkIGZvciBibG9jayAmIzAzOTslcyYjMDM5OyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUuKTwvZW0+JzsKJGxhbmdbJ3N1Y2Nlc3NfaW1wb3J0cGFnZXMnXSA9ICdBbGwgcGFnZXMgb2YgdHlwZSAlcyBzdWNjZXNmdWxseSBjaGFuZ2VkIHRvICVzJzsKJGxhbmdbJ3Nob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnMnXSA9ICdTaG93IEFkdmFuY2VkQ29udGVudCBvcHRpb25zIHRhYic7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnJXMgZGlzcGxheSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlX2NvbGxhcHNlX3N0YXR1cyddID0gJ1NhdmUgY29sbHBhc2Ugc3RhdHVzIG9mICVzJzsKJGxhbmdbJ2NvbnRlbnRfYmxvY2tzJ10gPSAnY29udGVudCBibG9ja3MnOwokbGFuZ1snYmxvY2tfbWVzc2FnZSddID0gJ2NvbnRlbnQgYmxvY2sgbWVzc2FnZSc7CiRsYW5nWydibG9ja19ncm91cHMnXSA9ICdibG9jayBncm91cHMnOwokbGFuZ1snY29sbGFwc2VfZGVmYXVsdCddID0gJ0NvbGxhcHNlICVzIGJ5IGRlZmF1bHQnOwokbGFuZ1sncGVyX3BhZ2UnXSA9ICdwZXIgcGFnZSc7CiRsYW5nWydwZXJfdGVtcGxhdGUnXSA9ICdwZXIgdGVtcGxhdGUnOwokbGFuZ1snYm90aDEnXSA9ICd0ZW1wbGF0ZSBPUiBwYWdlICc7CiRsYW5nWydib3RoMiddID0gJ3RlbXBsYXRlIEFORCBwYWdlJzsKJGxhbmdbJ2NvbnRlbnQnXSA9ICdDb250ZW50JzsKJGxhbmdbJ2NvbnRlbnQyJ10gPSAnQWR2YW5jZWQgQ29udGVudCc7CiRsYW5nWydwcmVmcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ211bHRpX2lucHV0J10gPSAnTXVsdGkgSW5wdXRzJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbCddID0gJ011bHRpIElucHV0IFRlbXBsYXRlcyc7CiRsYW5nWydhZGRfbXVsdGlfaW5wdXQnXSA9ICdBZGQgbmV3IG11bHRpIGlucHV0JzsKJGxhbmdbJ2FkZF9tdWx0aV9pbnB1dF90cGwnXSA9ICdBZGQgbmV3IG11bHRpIGlucHV0IHRlbXBsYXRlJzsKJGxhbmdbJ2lucHV0X2lkJ10gPSAnSW5wdXQgSUQnOwokbGFuZ1snaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzJzsKJGxhbmdbJ3RwbF9uYW1lJ10gPSAnVGVtcGxhdGUgbmFtZSc7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHknOwokbGFuZ1snZXJyb3JfaW5wdXRfZmllbGRzJ10gPSAnSW5wdXQgZmllbGRzIGlzIGEgcmVxdWlyZWQgZmllbGQgYW5kIG1heSBub3QgYmUgZW1wdHkuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkJ10gPSAnTm8gaW5wdXQgaWQgZ2l2ZW4gb3IgaW5wdXQgaWQgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2lucHV0X2lkX2V4aXN0cyddID0gJ0lucHV0IElEIGlzIGFscmVhZHkgaW4gdXNlLiBDaG9vc2UgYSBkaWZmZXJlbnQgb25lLiAobXVzdCBiZSB1bmlxdWUpJzsKJGxhbmdbJ211bHRpX2lucHV0X2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCBkZWxldGVkLic7CiRsYW5nWydtdWx0aV9pbnB1dF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2FkZGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgYWRkZWQuJzsKJGxhbmdbJ211bHRpX2lucHV0X3RwbF91cGRhdGVkJ10gPSAnTXVsdGkgSW5wdXQgdGVtcGxhdGUgdXBkYXRlZC4nOwokbGFuZ1snbXVsdGlfaW5wdXRfdHBsX2RlbGV0ZWQnXSA9ICdNdWx0aSBJbnB1dCB0ZW1wbGF0ZSBkZWxldGVkLic7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICdEZWxldGUgc2VsZWN0ZWQgaXRlbXMnOwokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgZG8gZGVsZXRlIHRoaXMgaXRlbT8nOwokbGFuZ1snY29uZmlybV9kZWxldGVfc2VsZWN0ZWQnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgZG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtcz8nOwokbGFuZ1sndXNlX2NvbnRlbnR0eXBlJ10gPSAnVXNlIGNvbnRlbnR0eXBlJzsKJGxhbmdbJ2hlbHBfdHBsX3ZhcnMnXSA9ICc8cD48c3Ryb25nPlRlbXBsYXRlIHZhcnM6PC9zdHJvbmc+PC9wPg0KPHA+PHByZT48Y29kZT57JGlucHV0c308L2NvZGU+PC9wcmU+IGlzIGFuIGFycmF5IHRoYXQgY29udGFpbnMgYWxsIGRlZmluZWQgaW5wdXQgZWxlbWVudHMgb2YgdGhhdCBtdWx0aSBpbnB1dCBibG9jay48YnIgLz4NCkVhY2ggaW5wdXQgZWxlbWVudCBpcyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGFsbCBpdHMgcGFyYW1zLiA8YnIgLz4NClNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBpbmZvLjxiciAvPg0KQWRkaXRpb25hbCBwYXJhbSBpcyAmcXVvdDtpbnB1dCZxdW90OyB0aGF0IHdpbGwgcHJpbnQgb3V0IHRoZSBpbnB1dCBlbGVtZW50LjxiciAvPg0KVG8gYWNjZXNzIHRoZSBwYXJhbXMgdXNlIHRoZSBkb3Qgc3ludGF4LjxiciAvPg0KRXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0NCgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9PGJyIC8+DQp7L2ZvcmVhY2h9PC9jb2RlPjwvcHJlPic7CiRsYW5nWydoZWxwJ10gPSAnPGJyIC8+DQo8aDM+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMz4NCjxwPlRoaXMgaXMgYSBtb2RpZmljYXRpb24gb2YgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlICZxdW90O0NvbnRlbnQmcXVvdDsgb2YgQ01TbXMuPGJyIC8+DQpJdCBwcm92aWRlcyBtb3JlIGZsZXhpYmlsaXR5IGJ5IGNyZWF0aW5nIGN1c3RvbSBpbnB1dCBjb250cm9scyBpbiBiYWNrZW5kLjxiciAvPg0KVXNlcnMgY2FuIGFkZCBkcm9wZG93bnMsIG11bHRpcGxlIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgZ3JvdXAgY29udGVudCBibG9ja3MgDQppbiBzZXBhcmF0ZSBwYWdlIHRhYnMsIGJsb2NrIHRhYnMgaW5zaWRlIGEgcGFnZSB0YWIgb3IgaW4gZmllbGRzZXRzIGJ5IGp1c3QgDQp1c2luZyBhZGRpdGlvbmFsIHBhcmFtcyBpbiB0aGUgdGVtcGxhdGUgd2hlbiBjYWxsaW5nIHRoZSBjb250ZW50LjxiciAvPg0KSXQgYWxzbyBhZGRzIGFiaWxpdHkgdG8gZ3JhbnQgYWNjZXNzIG9mIHBhZ2VzIHRvIGNlcnRhaW4gdXNlcnMgb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgYW5kIGhpZGUgdGhlIGNvbnRlbnQsIHJlcGxhY2UgaXQgYnkgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIA0KRnJvbnRFbmRVc2VycyBtb2R1bGUgb3IgcmVkaXJlY3QgdG8gYSBzcGVjaWZpZWQgcGFnZSBzaG93aW5nIHRoZSBsb2dpbiBmb3JtIG9yIA0KanVzdCByZWRpcmVjdCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuPGJyIC8+DQpQYWdlIHByb3BlcnR5IG9mIEZyb250RW5kVXNlcnMgYWNjZXNzIGFuZCByZWRpcmVjdCBwYWdlIGNhbiBiZSBpbmhlcml0ZWQgYnkgDQpwYXJlbnQgcGFnZXMuPC9wPg0KPHA+WW91IGNhbiBldmVuIHVzZSBzbWFydHkgbG9naWMgaW4gcGFyYW1ldGVyIHZhbHVlcy4gVGhhdCBtZWFucyB5b3UgY2FuIHVzZSB0aGUgDQpyZXN1bHQgb2YgYSBwbHVnaW4sIGFuIHVkdCBvciBldmVuIGEgbW9kdWxlIG9yIGp1c3QgdGhlIGNvbnRlbnQgb2YgYSBnbG9iYWwgDQpjb250ZW50IGJsb2NrIGFzIHBhcmFtZXRlciB2YWx1ZSB0byBjcmVhdGUgZHluYW1pYyB2YWx1ZXMuPC9wPg0KPGgzPkhvdyBpcyBpdCB1c2VkPzwvaDM+DQo8cD5BZnRlciBpbnN0YWxsYXRpb24gdGhlIG1vZHVsZSBzZXR0aW5ncyBjYW4gYmUgZm91bmQgaW4gJnF1b3Q7RXh0ZW5zaW9ucy0+QWR2YW5jZWRDb250ZW50JnF1b3Q7LjwvcD4NCjxwPkFkZGl0aW9uYWxseSB5b3Ugd2lsbCBoYXZlIGEgbmV3IGNvbnRlbnQgdHlwZSAmcXVvdDtBZHZhbmNlZENvbnRlbnQmcXVvdDsgYXZhaWxhYmxlIA0Kd2hlbiBhZGRpbmcvZWRpdGluZyBhIHBhZ2UuPGJyIC8+DQo8cD5BZGQgdGhlIGZvbGxvd2luZyBwYXJhbXMgdG8geW91ciBjb250ZW50IHRhZyBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUsIA0KY2hhbmdlIHRoZSBjb250ZW50IHR5cGUgb2YgeW91ciBwYWdlIHRvICZxdW90O0FkdmFuY2VkQ29udGVudCZxdW90OyBhbmQgc2VlIHdoYXQgaGFwcGVucyANCmluIGJhY2tlbmQuLi48L3A+DQo8aDM+V2hhdCBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU/PC9oMz4NCjxwPmFsbCBwYXJhbXMgYXJlIG9wdGlvbmFsPC9wPg0KPHA+PHN0cm9uZz5EZWZhdWx0IHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9jazwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBbGxvd3MgeW91IHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250ZW50IGJsb2NrIHBlciBwYWdlLiBJZiBtdWx0aXBsZSBjb250ZW50IHRhZ3MgYXJlIHB1dCBvbiBhIHRlbXBsYXRlLCB0aGF0IG51bWJlciBvZiBlZGl0IGJveGVzIHdpbGwgYmUgZGlzcGxheWVkIGlmIHRoZSBwYWdlIGlzIGVkaXRlZC48YnIgLz4NCgkJCQllLmcuOiA8Y29kZT57Y29udGVudCBibG9jaz0mcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90O308L2NvZGU+PGJyIC8+DQoJCQkJTm93LCBpZiB5b3UgZWRpdCBhIHBhZ2UgdGhlcmUgd2lsbCBiYSBhIHRleHRhcmVhIGNhbGxlZCAmcXVvdDtTZWNvbmQgQ29udGVudCBibG9jayZxdW90Oy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IFRoZSBuYW1lIG9mIHRoZSBjb250ZW50IGJsb2NrIG1heSBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgYW5kIHVuZGVyc2NvcmVzIChubyB3aGl0ZXNwYWNlcywgc3BlY2lhbCBjaGFycywgdW1sYXV0cyBldGMuKS4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvcGVyIG5hbWUgKHNpbWlsYXIgdG8gdGhlIHBhZ2UgYWxpYXMpLjwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+d3lzaXd5ZzwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+SWYgc2V0IHRvIGZhbHNlLCB0aGVuIGEgd3lzaXd5ZyB3aWxsIG5ldmVyIGJlIHVzZWQgd2hpbGUgZWRpdGluZyB0aGlzIGJsb2NrLiBJZiB0cnVlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5vbmVsaW5lPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT5JZiBzZXQgdG8gdHJ1ZSwgdGhlbiBvbmx5IG9uZSBlZGl0IGxpbmUgd2lsbCBiZSBzaG93biB3aGlsZSBlZGl0aW5nIHRoaXMgYmxvY2suIElmIGZhbHNlLCB0aGVuIGl0IGFjdHMgYXMgbm9ybWFsLiBPbmx5IHdvcmtzIHdoZW4gYmxvY2sgcGFyYW1ldGVyIGlzIHVzZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmRlZmF1bHQ8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+RGVmYXVsdCBjb250ZW50IHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFnZS48L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+bGFiZWw8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+UHJvbXB0IGZvciB0aGlzIGNvbnRlbnQgYmxvY2suIFBvc3NpYmxlIHZhbHVlcyBhcmUgYW55IGV4cHJlc3Npb24uIElmIGJsYW5rLCB0aGUgdW5jb252ZXJ0ZWQgYmxvY2sgbmFtZSBpcyB1c2VkLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hc3NpZ248L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJQXNzaWducyB0aGUgY29udGVudCB0byBhIHNtYXJ0eSBwYXJhbWV0ZXIsIHdoaWNoIHlvdSBjYW4gdGhlbiB1c2UgaW4gb3RoZXIgYXJlYXMgb2YgdGhlIHBhZ2UsIG9yIHVzZSB0byB0ZXN0IHdoZXRoZXIgY29udGVudCBleGlzdHMgaW4gaXQgb3Igbm90LjxiciAvPg0KCQkJCUV4YW1wbGUgb2YgcGFzc2luZyBwYWdlIGNvbnRlbnQgdG8gYSBVc2VyIERlZmluZWQgVGFnIGFzIGEgcGFyYW1ldGVyOjxiciAvPg0KCQkJCTxjb2RlPntjb250ZW50IGFzc2lnbj1wYWdlY29udGVudH08YnIgLz4NCgkJCQl7dGFibGVfb2ZfY29udGVudHMgdGhlcGFnZWNvbnRlbnQ9JnF1b3Q7JHBhZ2Vjb250ZW50JnF1b3Q7fTwvY29kZT48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IEZvciBzb21lIHJlYXNvbiB0aGlzIHBhcmFtIGRvZXMgbm90IHdvcmsgYXQgdGhlIG1vbWVudCB3aXRoIHRoZSBtb2R1bGUgcGx1Z2luIHtBdmFuY2VkQ29udGVudH0uIFVzZSA8YnIgLz48Y29kZT57Y2FwdHVyZSBhc3NpZ249JnF1b3Q7Zm9vJnF1b3Q7fXtBZHZhbmNlZENvbnRlbnR9ey9jYXB0dXJlfTwvY29kZT4gPGJyIC8+aW5zdGVhZC48L2VtPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPkFkdmFuY2VkIHBhcmFtczo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5ibG9ja190eXBlPC90dD4gKHRleHQsY2hlY2tib3gsZHJvcGRvd24sc2VsZWN0X211bHRpcGxlLGRhdGUsbXVsdGlfaW5wdXQpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHdoYXQgY29udGVudCBjb250cm9sIHR5cGUgaXMgdXNlZCBpbiB0aGUgYmFjayBlbmQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnBhZ2VfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIHRhYiBpbiB3aGljaCB0aGUgY29udGVudCBibG9jayBpcyBkaXNwbGF5ZWQgaW4gdGhlIGJhY2tlbmQuPGJyIC8+DQoJCQkJUG9zc2libGUgdmFsdWVzIGFyZSAmcXVvdDttYWluJnF1b3Q7ICggPSBUYWIgJnF1b3Q7TWFpbiBNZW51JnF1b3Q7KSwgJnF1b3Q7b3B0aW9ucyZxdW90OyAoID0gVGFiICZxdW90O09wdGlvbnMmcXVvdDspLCBvciBhbnkgb3RoZXIgYXJiaXRyYXJ5IHZhbHVlPGJyIC8+DQoJCQkJPGVtPmUuZy4geW91IGNhbiBhZGQgYSBjaGVja2JveCB0byB0aGUgb3B0aW9ucyB0YWIgb3IgY3JlYXRlIG5ldyB0YWJzPC9lbT4uDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+YmxvY2tfdGFiPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIHRoZSBibG9ja3Mgd2l0aGluIGEgcGFnZSB0YWIgY2FuIGJlIGZ1cnRoZXIgZGl2aWRlZCBpbnRvIHRhYnMgb3IgY2FuIGJlIGdyb3VwZWQgdG9nZXRoZXIuIEFueSBleHByZXNzaW9uIGNhbiBiZSB1c2VkIGFzIGEgcG9zc2libGUgdmFsdWUuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmJsb2NrX2dyb3VwPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPldpdGggdGhpcyBwYXJhbWV0ZXIsIG11bHRpcGxlIGJsb2NrcyBjYW4gYmUgZ3JvdXBlZCBpbiBhIGZpZWxkc2V0LiBBbnkgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhIHBvc3NpYmxlIHZhbHVlLjwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5hY3RpdmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUFsbG93cyB5b3UgdG8gZGlzYWJsZSBhIGNvbnRlbnQgYmxvY2suIERpc2FibGVkIGNvbnRlbnQgYmxvY2tzIHdvbiYjMDM5O3QgYmUgc2hvd24gaW4gYmFja2VuZCBhcyB3ZWxsIGFzIGluIGZyb250ZW5kLiAob25seSB3b3JrcyB3aXRoIHtBZHZhbmNlZENvbnRlbnR9IHBsdWdpbik8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lZGl0b3JfZ3JvdXBzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBlZGl0IHRoaXMgYmxvY2suDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZWRpdG9yX3VzZXJzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCUEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdXNlciBuYW1lcyB0aGF0IGFyZSBhbGxvd2VkIHRvIGVkaXQgdGhpcyBibG9jay4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBpZiB0aGUgcGFyYW1zIDx0dD5lZGl0b3JfdXNlcnM8L3R0PiBhbmQgPHR0PmVkaXRvcl9ncm91cHM8L3R0PiBhcmUgZW1wdHkgdGhlIGJsb2NrIG1heSBiZSBlZGl0ZWQgYnkgYW55IHVzZXIgd2l0aCBzdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gZWRpdCBhIHBhZ2U8L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZmV1X2FjY2VzczwvdHQ+DQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlBIGxpc3Qgb2YgZmV1IGdyb3VwIGlkcyBzZXBhcmF0ZWQgYnkgYSBjb21tYS48YnIgLz4NCgkJCQlUaGlzIHNob3dzIHRoZSBjb250ZW50IGJsb2NrIG9ubHkgdG8gY2VydGFpbiBmZXUgZ3JvdXBzLjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmZldV9hY3Rpb248L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVNwZWNpZnkgaWYgdGhlIGxvZ2luIGZvcm0gb2YgdGhlIGZldSBtb2R1bGUgd2lsbCBiZSBzaG93biBvciBub3QuPGJyIC8+DQoJCQkJPGVtPjxzdHJvbmc+Tm90aWNlOjwvc3Ryb25nPiBUaGUgbG9naW4gZm9ybSB3aWxsIG9ubHkgYmUgc2hvd24gb25lIHRpbWUuPGJyIC8+DQoJCQkJSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJsb2NrcyB3aXRoIGxpbWl0ZWQgZmV1X2FjY2VzcyBhbmQgZmV1X2FjdGlvbiBzZXQgdG8gdHJ1ZSBvbmx5IHRoZSBmaXJzdCBibG9ja3MgbG9naW4gZm9ybSB3aWxsIGJlIHNob3duIGFuZCBhbGwgb3RoZXIgYmxvY2tzIHdpbGwganVzdCBiZSBlbXB0eS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmFsbG93X25vbmU8L3R0PiAodHJ1ZS9mYWxzZSkNCgkJPHVsPg0KCQkJPGxpPlNldCB0byB0cnVlIGlmIHRoZSB1c2VyIG1heSBlbnRlciBlbXB0eSB2YWx1ZXMuIDxiciAvPklmIHNldCB0byBmYWxzZSBhbmQgdmFsdWUgaXMgZW1wdHkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHBhcmFtICZxdW90O2RlZmF1bHQmcXVvdDsgd2lsbCBiZSB1c2VkLiA8YnIgLz5JZiBzZXQgdG8gdHJ1ZSBhbmQgYmxvY2sgaXMgb2YgdHlwZSBpbWFnZS9maWxlIHRoZSBvcHRpb24gJnF1b3Q7bm9uZSZxdW90OyAobW9kZT0mcXVvdDtkcm9wZG93biZxdW90Oykgb3IgYSBidXR0b24gdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGUvaW1hZ2UgdmFsdWUgKG1vZGU9JnF1b3Q7ZmlsZXBpY2tlciZxdW90Oykgd2lsbCBiZSBkaXNwbGF5ZWQuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnNtYXJ0eTwvdHQ+ICh0cnVlL2ZhbHNlKQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVHVybiBzbWFydHkgcHJvY2Vzc2luZyBvZiB2YWx1ZXMgb24vb2ZmLjxiciAvPg0KCQkJCUlmIHNldCB0byB0cnVlIGFueSBnaXZlbiB2YWx1ZSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGUgc21hcnR5IGVuZ2luZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6IDwvc3Ryb25nPiBDb25zaWRlciB0aGF0IHlvdSBjYW5ub3QgdXNlIHRoZSBkZWZhdWx0IHNtYXJ0eSBkZWxpbWl0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlLiBUaGlzIHdpbGwgY2F1c2Ugc21hcnR5IGVycm9ycyBpbiBmcm9udGVuZC48YnIgLz4NCgkJCQlTbyB5b3UgbmVlZCB0byB1c2UgOjo6IGFzIGRlbGltaXRlciBpbnN0ZWFkLjxiciAvPjwvZW0+DQoJCQkJRS5nLjogPGNvZGU+e2NvbnRlbnQgYmxvY2s9JnF1b3Q7Q2F0ZWdvcmllcyZxdW90OyBsYWJlbD0mcXVvdDtTZWxlY3QgYSBjYXRlZ29yeSZxdW90OyBibG9ja190eXBlPSZxdW90O2Ryb3Bkb3duJnF1b3Q7IGl0ZW1zPSZxdW90Ozo6Omdsb2JhbF9jb250ZW50IG5hbWU9JiMwMzk7Y2F0ZWdvcnlsaXN0JiMwMzk7Ojo6JnF1b3Q7IHNtYXJ0eT0mcXVvdDt0cnVlJnF1b3Q7fTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZXNjcmlwdGlvbjwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+QWxsb3dzIHlvdSB0byBhZGQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiB0byB0aGF0IGJsb2NrIGZvciB5b3VyIGVkaXRvcnMuPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmNvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZS9mYWxzZSB0byBkaXNwbGF5IGJsb2NrIGluIGJhY2tlbmQgaW4gY29sbGFwc2VkL2V4cGFuZGVkIG1vZGUgYnkgZGVmYXVsdC48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IHdpbGwgYmUgYWx3YXlzIGZhbHNlIGlmIG5vX2NvbGxhcHNlPXRydWUgaXMgdXNlZC48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0Pm5vX2NvbGxhcHNlPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBmb2xkaW5nIG9mIGJsb2Nrcy48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IGlmIHNldCB0byB0cnVlIHBhcmFtIGNvbGxhcHNlIGlzIGFsd2F5cyBmYWxzZS48L2VtPjxiciAvPg0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnJlcXVpcmVkPC90dD4gKHRydWUvZmFsc2UpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlTZXQgdG8gdHJ1ZSBpZiB0aGlzIGJsb2NrIG1heSBub3QgYmUgZW1wdHkuPGJyIC8+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtjaGVja2JveCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWZhdWx0PC90dD4gKHRydWUvZmFsc2UpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJY2hlY2tzL3VuY2hlY2tzIHRoZSBjaGVja2JveCBieSBkZWZhdWx0IHdoZW4gYWRkaW5nIGEgcGFnZTxiciAvPg0KCQkJCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gVXNlICZxdW90OzEmcXVvdDsgZm9yIGNoZWNrZWQgYW5kICZxdW90OzAmcXVvdDsgZm9yIHVuY2hlY2tlZCBieSBkZWZhdWx0PGJyIC8+PC9lbT4NCgkJCQlFLmcuIDxjb2RlPntjb250ZW50IGJsb2NrX3R5cGU9JnF1b3Q7Y2hlY2tib3gmcXVvdDsgZGVmYXVsdD0xfTwvY29kZT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQo8L3VsPg0KPHA+PHN0cm9uZz5QYXJhbXMgb2YgYmxvY2t0eXBlICZxdW90O2Ryb3Bkb3duJnF1b3Q7LyZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pdGVtczwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT5JdGVtIGxhYmVsKHMpIG9mIHRoZSBmaWVsZChzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+dmFsdWVzPC90dD4gKHN0cmluZykNCgkJPHVsPg0KCQkJPGxpPlZhbHVlKHMpIG9mIHRoZSBpdGVtcyAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxlbT48c3Ryb25nPk5vdGljZTo8L3N0cm9uZz4gaWYgdGhlcmUgYXJlIGxlc3MgdmFsdWVzIHRoYW4gaXRlbXMgdGhlIGl0ZW0gbGFiZWxzIHdpbGwgYmUgdXNlZCBhcyB2YWx1ZXMgKGFuZCB2aXNlIHZlcnNhKS48L2VtPjxiciAvPjxiciAvPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZGVmYXVsdDwvdHQ+IChzdHJpbmcpDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlQcmVzZWxlY3RlZCB2YWx1ZShzKSAoc2VwYXJhdGVkIGJ5IGEgZGVsaW1pdGVyIC0gZGVmYXVsdCBpcyB8IChwaXBlKSk8YnIgLz4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kZWxpbWl0ZXI8L3R0PiAoc3RyaW5nKQ0KCQk8dWw+DQoJCQk8bGk+QSBzaWduIG9yIHN0cmluZyB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZXZpZGUgdGhlIGl0ZW1zL3ZhbHVlcyAoZGVmYXVsdCBpcyB8IChwaXBlKSk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zaXplPC90dD4gKGludGVnZXIpDQoJCTx1bD4NCgkJCTxsaT5IZWlnaHQgb2YgY29udGVudCBibG9jayBpbiBiYWNrIGVuZCBpZiA8Y29kZT5ibG9ja190eXBlPSZxdW90O3NlbGVjdF9tdWx0aXBsZSZxdW90OzwvY29kZT4gaXMgc2V0LiA8ZW0+KERlZmF1bHQgaXMgbnVtYmVyIG9mIGl0ZW1zKTwvZW0+PC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+PGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c29ydGFibGVfaXRlbXM8L3R0PiAodHJ1ZS9mYWxzZSkgLSBzZWxlY3RfbXVsdGlwbGUgb25seQ0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJSWYgc2V0IHRvIHRydWUgdGhlIGl0ZW1zIHdvbiYjMDM5O3QgYmUgc2hvd24gYXMgYSBtdWx0aXBsZSBzZWxlY3QgaW5wdXQgd2l0aCBvcHRpb25zIGJ1dCBhcyBhIGxpc3Qgb2YgY2hlY2tib3hlcyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuPGJyIC8+RWFjaCByb3cgY29udGFpbnMgdGhlIGl0ZW0gbGFiZWwgYW5kIGEgY2hlY2tib3ggd2l0aCB0aGUgaXRlbSB2YWx1ZS48YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IG9ubHkgdGhlIG9yZGVyIG9mIHRoZSA8c3Ryb25nPnNlbGVjdGVkPC9zdHJvbmc+IGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBhbHdheXMgZGlzcGxheWVkIG9uIHRoZSB0b3Agb2YgdGhlIGxpc3Qgd2hlbiByZWxvYWRpbmcgdGhlIGVkaXQgcGFnZS48YnIgLz4NCgkJCQlVbnNlbGVjdGVkIGl0ZW1zIHdpbGwgYXBwZW5kZWQgaW4gdGhhdCBvcmRlciB0aGV5IGFyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZTwvZW0+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDtkYXRlJnF1b3Q7Ojwvc3Ryb25nPjwvcD4NCjx1bD4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfaG91cnM8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXN0ZXBzIG9mIGhvdXJzIGluIHRoZSBjbG9jayBkcm9wZG93bi4gKGRlZmF1bHQgaXMgMSkNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5zdGFydF9ob3VyPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgc3RhcnQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+ZW5kX2hvdXI8L3R0PiAoaW50KSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXRoZSBlbmQgaG91ciBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgMTIgb3IgMjMpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvdzI0aDwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBBTS9QTSBpcyB1c2VkLiAoZGVmYXVsdCBpcyB0cnVlKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0ZXBfbWludXRlczwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJc3RlcHMgb2YgbWludXRlcyBpbiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDEwKQ0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PnN0YXJ0X21pbnV0ZTwvdHQ+IChpbnQpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJdGhlIHN0YXJ0IG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24uIChkZWZhdWx0IGlzIDApDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5lbmRfbWludXRlPC90dD4gKGludCkgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQl0aGUgZW5kIG1pbnV0ZSBvZiB0aGUgY2xvY2sgZHJvcGRvd24gKGRlZmF1bHQgaXMgNTkpDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KCTxsaT4NCgkJPGVtPihvcHRpb25hbCk8L2VtPiA8dHQ+c2hvd19jbG9jazwvdHQ+ICh0cnVlL2ZhbHNlKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCXNldCB0byBmYWxzZSBpZiBubyB0aW1lIGRyb3Bkb3duIHNob3VsZCBiZSBkaXNwbGF5ZWQgKGRlZmF1bHQgaXMgdHJ1ZSk8YnIgLz4NCgkJCQk8ZW0+PHN0cm9uZz5Ob3RpY2U6PC9zdHJvbmc+IElmIHNldCB0byBmYWxzZSAwMDowMCBvJiMwMzk7Y2xvY2sgd2lsbCBiZSB1c2VkPC9lbT4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5kYXRlX2Zvcm1hdDwvdHQ+IChzdHJpbmcpIA0KCQk8dWw+DQoJCQk8bGk+DQoJCQkJVGhlIHN0cmZ0aW1lIGRhdGUgZm9ybWF0IHRvIHNob3cgaW4gZnJvbnRlbmQuDQoJCQk8L2xpPg0KCQk8L3VsPg0KCQk8YnIgLz4NCgk8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+UGFyYW1zIG9mIGJsb2NrdHlwZSAmcXVvdDttdWx0aV9pbnB1dCZxdW90Ozo8L3N0cm9uZz48L3A+DQo8dWw+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD5pbnB1dHM8L3R0PiAoY3N2IG9mIGlucHV0IGlkcyB5b3UgY3JlYXRlZCBpbiB0aGUgYmFja2VuZCkgDQoJCTxiciAvPjxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8ZW0+KG9wdGlvbmFsKTwvZW0+IDx0dD52YWx1ZV9kZWxpbWl0ZXI8L3R0PiAoYW55IHN0cmluZykgDQoJCTx1bD4NCgkJCTxsaT4NCgkJCQlUaGlzIGRlZmluZXMgYSBzdHJpbmcgdGhhdCBkZXZpZGVzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cyBvZiBvbmUgbXVsdGlfaW5wdXQgd2hlbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLjxiciAvPg0KCQkJCURlZmF1bHQgaXMgJnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxsaW1pdGVyIC0tPiZxdW90Ow0KCQkJPC9saT4NCgkJPC91bD4NCgkJPGJyIC8+DQoJPC9saT4NCgk8bGk+DQoJCTxlbT4ob3B0aW9uYWwpPC9lbT4gPHR0PmlucHV0X2RlbGltaXRlcjwvdHQ+IChhbnkgc3RyaW5nKSANCgkJPHVsPg0KCQkJPGxpPg0KCQkJCVRoaXMgZGVmaW5lcyBhIHN0cmluZyB0aGF0IGRldmlkZXMgdGhlIG11bHRpX2lucHV0cyB5b3UgZGVmaW5lZCBmb3IgdGhpcyBjb250ZW50IGJsb2NrIHdoZW4gc3RvcmVkIGluIHRoZSBkYXRhYmFzZS48YnIgLz4NCgkJCQlEZWZhdWx0IGlzICZxdW90OzwhLS0gbXVsdGlfaW5wdXRfZGVsbGltaXRlciAtLT4mcXVvdDsNCgkJCTwvbGk+DQoJCTwvdWw+DQoJCTxiciAvPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPldoYXQgaXMgYSBtdWx0aV9pbnB1dCBmb3I/PC9zdHJvbmc+PC9wPg0KCQk8cD5BIG11bHRpX2lucHV0IGJsb2NrIGlzIGEgY29udGVudCBibG9jayB0aGF0IGNvbnNpc3RzIG9mIGRpZmZlcmVudCBpbnB1dCBmaWVsZHMuIDxiciAvPg0KCQlZb3UgY2FuIGRlZmluZSB0aGVtIGluIHRoZSBtb2R1bGUgYWRtaW5pc3RyYXRpb24gdXNpbmcgdGhlIHNhbWUgc3ludGF4IHlvdSB1c2UgaW4gYSB0ZW1wbGF0ZSB3aGVuIGRlZmluaW5nIGEgY29udGVudCBibG9jay48YnIgLz4NCgkJTXVsdGkgaW5wdXRzIGNhbiBiZSB1c2VkIGlmIHlvdSB3YW50IHRvIHN0b3JlIGRpZmZlcmVudCB2YWx1ZXMgaW4gb25lIGNvbnRlbnQgYmxvY2sgYW5kIHByb3ZpZGUgZGlmZmVyZW50IGlucHV0IHR5cGVzIGZvciBlYWNoIHZhbHVlcy48YnIgLz4NCgkJVGhpcyBjYW4gYmUgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBkcm9wZG93biB0byBzZWxlY3QgYSBtb2R1bGUgdG8gYmUgc2hvd24gaW4gZnJvbnRlbmQgYW5kIHRleHQgaW5wdXQgdG8gZGVmaW5lIHRoZSBtb2R1bGUgcGFyYW1ldGVycy48YnIgLz4NCgkJRXhhbXBsZSBmb3IgYSBtdWx0aV9pbnB1dCBpbiBwYWdlIHRlbXBsYXRlOjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSZxdW90OyBsYWJlbD0mcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDttdWx0aV9pbnB1dCZxdW90OyBpbnB1dHM9JnF1b3Q7bW9kdWxlLG1vZHVsZSxtb2R1bGUsbW9kdWxlJnF1b3Q7fQ0KCQk8L2NvZGU+DQoJCTwvcHJlPg0KCQk8cD5FeGFtcGxlIGZvciB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7OjwvcD4NCgkJPHByZT4NCgkJPGNvZGU+DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBzZWxlY3Rpb24mcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDtkcm9wZG93biZxdW90OyBpdGVtcz0mcXVvdDt8TmV3c3xHYWxsZXJ5fE1lbnUmcXVvdDt9DQoJCXtjb250ZW50IGJsb2NrPSZxdW90O21vZHVsZSBwYXJhbXMmcXVvdDsgYmxvY2tfdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IG9uZWxpbmU9dHJ1ZX0NCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBlZGl0IGEgcGFnZT88L3A+DQoJCTxwPkl0IHdpbGwgc2hvdyB5b3UgYSBmaWVsZHNldCB3aXRoIGxlZ2VuZCAmcXVvdDtQYWdlIG1vZHVsZXMmcXVvdDsuIDxiciAvPg0KCQlJbnNpZGUgdGhpcyBmaWVsZHNldCBpdCBzaG93cyB0aGUgbXVsdGlfaW5wdXQgbmFtZWQgJnF1b3Q7bW9kdWxlJnF1b3Q7IGZvdXIgdGltZXMuPGJyIC8+DQoJCVRoYXQgbWVhbnMgeW91IHNlZSBmb3VyIGxpbmVzIHdpdGggdHdvIGlucHV0IGZpZWxkcy4gQSBkcm9wZG93biBhbmQgYSB0ZXh0IGlucHV0LjwvcD4NCgkJPHA+V2hhdCBoYXBwZW5zIGlmIHlvdSBzYXZlIGEgcGFnZT88L3A+DQoJCTxwPlRoZSBtb2R1bGUgc3RvcmVzIHRoZSB2YWx1ZXMgYXMgb25lIHNpbmdsZSBjb250ZW50IHByb3BlcnR5IChha2EgY29udGVudGJsb2NrKSBhbmQgc2VwYXJhdGVzIHRoZSBpbnB1dHMgYnkgYSBnaXZlbiBkZWxpbWl0ZXIuPGJyIC8+DQoJCUxldCYjMDM5O3MgYXNzdW1lIHlvdSBzZWxlY3QgdGhlIE5ld3MgbW9kdWxlIGZvdXIgdGltZXMgd2l0aCBkaWZmZXJlbnQgbW9kdWxlIHBhcmFtcyBsaWtlIGNhdGVnb3J5PSZxdW90OzEmcXVvdDssIGNhdGVnb3J5PSZxdW90OzImcXVvdDssIGNhdGVnb3J5PSZxdW90OzMmcXVvdDssIGNhdGVnb3J5PSZxdW90OzQmcXVvdDsuPGJyIC8+DQoJCUluIHRoZSBkYXRhYmFzZSBpdCBzdG9yZXMgdGhpcyBzdHJpbmc6PC9wPg0KCQk8cHJlPg0KCQk8Y29kZT4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzEmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzImcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzMmcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT48YnIgLz4NCgkJTmV3czwhLS0gbXVsdGlfaW5wdXRfdmFsdWVfZGVsaW1pdGVyIC0tPmNhdGVnb3J5PSZxdW90OzQmcXVvdDsNCgkJPC9jb2RlPg0KCQk8L3ByZT4NCgkJPHA+SW4geW91ciBwYWdlIHRlbXBsYXRlIHlvdSBjYW4gZXhwbG9kZSB0aGUgY29udGVudCBieSB0aGUgZGVsaW1pdGVycyBhbmQgY2FsbCB0aGUgc2VsZWN0ZWQgbW9kdWxlcy48L3A+DQoJCTxwPkZ1bGwgRXhhbXBsZTo8L3A+DQoJCTxwcmU+DQoJCTxjb2RlPg0KCQl7KiBkZWZpbmUgdGhlIGNvbnRlbnQgYmxvY2sgKn0NCgkJe2NvbnRlbnQgYmxvY2s9JnF1b3Q7bXlfbW9kdWxlcyZxdW90OyBibG9ja190eXBlPSZxdW90O211bHRpX2lucHV0JnF1b3Q7IGlucHV0cz0mcXVvdDtNb2R1bGUsTW9kdWxlLE1vZHVsZSxNb2R1bGUmcXVvdDsgYXNzaWduPSZxdW90O21vZHVsZXMmcXVvdDt9DQoJCQ0KCQl7KiBleHBsb2RlIGJsb2NrIGNvbnRlbnQgaW4gYW4gYXJyYXkgdG8gZ2V0IHRoZSBpbnB1dCBncm91cHMgKn0NCgkJe2Fzc2lnbiB2YXI9bW9kdWxlcyB2YWx1ZT0mcXVvdDs8IS0tIG11bHRpX2lucHV0X2RlbGltaXRlciAtLT4mcXVvdDt8ZXhwbG9kZTokbW9kdWxlc30NCgkJDQoJCXsqIGxvb3AgdGhyb3VnaCB0aGUgc2VsZWN0ZWQgbW9kdWxlcyAqfQ0KCQl7Zm9yZWFjaCBmcm9tPSRtb2R1bGVzIGl0ZW09JnF1b3Q7bW9kdWxlJnF1b3Q7fQ0KCQkJe2lmICRtb2R1bGUgIT0gJiMwMzk7JiMwMzk7fQ0KCQkJDQoJCQkJeyogZXhwbG9kZSB0aGUgaW5wdXQgdmFsdWVzIGluIG1vZHVsbmFtZSBhbmQgbW9kdWxlIHBhcmFtZXRlcnMgKn0NCgkJCQl7YXNzaWduIHZhcj1tb2R1bGVfaXRlbXMgdmFsdWU9JnF1b3Q7PCEtLSBtdWx0aV9pbnB1dF92YWx1ZV9kZWxpbWl0ZXIgLS0+JnF1b3Q7fGV4cGxvZGU6JG1vZHVsZX0NCgkJCQkNCgkJCQl7aWYkbW9kdWxlX2l0ZW1zWzBdICE9ICYjMDM5OyYjMDM5O30NCgkJCQkNCgkJCQkJeyogY2FsbCB0aGUgbW9kdWxlICp9DQoJCQkJCXtpZiBpc3NldCgkbW9kdWxlX2l0ZW1zWzFdKX0NCgkJCQkJCXtldmFsIHZhcj0kc21hcnR5LmxkZWxpbXxjYXQ6JiMwMzk7Y21zX21vZHVsZSBtb2R1bGU9JnF1b3Q7JiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzBdfGNhdDomIzAzOTsmcXVvdDsgJiMwMzk7fGNhdDokbW9kdWxlX2l0ZW1zWzFdfGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJe2Vsc2V9DQoJCQkJCQl7ZXZhbCB2YXI9JHNtYXJ0eS5sZGVsaW18Y2F0OiYjMDM5O2Ntc19tb2R1bGUgbW9kdWxlPSZxdW90OyYjMDM5O3xjYXQ6JG1vZHVsZV9pdGVtc1swXXxjYXQ6JiMwMzk7JnF1b3Q7JiMwMzk7fGNhdDokc21hcnR5LnJkZWxpbX0NCgkJCQkJey9pZn0NCgkJCQkJDQoJCQkJey9pZn0NCgkJCQkNCgkJCXsvaWZ9DQoJCQ0KCQl7L2ZvcmVhY2h9DQoJCTwvY29kZT4NCgkJPC9wcmU+DQoJPC9saT4NCjwvdWw+DQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCgk8bGk+VGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIvIj5odHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLzwvYT48L2xpPg0KCTxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjwvdWw+DQo8YnIgLz4NCjxwPkZlZWwgZnJlZSByZXBvcnQgYW55IGtpbmQgb2YgZmVlZGJhY2suPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD4NCglBcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy48YnIgLz4NCglUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCw8YnIgLz4NCglidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZjxiciAvPg0KCU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS48YnIgLz4NCglTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPGJyIC8+DQoJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8YnIgLz4NCglhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZTxiciAvPg0KCUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPGJyIC8+DQoJT3IgcmVhZCBpdCBvbmxpbmU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMPC9hPjxiciAvPg0KCVBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KPC9wPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBHZW9yZyBCdXNjaCAoTmFOKS4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4NCjxiciAvPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8YnIgLz4NCjxwPjxzdHJvbmc+TW9kdWxlIHJlbGVhc2VzPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT48cD48c3Ryb25nPjAuNy4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgYnVnIGl0ZW0gIzU2NTE8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb248L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVxdWlyZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNyAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIGNvbXBhdGliaWxpdHkgYnVnZml4ZXMgZm9yIENNU21zIDEuOSsgKG5lZWRzIENNU21zIDEuOSBtaW5pbXVtIG5vdyk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBzdXBwb3J0IG9mIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIG5vX2NvbGxhcHNlPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYuMiAoTm92IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeCAoc2hvd2VkIHRhYnMgb2YgcHJldmlvdXMgdGVtcGxhdGUgd2hlbiB0ZW1wbGF0ZSB3YXMgY2hhbmdlZCk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNi4xIChOb3YgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gc2V2ZXJhbCBidWdmaXhlczwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBjb21wYXRpYmlsaXR5IGJ1Z2ZpeGVzIGZvciBDTVNtcyAxLjk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBibG9ja190eXBlIG11bHRpX2lucHV0PC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjYgKE9jdCAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBzZXZlcmFsIGJ1Z2ZpeGVzPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gYmxvY2tfZ3JvdXA8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIFJlbW92ZWQgZmlsZSBwaWNrZXIgKGFuZCBhc3NvY2lhdGVkIGJsb2NrX3R5cGVzIGltYWdlL2ZpbGUpIC0gdXNlIEdCRmlsZVBpY2tlciBpbnN0ZWFkLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC41IChTZXB0IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkJ1Z2ZpeGVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5maXhlZCBidWcgaXRlbSAjNTI5MiAobWVtb3J5IGlzc3VlKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUyNTQgKGRpc2FibGUgd3lzaXd5ZyBub3Qgd29ya2luZyk8L3A+PC9saT4NCgkJCQkJPGxpPjxwPmZpeGVkIGJ1ZyBpdGVtICM1MzEwICh1cmxvbmx5IG5vdCB3b3JraW5nKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+Zml4ZWQgYnVnIGl0ZW0gIzUzMTEgKGltYWdlIHBhdGhzIG5vdCBzdG9yZWQgJiMwMzk7Y29ycmVjdGx5JiMwMzk7KTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPkZlYXR1cmVzOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNjEgKEFkZCBzb3J0IHRvIGltYWdlIHR5cGUgLSBub3RpY2UgdGhlIGNoYW5nZSBvZiBwYXJhbSBmaWx0ZXIpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBwYXJhbXMgZXhjbHVkZV9wcmVmaXgsIGluY2x1ZGVfcHJlZml4LCBleGNsdWRlX3N1Zml4LCBpbmNsdWRlX3N1Zml4PC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNTMgKFRleHQgaW5wdXQgdG8gZGVmaW5lIGFkZCBwYXJhbXMgdG8gcmVkaXJlY3QgZnVuY3Rpb24pPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDAgKERlZmF1bHQgdmFsdWVzIG9mIEFkdmFuY2VkQ29udGVudCBwYWdlIG9wdGlvbnMpPC9wPjwvbGk+DQoJCQkJCTxsaT48cD5hZGRlZCBmZWF0dXJlIHJlcXVlc3QgIzUyNDEgKHB1dCBGZXVBY2Nlc3MgaW4gQmxvY2t0YWIpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+TWlzYzo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBBZHZhbmNlZENvbnRlbnQgb3B0aW9ucyBhcmUgc2hvd24gaW4gc2VwYXJhdGUgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIEFkZGVkIG5ldyBwZXJtaXNzaW9uIHRvIG1hbmFnZSB0aGUgQWR2YW5jZWRDb250ZW50IG9wdGlvbnMgdGFiPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgcGFyYW0gZmlsdGVyICh1c2UgbmV3IHBhcmFtcyBpbnN0ZWFkKTwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBwYXRoIHRvIGZpbGVzIGFyZSBzdG9yZWQgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIHBhcmFtIGRpciBvZiBibG9jayB0eXBlIGZpbGUvaW1hZ2UgbmVlZHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZHMgZGlyIG9ubHkgKHRoZXJlIGlzIG5vIGltYWdlIHVwbG9hZHMgZGlyIHVzZWQgYW55bW9yZSk8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuNC4xIChBdWd1c3QgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxNTE6IGZpeGVkIHN0eWxlc2hlZXQgaXNzdWUgd2l0aCBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyBvZiBjb250ZW50IGJsb2NrcyBpbiBJRS9TYWZhcmkuPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MTYyOiBQSFAgd2FybmluZ3MgaWYgYmFja2VuZCB1c2VycyB3aXRob3V0IHBlcm1pc3Npb24gJnF1b3Q7TWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJnF1b3Q7IG9wZW4gYW4gYWR2YW5jZWQgY29udGVudCBwYWdlIGFuZCBtdWx0aXBsZSBjb250ZW50IGJsb2NrcyBvZiBzYW1lIG5hbWUgd2VyZSB1c2VkIGluIHRlbXBsYXRlLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZXh0cmEgZmllbGRzIGNvdWxkIG5vdCBiZSB1cGRhdGVkLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBmaXhlZCBidWcgd2hlcmUgZmV1IGFjY2VzcyBkaWQgbm90IHdvcmsuPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+RmVhdHVyZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7ZGVsZXRlJnF1b3Q7IHRvIGxldCB1c2VycyBkZWxldGUgZmlsZXMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtjcmVhdGVfZGlycyZxdW90OyB0byBsZXQgdXNlcnMgY3JlYXRlX2RpcnMgZXZlbiBpZiBubyBwZXJtaXNzaW9uICZxdW90O01vZGlmeSBGaWxlcyZxdW90OzwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBuZXcgYmxvY2t0eXBlICZxdW90O25vdGUmcXVvdDsgdG8gY3JlYXRlIHNvbWUgc2luZ2xlIG5vdGVzIGZvciB5b3VyIGVkaXRvcnM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5NaXNjOjwvcD4NCgkJCQk8dWw+DQoJCQkJCTxsaT48cD4tIHJlbW92ZWQgZGVwZW5kZW5jeSBvZiBGaWxlTWFuYWdlcjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBibG9jayBvZiB0eXBlIGZpbGUgb3IgaW1hZ2Ugc3RvcmVzIHJlbGF0aXZlIHVybCBub3c8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYmxvY2sgdHlwZSBpbWFnZSBzaG93cyB0aHVtYm5haWwgaW4gYmFja2VuZCBwcmV2aWV3IGluc3RlYWQgb2YgZnVsbCBpbWFnZTwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+MC40IChKdWx5IDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPkltcG9ydGFudCBub3RpY2U6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gY2hhbmdlZCBwYXJhbSAmcXVvdDt0eXBlJnF1b3Q7IHRvICZxdW90O2Jsb2NrX3R5cGUmcXVvdDsgc2luY2UgaXQgaW50ZXJmZXJlcyB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gIzUxMDE6IHBhZ2VfdGFiICZxdW90O29wdGlvbnMmcXVvdDsgd2FzIHNob3duIHRvIHVzZXJzIHdpdGggbm8gcGVybWlzc2lvbiB0byBlZGl0IHBhZ2Ugb3B0aW9ucyBpZiBhIGNvbnRlbnQgYmxvY2sgd2FzIGFzc2lnbmVkIHRvIHRoYXQgdGFiLjwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSAjNTA5NzogbGluayB0byBtaXNzaW5nIGNzcyByZW1vdmVkPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbWUtdHlwZSBpc3N1ZSAoYWRkZWQgcHJlZmVyZW5jZSB0byB0b2dnbGUgbWltZS10eXBlIHVzYWdlIG9uL29mZik8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gZml4ZWQgcGF0aCBpc3N1ZSB3aGVyZSB0aHVtYm5haWxzIHdlcmUgbm90IHNob3duPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIGNvbXBhdGliaWxpdHkgd2l0aCBDTVNtcyAxLjg8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gb3RoZXIgbWlub3IgYnVnZml4ZXM8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBNTEUgc3VwcG9ydDwvcD48L2xpPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSAmcXVvdDtzaG93X2Nsb2NrJnF1b3Q7IHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0aW1lIGRyb3Bkb3duIG9mIGJsb2NrdHlwZXMgJnF1b3Q7ZGF0ZSZxdW90OyBpbiBiYWNrZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IHRvIGZvcm1hdCB0aW1lc3RhbXAgb2YgYmxvY2t0eXBlcyAmcXVvdDtkYXRlJnF1b3Q7IGluIGZyb250ZW5kPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIHBhcmFtICZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkZGVkIGJ1bGsgZnVuY3Rpb24gdG8gc2V0IGFsbCBwYWdlcyB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X21vZHVsZX0gdGFnPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuNCAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD5CdWdmaXhlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSAjNTA0NTogV2hlbiBzd2l0Y2hpbmcgZnJvbSBDb250ZW50IC0+IEFkdmFuY2VkIENvbnRlbnQgbG90cyBvZiBQSFAgZXJyb3JzPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tICM1MDU2OiBwYWdlX3RhYnMgbm90IHdvcmtpbmcgZm9yIHVzZXJzIHdpdGhvdXQgcGVybWlzc2lvbiAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDs8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gIzUwNzM6IGluY29ycmVjdCBkaXNwbGF5IG9mIGZpbGVzIHdoZW4gb3BlbmluZyBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGZpeGVkIG1pbm9yIGJ1ZyB3aGVyZSB0aGUgb3B0aW9uICZxdW90O2FsbG93X25vbmUmcXVvdDsgb2YgY29udGVudCBibG9ja3Mgb2YgdHlwZSBpbWFnZS9maWxlIHdhcyBub3Qgc2hvd24gd2hlbiB0ZW1wbGF0ZSBoYXMgYmVlbiBlZGl0ZWQ8L3A+PC9saT4NCgkJCQk8L3VsPg0KCQkJPC9saT4NCgkJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQkJPHVsPg0KCQkJCQk8bGk+PHA+LSBhZGRlZCBmaWxlbWFuYWdlbWVudCBhbmQgdXBsb2FkIGZ1bmN0aW9ucyB0byBjb250ZW50IGJsb2NrcyBvZiB0eXBlIGltYWdlL2ZpbGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgYnJlYWRjdW1icyB0byBmaWxlcGlja2VyPC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGFkbWlucyBtYXkgYnJvd3NlIHRoZSBlbnRpcmUgZGlyIHRyZWUgaW4gZmlsZXBpY2tlciBmaWxlIGJyb3dzZXIgcmVnYXJkbGVzcyBvZiB0ZW1wbGF0ZSBwYXJhbXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgbWltZSB0eXBlIGNoZWNraW5nIHRvIGdldCBmaWxlIHR5cGU8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gYWRkZWQgcmF3dXJsZW5jb2RlIGluIHNyYyBhdHRyaWJzIHRvIGRpc3BsYXkgaW1hZ2VzIHdpdGggd2VpcmQgZmlsZW5hbWVzLjwvcD48L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2xpPg0KCQkJPGxpPjxwPm1pc2NlbGxhbmVvdXM6PC9wPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCBPT1Agc3R1ZmYgKHByaXZhdGUvcHVibGljL3Byb3RlY3RlZCkgdG8gZ2FpbiBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBQSFA0PC9wPjwvbGk+DQoJCQkJCTxsaT48cD4tIGNoYW5nZWQgYWpheCBmdW5jdGlvbnMgdG8gcmV0dXJuIHhtbCB2YWx1ZXM8L3A+PC9saT4NCgkJCQkJPGxpPjxwPi0gcmVtb3ZlZCB1c2FnZSBvZiBJbWFnZU1hbmFnZXIgb25jZSBhbmQgZm9yIGFsbC4gKGNhdXNlZCBvbmx5IHRyb3VibGUpPC9wPjwvbGk+DQoJCQkJPC91bD4NCgkJCTwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+PHA+PHN0cm9uZz4wLjMuMyAoSnVuZSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJPHVsPg0KCQk8bGk+PHA+QnVnZml4ZXM6PC9wPg0KCQkJPHVsPg0KCQkJCTxsaT48cD4tIGFsaWFzIHdhcyBub3QgYWx3YXlzIGNvbnZlcnRlZCBwcm9wZXJseTwvcD48L2xpPg0KCQkJCTxsaT48cD4tIHVuc3VibWl0dGVkIGNvbnRlbnQgZ290IGxvc3QgaWYgc3dpdGNoaW5nIGZyb20gQ29udGVudCB0byBBZHZhbmNlZENvbnRlbnQ8L3A+PC9saT4NCgkJCTwvdWw+DQoJCTwvbGk+DQoJCTxsaT48cD5GZWF0dXJlczo8L3A+DQoJCQk8dWw+DQoJCQkJPGxpPjxwPi0gYWRkZWQgc3RhcnQvZW5kIGRhdGU8L3A+PC9saT4NCgkJCQk8bGk+PHA+LSByZW1vdmVkIHRpbWVwaWNrZXI7IHJlcGxhY2VkIGJ5IGEgc2ltcGxlIGRyb3Bkb3duPC9wPjwvbGk+DQoJCQkJPGxpPjxwPi0gY29tcGF0aWJpbGl0eSB3aXRoIHtjb250ZW50X2ltYWdlfTwvcD48L2xpPg0KCQkJPC91bD4NCgkJPC9saT4NCgk8L3VsPg0KCTxsaT48cD48c3Ryb25nPjAuMy4yIChKdW5lIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIHdoZXJlIGNoYW5naW5nIGJhY2sgdG8gZGVmYXVsdCBjb250ZW50IHR5cGUgb3IgY2hhbmdpbmcgdGVtcGxhdGUgY2F1c2VkIGZhdGFsIGVycm9yczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYSBidWcgd2l0aCBzbWFydHkgcHJvY2Vzc2luZyB3aGVuIHNhdmluZyBhIHBhZ2U8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcHJldmlldyB0YWI8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlLWFkZGVkIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gdG8gdG9nZ2xlIGNvbnRlbnQgYmxvY2tzIGluIGJhY2tlbmQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtcyBlZGl0b3JfZ3JvdXBzL2VkaXRvcl91c2VycyB0byBzcGVjaWZ5IGNlcnRhaW4gdXNlcnMvZ3JvdXBzIHRoYXQgYXJlIGFsbG93ZWQgdG8gZWRpdCBjZXJ0YWluIGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYXJhbXMgc2VsZWN0ZWQvY2hlY2tlZDsgdXNlIHBhcmFtIGRlZmF1bHQgaW5zdGVhZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYmxvY2sgaWRzIHdpbGwgYmUgY29udmVydGVkIGZyb20gYmxvY2sgbmFtZSB1c2luZyBjb3JlIGZ1bmN0aW9uIG11bmdlX3N0cmluZ190b191cmwgKHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJzLCB3aGl0ZXNwYWNlcywgdW1sYXV0cyBldGMuKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gZml4ZWQgYnVnIG9mIGJsb2NrdHlwZSBkcm9wZG93bi9zZWxlY3RfbXVsdGlwbGUgd2hlcmUgZmlyc3QgaXRlbSBoYWQgYW4gZW1wdHkgbGFiZWwgaWYgb25seSB0aGUgcGFyYW0gJnF1b3Q7dmFsdWVzJnF1b3Q7IGlzIHVzZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNvbWUgdGVtcGxhdGUgdmFycyBvZiB0aGUgZnJvbnRlbmQgdG8gYmUgYWxzbyBhY2Nlc3NpYmxlIGluIGJhY2tlbmQgKGUuZy46ICRwYWdlX2FsaWFzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7YWxsb3dfbm9uZSZxdW90OyB0byBhbGwgY29udGVudCBibG9jayB0eXBlcyB0byBzcGVjaWZ5IGlmIHRoZSBwcmVkZWZpbmVkIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIG5vIHZhbHVlIGlzIGVudGVyZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBlbXB0eSB2YWx1ZXMgd2VyZSBuZXZlciBiZSBzdG9yZWQ8L3A+PC9saT4NCgkJCTxsaT48cD4tIGZpeGVkIGJ1ZyB3aGVyZSBkZWZhdWx0IHZhbHVlIGluIGZyb250ZW5kIHdhcyBpZ25vcmVkIGlmIHRoZSAmcXVvdDthbGxvd19ub25lJnF1b3Q7IHBhcmFtIHdhcyBjaGFuZ2VkIGFmdGVyIGFuIGVtcHR5IHZhbHVlIGhhcyBiZWVuIHN0b3JlZDwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gJnF1b3Q7c29ydGFibGVfaXRlbXMmcXVvdDsgdG8gY3JlYXRlIGEgc29ydGFibGUgbXVsdGlwbGUgc2VsZWN0IGxpc3QgKHNlbGVjdCBsaXN0IHdpbGwgcmVzdWx0IGluIGEgdGFibGUgd2l0aCBjaGVja2JveGVzOyBvbmx5IG9yZGVyIG9mIHNlbGVjdGVkIGl0ZW1zIHdpbGwgYmUgc3RvcmVkIGFuZCBzaG93ZWQgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdDsgdW5zZWxlY3RlZCBpdGVtcyB3aWxsIGJlIGFwcGVuZGVkIGluIHRoYXQgb3JkZXIgdGhleSBhcmUgcGxhY2VkIGluIHRoZSB0ZW1wbGF0ZSk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjAuMy4xIChNYXkgMjAxMCk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSByZW1vdmVkIHRoZSByZW9yZGVyaW5nIHN0dWZmIGZvciBub3cgKGNhdXNlcyB0cm91YmxlIGF0IHRoaXMgdGltZSk8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbW92ZWQgdGhlIGRiIHN0dWZmIChwYXJhbXMgb2YgY29udGVudCBibG9ja3MgdGhhdCBhcmUgZGVmaW5lZCBpbiB0ZW1wbGF0ZSB3b24mIzAzOTt0IGJlIHNhdmVkIGluIG1vZHVsZSBkYiB0YWJsZSBhbnltb3JlIC0+IGhvcGVmdWxseSBzcGVlZCB1cCBsb2FkaW5nIHRpbWUpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIGR1cGxpY2F0ZSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPkFkdmFuY2VkQ29udGVudCAwLjMgKE1heSAyMDEwKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIHJld3JpdGUgY29kZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYnVnZml4ZXM8L3A+PC9saT4NCgkJCTxsaT48cD4tIHJlbmFtZWQgdG8gQWR2YW5jZWRDb250ZW50PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSB1c2luZyBzZXBhcmF0ZSBtb2R1bGUgdGVtcGxhdGUgbm93IHRvIGRzcGxheSBjb250ZW50IGJsb2NrczwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVtb3ZlZCBwYWdlIGFsaWFzIGluaGVyaXRhbmNlPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8dWw+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAzIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIE1ham9yIEJ1Z2ZpeCAobWlzc2luZyAmcXVvdDs7JnF1b3Q7IGFuZCBzdHJhbmdlIGludmlzaWJsZSBpbnZhbGlkIGNoYXJzKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPjxwPjxzdHJvbmc+WENvbnRlbnQgQkVUQSAyIChBcHJpbCAyMDEwIC0gZGlzY29udGludWVkKTo8L3N0cm9uZz48L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGZpeGVkIGEgYnVnIHdpdGggcGFyYW0gJnF1b3Q7ZGVsaW1pdGVyJnF1b3Q7PC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBmaXhlZCBhIGJ1ZyB3aXRoIHNtYXJ0eSBwcm9jZXNzaW5nPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBpbmhlcml0YW5jZSBvZiAmcXVvdDtTaG93IGxvZ2luIGZvcm0mcXVvdDs8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIGluaGVyaXRhbmNlIG9mIHBhZ2UgYWxpYXMgdG8gYWRkIGl0IGFzIHByZWZmaXg7IHNvIGlmIHlvdSBoYXZlIGEgcGFnZSBjYWxsZWQgJnF1b3Q7bWVtYmVycyZxdW90OyBhbmQgc2VsZWN0IGZvciBlYWNoIGNoaWxkIHBhZ2UgJnF1b3Q7aW5oZXJpdCBwYWdlIGFsaWFzJnF1b3Q7IGFsbCBjaGlsZCBwYWdlcyBhbGlhc2VzIHdpbGwgc3RhcnQgd2l0aCAmcXVvdDttZW1iZXJzXyZxdW90OzsgbWFrZXMgZmlsdGVyaW5nIG9mIG1lbnUgZW50cmllcyB3aXRoIE1lbnVNYW5hZ2VyIHBhcmFtICZxdW90O2V4Y2x1ZGVwcmVmZml4JnF1b3Q7IG9yICZxdW90O2luY2x1ZGVwcmVmZml4JnF1b3Q7IGVhc2llci48L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzPC9wPjwvbGk+IA0KCQk8L3VsPg0KCTwvbGk+DQoJPGxpPg0KCQk8cD48c3Ryb25nPlhDb250ZW50IEJFVEEgKEFwcmlsIDIwMTApOjwvc3Ryb25nPiBpbml0aWFsIHJlbGVhc2U8L3A+DQoJCTx1bD4NCgkJCTxsaT48cD4tIGNvbnZlcnRlZCB0aGUgc2luZ2xlIGZpbGUgaW50byBhIG1vZHVsZTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gcmVuYW1lZCBwYXJhbXM7IHNlZSBtb2R1bGUgaGVscCBmb3IgbW9yZSBkZXRhaWxzPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCjwvdWw+DQo8cD48c3Ryb25nPlNpbmdsZSBmaWxlIHJlbGVhc2VzIChkaXNjb250aW51ZWQpPC9zdHJvbmc+Li4uPC9wPg0KPHVsPg0KCTxsaT4NCgkJPHA+PHN0cm9uZz4xLjQgKE1hcmNoIDIwMTApOjwvc3Ryb25nPjwvcD4NCgkJPHVsPg0KCQkJPGxpPjxwPi0gY2xlYW51cCBjb2RlIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIG1pbm9yIGJ1Z2ZpeGVzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHJlZGlyZWN0IHBhZ2UgaWYgZmV1IGlzIG5vdCBsb2dnZWQgaW4gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgaW5oZXJpdGFuY2Ugb2YgZmV1X2FjY2VzcyBhbmQgcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBmZXVfYWNjZXNzIC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHBhcmFtIGZldV9hY3Rpb24gLSAoTmFOKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gcmVkaXJlY3RfcGFnZSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBibG9ja19vbmx5IC0gKE5hTik8L3A+PC9saT4NCgkJCTxsaT48cD4tIGFkZGVkIHNtYXJ0eSBsb2dpYyBpbiBiYWNrZW5kIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzdHlsZSAtIChKZXJlbXlCYXNzKTwvcD48L2xpPg0KCQkJPGxpPjxwPi0gYWRkZWQgcGFyYW0gZmlsdGVyIChmaWx0ZXJpbmcgaW1hZ2VzIGluIGJhY2tlbmQpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBJbWdNb2RlIChkcm9wZG93biBvciBJbWFnZU1hbmFnZXIpIC0gKEplcmVteUJhc3MpPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBwYXJhbSBzbWFydHlPbiAoZm9yIHByb2Nlc3Npbmcgc21hcnR5IHZhcnMgb2YgdGhlIHRlbXBhdGUgaW4gYmFja2VuZCkgLSAoSmVyZW15QmFzcyk8L3A+PC9saT4NCgkJPC91bD4NCgk8L2xpPg0KCTxsaT48cD48c3Ryb25nPjEuMyAoQXByaWwgMjAwOSk6PC9zdHJvbmc+PC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBDTVNtcyAxLjYuKiByZWFkeSAtIChOYU4pPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBhZGRlZCBmZXUgYWNjZXNzIG9wdGlvbiAtIChOYU4pPC9wPjwvbGk+DQoJCTwvdWw+DQoJPC9saT4NCgk8bGk+DQoJCTxwPjxzdHJvbmc+MS4yIChNYXJjaCAyMDA5KTo8L3N0cm9uZz4gaW5pdGlhbCByZWxlYXNlPC9wPg0KCQk8dWw+DQoJCQk8bGk+PHA+LSBBIHNpbmdsZSBmaWxlIENvbnRlbnQyLmluYy5waHAgdGhhdCBuZWVkcyB0byBiZSBwYWNlZCBpbiBsaWIvY2xhc3Nlcy9jb250ZW50dHlwZXMuPC9wPjwvbGk+DQoJCQk8bGk+PHA+LSBsYXlvdXQvb3B0aW9ucyBvZiBiYWNrZW5kIHBhbmVsIGNhbiBiZSBjb250cm9sZWQgYnkgYWRkaXRpb25hbCBzbWFydHkgcGFyYW1zIGluIHRoZSB0ZW1wbGF0ZTsgaW50ZWdyYXRlZCB0aGUge2NvbnRlbnRfaW1hZ2V9IHRhZyAtIChtb2QgYnkgTmFOKTwvcD48L2xpPg0KCQk8L3VsPg0KCTwvbGk+DQo8L3VsPg0KPGJyIC8+JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTcwNTI1OTYzNC0xMjkwNDEyMzI3ODM1JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTI5NjAyODI5NS4xMC4xMS51dG1jc3I9Z29vZ2xlfHV0bWNjbj0ob3JnYW5pYyl8dXRtY21kPW9yZ2FuaWN8dXRtY3RyPWNtcyBtYWRlIHNpbXBsZSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjkzODc0NDcxOC4xMjkwNDEyMzI4LjEyOTYwMzAzODUuMTI5NjAzNDA4NC4xMic7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IG1ldGhvZC5pbnN0YWxsLnBocAojIFB1cnBvc2U6IGluc3RhbGxzIHRoZSBtb2R1bGUsIGNyZWF0ZXMgdGFibGVzIGFuZCBzZXQgcHJlZmVyZW5jZXMKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CgokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwokZGljdCAgICAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKIyBVc2VyIFNldHRpbmdzIGJsb2NrIGRpc3BsYXkKJGZsZHMgPSAidXNlcl9pZCBJLCBjb250ZW50X2lkIEksIHRlbXBsYXRlX2lkIEksIGl0ZW1faWQgWCwgaXRlbV9kaXNwbGF5IEkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIyBVc2VyIFNldHRpbmdzIG1lc3NhZ2UgZGlzcGxheQokZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiLAoJJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiMgVXNlciBTZXR0aW5ncyBnb3VwIGRpc3BsYXkKJGZsZHMgPSAidXNlcl9pZCBJLCBjb250ZW50X2lkIEksIHRlbXBsYXRlX2lkIEksIGl0ZW1faWQgWCwgaXRlbV9kaXNwbGF5IEkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2dyb3VwZGlzcGxheSIsCgkkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKIyBtdWx0aXBsZSBpbnB1dHMKJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCkgS0VZLCBpbnB1dF9maWVsZHMgWCI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIiwKCSRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgojIG11bHRpcGxlIGlucHV0IHRwbCBhc3NvY3MKJGZsZHMgPSAiaW5wdXRfaWQgQyg2NCksIHRwbF9uYW1lIFgiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MiLAoJJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IFByZWZlcmVuY2VzJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBbGwgQWR2YW5jZWRDb250ZW50IEJsb2NrcycsICdNYW5hZ2UgQWxsIEFkdmFuY2VkQ29udGVudCBCbG9ja3MnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0IFRlbXBsYXRlcycsICdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJyk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnLAonPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+Cntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWVsbX0KCXskZWxtLmxhYmVsfTombmJzcDt7JGVsbS5pbnB1dH0mbmJzcDsKey9mb3JlYWNofQo8L3A+CjwvZGl2PicpOwokdGhpcy0+QWRkTXVsdGlJbnB1dCgnU2FtcGxlSW5wdXQnLCcKe2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9zZWxlY3QiIGxhYmVsPSJTZWxlY3QgYSBtb2R1bGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0ifE5ld3N8TWVudSIgdmFsdWVzPSJ8TmV3c3xNZW51TWFuYWdlciJ9Cntjb250ZW50IGJsb2NrPSJtb2R1bGVfcGFyYW1zIiBsYWJlbD0iRW50ZXIgbW9kdWxlIHBhcmFtZXRlcnMgaGVyZSIgYmxvY2tfdHlwZT0idGV4dCIgb25lbGluZT10cnVlIHNpemU9IjU2In0nKTsKJHRoaXMtPkFkZFRwbEFzc29jKCdtdWx0aV9pbnB1dCcsICdTYW1wbGVJbnB1dCcsICdtdWx0aV9pbnB1dF9TYW1wbGVUZW1wbGF0ZScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9tdWx0aV9pbnB1dF90cGwnLCAnbXVsdGlfaW5wdXRfU2FtcGxlVGVtcGxhdGUnKTsKCiR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJywgZmFsc2UgKTsKJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudEVkaXRQb3N0JywgZmFsc2UgKTsKCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ0FkdmFuY2VkQ29udGVudCcpLAoJJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IG1ldGhvZC51bmluc3RhbGwucGhwCiMgUHVycG9zZTogdW5pbnN0YWxscyB0aGUgbW9kdWxlLCByZW1vdmVzIHRhYmxlcywgcHJlZmVyZW5jZXMsIHBlcm1pc3Npb25zLi4uCiMgTGljZW5zZTogR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiICAgICAgID0mICR0aGlzLT5HZXREYigpOwokZGljdCAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ibG9ja2Rpc3BsYXkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X21lc3NhZ2VkaXNwbGF5IiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0cyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRfdHBsX2Fzc29jcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKSAhPSAnJykgewoJc3dpdGNoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1bmluc3RhbGxfYWN0aW9uJykpIHsKCQljYXNlIDE6CgkJCSMgRGVsZXRlCgkJCSMgZ2V0IGlkIG9mIGFsbCBjb250ZW50IG9mIHR5cGUgQWR2YW5jZWRDb250ZW50CgkJCSRxdWVyeSAgICA9ICJTRUxFQ1QgY29udGVudF9pZCBGUk9NICIuIGNtc19kYl9wcmVmaXgoKS4iY29udGVudCBXSEVSRSB0eXBlID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50MicpKTsKCQkJJGNvbnRlbnRzID0gYXJyYXkoKTsKCQkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpIHsKCQkJCSRjb250ZW50c1tdID0gJHJvd1snY29udGVudF9pZCddOwoJCQl9CgkJCSMgZGVsZXRlIGFsbCBjb250ZW50IG9mIHR5cGUgQWR2YW5jZWRDb250ZW50CgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgV0hFUkUgdHlwZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgnY29udGVudDInKSk7CgkJCQoJCQkjIGRlbGV0ZSBjb250ZW50IHByb3BzCgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCBJTiAoIi5pbXBsb2RlKCcsJywkY29udGVudHMpLiIpIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCQoJCQlicmVhazsKCQkJCgkJY2FzZSAyOgoJCQkjIFNldCB0byBjb250ZW50CgkJCSRxdWVyeSAgICA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgU0VUIHR5cGUgPSA/IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQnLCdjb250ZW50MicpKTsKCQkJYnJlYWs7CgkJCQoJCWNhc2UgMzoKCQkJIyBnZXQgaWQgb2YgYWxsIGNvbnRlbnQgb2YgdHlwZSBBZHZhbmNlZENvbnRlbnQKCQkJJHF1ZXJ5ICAgID0gIlNFTEVDVCBjb250ZW50X2lkIEZST00gIi4gY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFdIRVJFIHR5cGUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJykpOwoJCQkkY29udGVudHMgPSBhcnJheSgpOwoJCQl3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkJJGNvbnRlbnRzW10gPSAkcm93Wydjb250ZW50X2lkJ107CgkJCX0KCQkJIyBzZXQgdG8gY29udGVudAoJCQkkcXVlcnkgICAgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50IFNFVCB0eXBlID0gPyBXSEVSRSB0eXBlID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCdjb250ZW50JywnY29udGVudDInKSk7CgkJCQoJCQkjIGRlbGV0ZSBjb250ZW50IHByb3BzCgkJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMKCQkJCVdIRVJFIGNvbnRlbnRfaWQgSU4gKCIuaW1wbG9kZSgnLCcsJGNvbnRlbnRzKS4iKSBBTkQgcHJvcF9uYW1lICE9ICdjb250ZW50X2VuJyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCQkKCQkJYnJlYWs7CgkJCQoJCWRlZmF1bHQ6IGJyZWFrOwoJCQoJfQp9CgojIHJlbW92ZSBwZXJtaXNzaW9ucwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCcpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIEFsbCBBZHZhbmNlZENvbnRlbnQgQmxvY2tzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE9wdGlvbnMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKCiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcpOwoKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CgojIHJlbW92ZSBwcmVmZXJlbmNlcwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnQWR2YW5jZWRDb250ZW50JyksCgkkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIE1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQojICAgICAgICAgIGEgY29udGVudCBtYW5hZ2VtZW50IHRvb2wgZm9yIENNUyBNYWRlIFNpbXBsZQojICAgICAgICAgIFRoZSBwcm9qZWN0cyBob21lcGFnZSBpcyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2NvbnRlbnQyLwojICAgICAgICAgIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNC0yMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyAgICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBWZXJzaW9uOiAwLjYuMwojIEZpbGUgICA6IG1ldGhvZC51cGdyYWRlLnBocAojIFB1cnBvc2U6IHBlcmZvcm1zIGEgbW9kdWxlIHVwZ3JhZGUKIyBMaWNlbnNlOiBHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CiRkYiAgICAgICAgICAgICAgPSYgJHRoaXMtPkdldERiKCk7Cgpzd2l0Y2goJGN1cnJlbnRfdmVyc2lvbikKewoJY2FzZSAnMC4zJzoKCWNhc2UgJzAuMy4xJzoKCQkKCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignQXBwcm92ZSBBZHZhbmNlZENvbnRlbnQnKTsKCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IEFkdmFuY2VkQ29udGVudCBCbG9jayBPcmRlcicpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdBZGQgQWR2YW5jZWRDb250ZW50IEJsb2NrcycpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdEZWxldGUgQWR2YW5jZWRDb250ZW50IEJsb2NrcycpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgQWR2YW5jZWRDb250ZW50IEJsb2NrIE9wdGlvbnMnKTsKCQkKCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFByZScpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnREZWxldGVQb3N0Jyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlciggJ0NvcmUnLCAnRWRpdFRlbXBsYXRlUG9zdCcpOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ0RlbGV0ZVRlbXBsYXRlUG9zdCcpOwoKCQkkZGljdCAgICAgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50IiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfZHJhZnRzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfcHJvcHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9wcm9wc19kcmFmdHMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoCgkJCWNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9hZGR0X2VkaXRvcnMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoCgkJCWNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9hZGR0X2VkaXRvcnNfZHJhZnRzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIGdldCBwcm9wbmFtZSBvZiBhbGwgY29udGVudCBvZiB0eXBlIEFkdmFuY2VkQ29udGVudAoJCSRxdWVyeSAgICA9ICJTRUxFQ1QgQ1AucHJvcF9uYW1lLCBDLmNvbnRlbnRfaWQgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuImNvbnRlbnQgQwoJCQlMRUZUIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuImNvbnRlbnRfcHJvcHMgQ1AgT04gQ1AuY29udGVudF9pZCA9IEMuY29udGVudF9pZAoJCQlXSEVSRSBDLnR5cGUgPSA/IjsKCQkJCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJ2NvbnRlbnQyJykpOwoJCSRjb250ZW50cyA9IGFycmF5KCk7CgkJCgkJd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkjIHVwZGF0ZSBwcm9wbmFtZXMgKHJlbW92aW5nIHNwZWNpYWwgY2hhcnMsIHVtbGF1dHMgYW5kIHdoaXRlc3BhY2VzKQoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJjb250ZW50X3Byb3BzIFNFVCBwcm9wX25hbWUgPSA/CgkJCQlXSEVSRSBjb250ZW50X2lkID0gPyBBTkQgcHJvcF9uYW1lID0gPyI7CgkJCQkKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkocHJlZ19yZXBsYWNlKCcvLSsvJywnXycsbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcm93Wydwcm9wX25hbWUnXSkpLCRyb3dbJ2NvbnRlbnRfaWQnXSwkcm93Wydwcm9wX25hbWUnXSkpOwoJCX0KCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuMy4yJzsKCQkKCWNhc2UgJzAuMy4yJzoKCWNhc2UgJzAuMy4zIHByZSc6CgkJJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudFBvc3RSZW5kZXInLCBmYWxzZSApOwoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC4zLjMnOwoJCQoJY2FzZSAnMC4zLjMnOgoJCSMgcmVtb3ZlIHVzZXJwcmVmcwoJCSRxdWVyeSAgICA9ICJERUxFVEUgRlJPTSAiLiBjbXNfZGJfcHJlZml4KCkuInVzZXJwcmVmcyBXSEVSRSBwcmVmZXJlbmNlIExJS0UgJ0FkdmFuY2VkQ29udGVudF8lIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQkKCQkjIGFkZCBuZXcgdGFibGUgZm9yIHVzZXIgcHJlZnMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgYmxvY2tfaWQgWCwgYmxvY2tfZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuMy40JzsKCQoJY2FzZSAnMC4zLjQnOgoJY2FzZSAnMC40JzoKCQkjIGFkZCBuZXcgdGFibGUgZm9yIHVzZXIgcHJlZnMKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgYmxvY2tfaWQgWCwgbWVzc2FnZV9kaXNwbGF5IEkiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjQuMSc7CgkKCWNhc2UgJzAuNC4xJzoKCWNhc2UgJzAuNC4yJzoKCWNhc2UgJzAuNC4zJzoKCWNhc2UgJzAuNC40JzoKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEFkdmFuY2VkQ29udGVudCBPcHRpb25zJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgT3B0aW9ucycpOwoJCSRjdXJyZW50X3ZlcnNpb24gPSAnMC41JzsKCQkKCWNhc2UgJzAuNSc6CgljYXNlICcwLjUuMSc6CgkJCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3VuaW5zdGFsbF9hY3Rpb24nKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncmVzdHJpY3RkaXJzJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3Nob3dmaWxlbWFuYWdlbWVudCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdzaG93dGh1bWJuYWlsZmlsZXMnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWxsb3dzY2FsaW5nJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3NjYWxpbmd3aWR0aCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdzY2FsaW5naGVpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJzdHlsZScpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtYWtldGh1bWJuYWlsJyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJ3aWR0aCcpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdmaWxlcGlja2VyaGVpZ2h0Jyk7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2ZpbGVwaWNrZXJ3aWR0aHVuaXQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnZmlsZXBpY2tlcmhlaWdodHVuaXQnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWxsb3d1cHNjYWxpbmcnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndXNlbWltZXR5cGUnKTsKCQkKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfYmxvY2tkaXNwbGF5IiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbWVzc2FnZWRpc3BsYXkiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgVXNlciBTZXR0aW5ncwoJCSRmbGRzID0gInVzZXJfaWQgSSwgY29udGVudF9pZCBJLCB0ZW1wbGF0ZV9pZCBJLCBpdGVtX2lkIFgsIGl0ZW1fZGlzcGxheSBJIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X2Jsb2NrZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIFVzZXIgU2V0dGluZ3MKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9tZXNzYWdlZGlzcGxheSIsCgkJCSRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkjIFVzZXIgU2V0dGluZ3MKCQkkZmxkcyA9ICJ1c2VyX2lkIEksIGNvbnRlbnRfaWQgSSwgdGVtcGxhdGVfaWQgSSwgaXRlbV9pZCBYLCBpdGVtX2Rpc3BsYXkgSSI7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX0FkdmFuY2VkQ29udGVudF9ncm91cGRpc3BsYXkiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICcwLjYnOwoJCQoJY2FzZSAnMC42JzoKCQkKCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOwoJCSRkaWN0ICAgICAgICA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkKCQkjIG11bHRpcGxlIGlucHV0cwoJCSRmbGRzID0gImlucHV0X2lkIEMoNjQpIEtFWSwgaW5wdXRfZmllbGRzIFgiOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9BZHZhbmNlZENvbnRlbnRfbXVsdGlfaW5wdXRzIiwKCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQoJCSMgbXVsdGlwbGUgaW5wdXQgdHBsIGFzc29jcwoJCSRmbGRzID0gImlucHV0X2lkIEMoNjQpLCB0cGxfbmFtZSBYIjsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfQWR2YW5jZWRDb250ZW50X211bHRpX2lucHV0X3RwbF9hc3NvY3MiLAoJCQkkZmxkcywgJHRhYm9wdGFycmF5KTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dHMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBNdWx0aUlucHV0cycpOwoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50IE11bHRpSW5wdXQgVGVtcGxhdGVzJywgJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgTXVsdGlJbnB1dCBUZW1wbGF0ZXMnKTsKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJywKJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwPgp7Zm9yZWFjaCBmcm9tPSRpbnB1dHMgaXRlbT1lbG19Cgl7JGVsbS5sYWJlbH06Jm5ic3A7eyRlbG0uaW5wdXR9Jm5ic3A7CnsvZm9yZWFjaH0KPC9wPgo8L2Rpdj4nKTsKCQkkdGhpcy0+QWRkTXVsdGlJbnB1dCgnU2FtcGxlSW5wdXQnLCcKe2NvbnRlbnQgYmxvY2s9Im1vZHVsZV9zZWxlY3QiIGxhYmVsPSJTZWxlY3QgYSBtb2R1bGUiIGJsb2NrX3R5cGU9ImRyb3Bkb3duIiBpdGVtcz0ifE5ld3N8TWVudSIgdmFsdWVzPSJ8TmV3c3xNZW51TWFuYWdlciJ9Cntjb250ZW50IGJsb2NrPSJtb2R1bGVfcGFyYW1zIiBsYWJlbD0iRW50ZXIgbW9kdWxlIHBhcmFtZXRlcnMgaGVyZSIgYmxvY2tfdHlwZT0idGV4dCIgb25lbGluZT10cnVlIHNpemU9IjU2In0nKTsKCQkkdGhpcy0+QWRkVHBsQXNzb2MoJ211bHRpX2lucHV0JywgJ1NhbXBsZUlucHV0JywgJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfbXVsdGlfaW5wdXRfdHBsJywgJ211bHRpX2lucHV0X1NhbXBsZVRlbXBsYXRlJyk7CgkKCQkkY3VycmVudF92ZXJzaW9uID0gJzAuNi4xJzsKCQkKCWNhc2UgJzAuNi4xJzoKCWNhc2UgJzAuNi4yJzoKCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50RWRpdFBvc3QnLCBmYWxzZSApOwoJCSR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoICdDb3JlJywgJ1RlbXBsYXRlUHJlQ29tcGlsZScpOwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNYW5hZ2UgQWR2YW5jZWRDb250ZW50Jyk7CgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBBZHZhbmNlZENvbnRlbnQgUHJlZmVyZW5jZXMnLCAnTWFuYWdlIEFkdmFuY2VkQ29udGVudCBQcmVmZXJlbmNlcycpOwp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addMultiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogYWRkTXVsdGlJbnB1dC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KeyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGlucHV0X2lkX3RleHR9PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pZF9pbnB1dH08YnIgLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGlucHV0X3RwbF90ZXh0fTwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdHBsX2lucHV0fTxiciAvPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskaW5wdXRfZmllbGRzX3RleHR9PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWVsZHNfaW5wdXR9PGJyIC8+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9Jm5ic3A7eyRjYW5jZWx9PGJyIC8+PC9wPgo8L2Rpdj4KeyRlbmRfZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/addMultiInputTpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogYWRkTXVsdGlJbnB1dFRwbC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KeyRzdGFydF9mb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPGRpdiBjbGFzcz0icGFnZXRleHQiPnskdHBsX25hbWVfdGV4dH08L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+eyR0cGxfbmFtZV9pbnB1dH08YnIgLz48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+eyR0ZW1wbGF0ZV90ZXh0fTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZWlucHV0Ij4KCQk8dGFibGUgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCTx0Ym9keT4KCQkJCTx0cj4KCQkJCQk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCQkJCXskdGVtcGxhdGVfaW5wdXR9CgkJCQkJPC90ZD4KCQkJCQk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcCI+CgkJCQkJCXskaGVscF90ZXh0fQoJCQkJCTwvdGQ+CgkJCQk8L3RyPgoJCQk8L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fSZuYnNwO3skY2FuY2VsfTxiciAvPjwvZGl2Pgo8L2Rpdj4KeyRlbmRfZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/contentType.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogY29udGVudFR5cGUudHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjwhLS0gU1RBUlQgUEFHRV9UQUIgeyRwYWdlX3RhYl9pZH0gLS0+Cgp7aWYgJHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfdGFic3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBibG9ja190YWJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIHN0YXJ0IGJsb2NrX3RhYnMgdGFiaGVhZGVycyBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBpZD0icGFnZV90YWJzIj4KCTxkaXYgaWQ9ImJsb2NrX3RhYnNfeyRwYWdlX3RhYl9ucn0iIGNsYXNzPSJTdWJUYWJXcmFwcGVyIj4KCQkKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfdGFicyBpdGVtPWJsb2NrX3RhYl9pZCBuYW1lPWN1cnJlbnRfdGFifQoJCQoJCTxkaXYgaWQ9ImVkaXRhYnskcGFnZV90YWJfbnJ9X3skYmxvY2tfdGFiX2lkfSIge2lmICRzbWFydHkuZm9yZWFjaC5jdXJyZW50X3RhYi5maXJzdH1jbGFzcz0iYWN0aXZlInsvaWZ9IG9uY2xpY2s9IkFkdmFuY2VkQ29udGVudC50b2dnbGVCbG9jayh0aGlzLmlkLCAnYmxvY2tfdGFic197JHBhZ2VfdGFiX25yfScpIj4KCQkJCgkJCXskYmxvY2tfdGFicy4kYmxvY2tfdGFiX2lkLnRhYl9uYW1lfQoJCQkKCQk8L2Rpdj4KCQkKCXsvZm9yZWFjaH0KCQkKCTwvZGl2Pgo8L2Rpdj4KPCEtLSBlbmQgYmxvY2tfdGFicyB0YWJoZWFkZXJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIHN0YXJ0IGJsb2NrX3RhYnMgdGFiY29udGVudCBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBpZD0icGFnZV9jb250ZW50IiBzdHlsZT0icGFkZGluZy1ib3R0b206MDttYXJnaW4tYm90dG9tOjIwcHg7Ij4KCQoJe2ZvcmVhY2ggZnJvbT0kcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja190YWJzIGl0ZW09YmxvY2tfdGFiX2lkIG5hbWU9Y3VycmVudF90YWJ9CgkKCTwhLS0gc3RhcnQgYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCTxkaXYgaWQ9ImVkaXRhYnskcGFnZV90YWJfbnJ9X3skYmxvY2tfdGFiX2lkfV9jIntpZiAkc21hcnR5LmZvcmVhY2guY3VycmVudF90YWIuZmlyc3R9IHN0eWxlPSJkaXNwbGF5OmJsb2NrIntlbHNlfSBzdHlsZT0iZGlzcGxheTpub25lInsvaWZ9PgoJCQoJCXtpZiAkYmxvY2tfdGFicy4kYmxvY2tfdGFiX2lkLmJsb2NrX2dyb3Vwc3xAY291bnQgPiAwfQoJCTwhLS0gc3RhcnQgYmxvY2tfZ3JvdXBzIGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCXtmb3JlYWNoIGZyb209JGJsb2NrX3RhYnMuJGJsb2NrX3RhYl9pZC5ibG9ja19ncm91cHMgaXRlbT1ibG9ja19ncm91cF9pZH0KCQkKCQk8IS0tIHN0YXJ0IGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPGZpZWxkc2V0IHN0eWxlPSJtYXJnaW46NXB4IDMlIDE1cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OiAzMHB4OyI+CgkJCQk8bGVnZW5kIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQmxvY2tHcm91cCI+CgkJCQkJeyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmdyb3VwX25hbWV9OgoJCQkJPC9sZWdlbmQ+CgkJCQk8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW46LTIzcHggLTIzcHggMCAwO3Bvc2l0aW9uOnJlbGF0aXZlIiBvbmNsaWNrPSJqUXVlcnkoJyN7JGJsb2NrX2dyb3VwX2lkfV93cmFwcGVyJykudG9nZ2xlKCdmYXN0Jyk7IHRoaXMuY2xhc3NOYW1lID0gKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gJ25vdGlmaWNhdGlvbnMtc2hvdycgOiAnbm90aWZpY2F0aW9ucy1oaWRlJyk7IGpRdWVyeS5nZXQoJ3skYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5wcmVmX3VybH0meyRtb2R1bGVfaWR9aXRlbV9kaXNwbGF5PScrKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gMSA6IDApKTsiIGNsYXNzPSJ7aWYgJGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZGlzcGxheSA9PSAwfW5vdGlmaWNhdGlvbnMtc2hvd3tlbHNlfW5vdGlmaWNhdGlvbnMtaGlkZXsvaWZ9IiBpZD0idG9nZ2xlLXskYmxvY2tfZ3JvdXBfaWR9Ij48L2Rpdj4KCQkJCTwhLS0gc3RhcnQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCQk8ZGl2IGlkPSJ7JGJsb2NrX2dyb3VwX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmRpc3BsYXkgPT0gMH1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkJCQoJCQkJe2ZvcmVhY2ggZnJvbT0kYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5jb250ZW50X2Jsb2NrcyBpdGVtPWNvbnRlbnRfYmxvY2tfaWR9CgkJCQkJCgkJCQkJPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQkJCTxzdHJvbmc+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9zdHJvbmc+CgkJCQkJCTwvZGl2PgoJCQkJCQkKCQkJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkJCgkJCQkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQkJCQkKCQkJCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGVzY3JpcHRpb259CgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJCQoJCQkJCQl7L2lmfQoJCQkJCQkKCQkJCQkJPGRpdiBzdHlsZT0icGFkZGluZzogNXB4IDAgMCAwOyI+CgkJCQkJCQkKCQkJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQkJCgkJCQkJCQk8cD57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmlucHV0fTwvcD4KCQkJCQkJCQoJCQkJCQl7ZWxzZX0KCQkJCQkJCQoJCQkJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5jb250ZW50fQoJCQkJCQkJCgkJCQkJCXsvaWZ9CgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPCEtLSBlbmQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQkJCgkJCQl7L2ZvcmVhY2h9CgkJCQkKCQkJCTwvZGl2PgoJCQkJPCEtLSBlbmQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkJCTwvZmllbGRzZXQ+CgkJPC9kaXY+CgkJPCEtLSBlbmQgYmxvY2tfZ3JvdXAgeyRibG9ja19ncm91cF9pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQkJey9mb3JlYWNofQoJCTwhLS0gZW5kIGJsb2NrX2dyb3VwcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCXsvaWZ9CgkJCgkJe2lmICRibG9ja190YWJzLiRibG9ja190YWJfaWQuY29udGVudF9ibG9ja3N8QGNvdW50ID4gMH0KCQk8IS0tIHN0YXJ0IGJsb2NrcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQl7Zm9yZWFjaCBmcm9tPSRibG9ja190YWJzLiRibG9ja190YWJfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQoJCTwhLS0gc3RhcnQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCQkJPGxlZ2VuZCBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0NvbnRlbnRCbG9jayI+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9sZWdlbmQ+CgkJCQkKCQkJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuYmxvY2tfdHlwZSAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfQoJCQkJCgkJCQk8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDttYXJnaW46LTIzcHggLTIzcHggMCAwO3Bvc2l0aW9uOnJlbGF0aXZlIiBvbmNsaWNrPSJqUXVlcnkoJyN7JGNvbnRlbnRfYmxvY2tfaWR9X3dyYXBwZXInKS50b2dnbGUoJ2Zhc3QnKTsgdGhpcy5jbGFzc05hbWUgPSAodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAnbm90aWZpY2F0aW9ucy1zaG93JyA6ICdub3RpZmljYXRpb25zLWhpZGUnKTsgalF1ZXJ5LmdldCgneyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5wcmVmX3VybH0meyRtb2R1bGVfaWR9aXRlbV9kaXNwbGF5PScrKHRoaXMuY2xhc3NOYW1lID09ICdub3RpZmljYXRpb25zLWhpZGUnID8gMSA6IDApKTsiIGNsYXNzPSJ7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRpc3BsYXkgPT0gMH1ub3RpZmljYXRpb25zLXNob3d7ZWxzZX1ub3RpZmljYXRpb25zLWhpZGV7L2lmfSIgaWQ9InRvZ2dsZS17JGNvbnRlbnRfYmxvY2tfaWR9Ij48L2Rpdj4KCQkJCQoJCQkJey9pZn0KCQkJCQoJCQkJPGRpdiBpZD0ieyRjb250ZW50X2Jsb2NrX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kaXNwbGF5ID09IDAgJiYgISRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ub19jb2xsYXBzZX1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkJCQoJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkKCQkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQkKCQkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCQkKCQkJCQk8L2Rpdj4KCQkJCQkKCQkJCXsvaWZ9CgkJCQkJCgkJCQkJPGRpdiBzdHlsZT0icGFkZGluZzogNXB4IDAgMCAwOyI+CgkJCQkJCQoJCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQkKCQkJCQkJPHA+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5pbnB1dH08L3A+CgkJCQkJCQoJCQkJe2Vsc2V9CgkJCQkJCQoJCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuY29udGVudH0KCQkJCQkJCgkJCQl7L2lmfQoJCQkJCQkKCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2ZpZWxkc2V0PgoJCTwvZGl2PgoJCTwhLS0gZW5kIGJsb2NrIHskY29udGVudF9ibG9ja19pZH0gaW4gYmxvY2tfdGFiIHskYmxvY2tfdGFiX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQkJey9mb3JlYWNofQoJCTwhLS0gZW5kIGJsb2NrcyBpbiBibG9ja190YWIgeyRibG9ja190YWJfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCXsvaWZ9CgkJCgk8L2Rpdj4KCTwhLS0gZW5kIGJsb2NrX3RhYiB7JGJsb2NrX3RhYl9pZH0gaW4gcGFnZV90YWIgeyRwYWdlX3RhYl9pZH0gLS0+CgkKCXsvZm9yZWFjaH0KCQo8L2Rpdj4KPCEtLSBlbmQgYmxvY2tfdGFicyB0YWJjb250ZW50IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgo8IS0tIGVuZCBibG9ja190YWJzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKey9pZn0KCntpZiAkcGFnZV90YWJzLiRwYWdlX3RhYl9pZC5ibG9ja19ncm91cHN8QGNvdW50ID4gMH0KCjwhLS0gc3RhcnQgYmxvY2tfZ3JvdXBzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuYmxvY2tfZ3JvdXBzIGl0ZW09YmxvY2tfZ3JvdXBfaWR9CgkKPCEtLSBzdGFydCBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCTxsZWdlbmQgY2xhc3M9IkFkdmFuY2VkQ29udGVudF9CbG9ja0dyb3VwIj4KCQkJeyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLmdyb3VwX25hbWV9OgoJCTwvbGVnZW5kPgoJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXInKS50b2dnbGUoJ2Zhc3QnKTsgdGhpcy5jbGFzc05hbWUgPSAodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAnbm90aWZpY2F0aW9ucy1zaG93JyA6ICdub3RpZmljYXRpb25zLWhpZGUnKTsgalF1ZXJ5LmdldCgneyRibG9ja19ncm91cHMuJGJsb2NrX2dyb3VwX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkYmxvY2tfZ3JvdXBzLiRibG9ja19ncm91cF9pZC5kaXNwbGF5ID09IDB9bm90aWZpY2F0aW9ucy1zaG93e2Vsc2V9bm90aWZpY2F0aW9ucy1oaWRley9pZn0iIGlkPSJ0b2dnbGUteyRibG9ja19ncm91cF9pZH0iPjwvZGl2PgoJCTwhLS0gc3RhcnQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCTxkaXYgaWQ9InskYmxvY2tfZ3JvdXBfaWR9X3dyYXBwZXIiIGNsYXNzPSJ7aWYgJGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuZGlzcGxheSA9PSAwfWludmlzaWJsZXtlbHNlfXZpc2libGV7L2lmfSI+CgkJCQoJCXtmb3JlYWNoIGZyb209JGJsb2NrX2dyb3Vwcy4kYmxvY2tfZ3JvdXBfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQkKCQkJPCEtLSBzdGFydCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCTxzdHJvbmc+eyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5sYWJlbH06PC9zdHJvbmc+CgkJCQk8L2Rpdj4KCQkJCQoJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJCQoJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQkKCQkJCTwvZGl2PgoJCQkJCgkJCQl7L2lmfQoJCQkJCgkJCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCQkKCQkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCQoJCQkJCTxwPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuaW5wdXR9PC9wPgoJCQkJCQoJCQl7ZWxzZX0KCQkJCQkKCQkJCXskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuY29udGVudH0KCQkJCQkKCQkJey9pZn0KCQkJCQkKCQkJCTwvZGl2PgoJCQkJCQoJCQk8L2Rpdj4KCQkJPCEtLSBlbmQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBibG9ja19ncm91cCB7JGJsb2NrX2dyb3VwX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KCQkKCQl7L2ZvcmVhY2h9CgkJCgkJPC9kaXY+CgkJPCEtLSBlbmQgYmxvY2tzIGluIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoJPC9maWVsZHNldD4KPC9kaXY+CjwhLS0gZW5kIGJsb2NrX2dyb3VwIHskYmxvY2tfZ3JvdXBfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgp7L2ZvcmVhY2h9CjwhLS0gZW5kIGJsb2NrX2dyb3VwcyBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4Key9pZn0KCgp7aWYgJHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuY29udGVudF9ibG9ja3N8QGNvdW50ID4gMH0KCjwhLS0gc3RhcnQgYmxvY2tzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXtmb3JlYWNoIGZyb209JHBhZ2VfdGFicy4kcGFnZV90YWJfaWQuY29udGVudF9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCjwhLS0gc3RhcnQgYmxvY2sgeyRjb250ZW50X2Jsb2NrX2lkfSBpbiBwYWdlX3RhYiB7JHBhZ2VfdGFiX2lkfSAtLT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxmaWVsZHNldCBzdHlsZT0ibWFyZ2luOjVweCAzJSAxNXB4IDA7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1yaWdodDogMzBweDsiPgoJCTxsZWdlbmQgY2xhc3M9IkFkdmFuY2VkQ29udGVudF9Db250ZW50QmxvY2siPnskY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQubGFiZWx9OjwvbGVnZW5kPgoJCQoJCXtpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuYmxvY2tfdHlwZSAmJiAhJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm5vX2NvbGxhcHNlfQoJCQoJCTxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O21hcmdpbjotMjNweCAtMjNweCAwIDA7cG9zaXRpb246cmVsYXRpdmUiIG9uY2xpY2s9ImpRdWVyeSgnI3skY29udGVudF9ibG9ja19pZH1fd3JhcHBlcicpLnRvZ2dsZSgnZmFzdCcpOyB0aGlzLmNsYXNzTmFtZSA9ICh0aGlzLmNsYXNzTmFtZSA9PSAnbm90aWZpY2F0aW9ucy1oaWRlJyA/ICdub3RpZmljYXRpb25zLXNob3cnIDogJ25vdGlmaWNhdGlvbnMtaGlkZScpOyBqUXVlcnkuZ2V0KCd7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLnByZWZfdXJsfSZ7JG1vZHVsZV9pZH1pdGVtX2Rpc3BsYXk9JysodGhpcy5jbGFzc05hbWUgPT0gJ25vdGlmaWNhdGlvbnMtaGlkZScgPyAxIDogMCkpOyIgY2xhc3M9IntpZiAkY29udGVudF9ibG9ja3MuJGNvbnRlbnRfYmxvY2tfaWQuZGlzcGxheSA9PSAwfW5vdGlmaWNhdGlvbnMtc2hvd3tlbHNlfW5vdGlmaWNhdGlvbnMtaGlkZXsvaWZ9IiBpZD0idG9nZ2xlLXskY29udGVudF9ibG9ja19pZH0iPjwvZGl2PgoJCQoJCXsvaWZ9CgkJCgkJPGRpdiBpZD0ieyRjb250ZW50X2Jsb2NrX2lkfV93cmFwcGVyIiBjbGFzcz0ie2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kaXNwbGF5ID09IDAgJiYgISRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ub19jb2xsYXBzZX1pbnZpc2libGV7ZWxzZX12aXNpYmxley9pZn0iPgoJCQkKCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmRlc2NyaXB0aW9ufQoJCQkKCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCQoJCQkJeyRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5kZXNjcmlwdGlvbn0KCQkJCQoJCQk8L2Rpdj4KCQkJCgkJey9pZn0KCQkJCgkJCTxkaXYgc3R5bGU9InBhZGRpbmc6IDVweCAwIDAgMDsiPgoJCQkJCgkJe2lmICRjb250ZW50X2Jsb2Nrcy4kY29udGVudF9ibG9ja19pZC5ibG9ja190eXBlICE9ICcnfQoJCQkJCgkJCQk8cD57JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmlucHV0fTwvcD4KCQkJCQoJCXtlbHNlfQoJCQkJCgkJCQl7JGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLmNvbnRlbnR9CgkJCQkKCQl7L2lmfQoJCQkJCgkJCTwvZGl2PgoJCQkKCQk8L2Rpdj4KCTwvZmllbGRzZXQ+CjwvZGl2Pgo8IS0tIGVuZCBibG9jayB7JGNvbnRlbnRfYmxvY2tfaWR9IGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKCXsvZm9yZWFjaH0KCjwhLS0gc3RhcnQgYmxvY2tzIGluIHBhZ2VfdGFiIHskcGFnZV90YWJfaWR9IC0tPgoKey9pZn0KCjwhLS0gRU5EIFBBR0VfVEFCIHskcGFnZV90YWJfaWR9IC0tPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogZGVmYXVsdGFkbWluLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgo8ZGl2IGlkPSJBZHZhbmNlZENvbnRlbnRSZXN1bHQiPgoJe2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHAgY2xhc3M9InBhZ2VtZXNzYWdlIj57JG1lc3NhZ2V9PC9wPgoJPC9kaXY+Cgl7L2lmfQo8L2Rpdj4KCntpZiAkdGFic3xAY291bnR9Cgl7JHN0YXJ0X3RhYmhlYWRlcnN9CgkJe2ZvcmVhY2ggZnJvbT0kdGFicyBpdGVtPXRhYn0KCQkJeyR0YWIudGFiaGVhZGVyfQoJCXsvZm9yZWFjaH0KCXskZW5kX3RhYmhlYWRlcnN9Cgl7JHN0YXJ0X3RhYmNvbnRlbnR9CgkJe2ZvcmVhY2ggZnJvbT0kdGFicyBpdGVtPXRhYn0KCQkJeyR0YWIudGFiY29udGVudH0KCQl7L2ZvcmVhY2h9Cgl7JGVuZF90YWJjb250ZW50fQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogaGVhZGVyLnRwbApMaWNlbnNlOiBHUEwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSp9Cgo8bGluayByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJzY3JlZW4iIHR5cGU9InRleHQvY3NzIiBocmVmPSJ7cm9vdF91cmx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2Nzcy9zdHlsZS5jc3MiIC8+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7cm9vdF91cmx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pzTG9hZGVyLmpzIj48L3NjcmlwdD4Ke2xpdGVyYWx9CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCmpzTG9hZGVyLmxvYWRTY3JpcHRzKHsKCXNjcmlwdHM6IHsKCQlqUXVlcnk6IHsKCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEubWluLmpzJywKCQkJY2FsbEJhY2s6IGZ1bmN0aW9uKHJlYWR5KSB7CgkJCQlpZihyZWFkeSkgewoJCQkJCWpRdWVyeS5ub0NvbmZsaWN0KCk7CgkJCQkJanNMb2FkZXIubG9hZFNjcmlwdHMoewoJCQkJCQlzY3JpcHRzOiB7CgkJCQkJCQl1aTogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLnVpLmNvcmUubWluLmpzJywKCQkJCQkJCQlyZWFkeTogZnVuY3Rpb24oKSB7CgkJCQkJCQkJCXJldHVybiAodHlwZW9mIGpRdWVyeSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LnVpICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJd2lkZ2V0OiB7CgkJCQkJCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEudWkud2lkZ2V0Lm1pbi5qcycsCgkJCQkJCQkJcmVhZHk6IGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm4gKHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS53aWRnZXQgIT0gJ3VuZGVmaW5lZCcpOwoJCQkJCQkJCX0KCQkJCQkJCX0sCgkJCQkJCQltb3VzZTogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLnVpLm1vdXNlLm1pbi5qcycsCgkJCQkJCQkJcmVhZHk6IGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlyZXR1cm4gKHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS51aSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LnVpLm1vdXNlICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkud2lkZ2V0ICE9ICd1bmRlZmluZWQnKTsKCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJc29ydGFibGU6IHsKCQkJCQkJCQl1cmw6ICd7L2xpdGVyYWx9e3Jvb3RfdXJsfXtsaXRlcmFsfS9tb2R1bGVzL0FkdmFuY2VkQ29udGVudC9qcy9qcS51aS5zb3J0YWJsZS5taW4uanMnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkudWkgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGpRdWVyeS51aS5tb3VzZSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5LndpZGdldCAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5KCkuc29ydGFibGUgIT0gJ3VuZGVmaW5lZCcpOwoJCQkJCQkJCX0sCgkJCQkJCQkJY2FsbEJhY2s6IGZ1bmN0aW9uKHJlYWR5KSB7CgkJCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJCWpRdWVyeSgnLnNvcnRhYmxlX3dyYXBwZXInKS5zb3J0YWJsZSh7CgkJCQkJCQkJCQkJCWl0ZW1zOiAnLnNvcnRhYmxlJywKCQkJCQkJCQkJCQkJaGFuZGxlOiAnLnNvcnRhYmxlX2hhbmRsZXInLAoJCQkJCQkJCQkJCQlheGlzOiAneScKCQkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJCQlqUXVlcnkoJy5zb3J0YWJsZV9oYW5kbGVyJykuZGlzYWJsZVNlbGVjdGlvbigpOwoJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9CgkJCQkJCQl9LAoJCQkJCQkJYWpheFN1Ym1pdDogewoJCQkJCQkJCXVybDogJ3svbGl0ZXJhbH17cm9vdF91cmx9e2xpdGVyYWx9L21vZHVsZXMvQWR2YW5jZWRDb250ZW50L2pzL2pxLmZvcm0ubWluLmpzJywKCQkJCQkJCQlyZWFkeTogZnVuY3Rpb24oKSB7CgkJCQkJCQkJCXJldHVybiAodHlwZW9mIGpRdWVyeSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgalF1ZXJ5KCkuYWpheFN1Ym1pdCAhPSAndW5kZWZpbmVkJyk7CgkJCQkJCQkJfQoJCQkJCQkJfSwKCQkJCQkJCWNhbGVuZGFyOiB7CgkJCQkJCQkJdXJsOiAney9saXRlcmFsfXtyb290X3VybH17bGl0ZXJhbH0vbW9kdWxlcy9BZHZhbmNlZENvbnRlbnQvanMvanEuY2FsZW5kYXIuanMnLAoJCQkJCQkJCXJlYWR5OiBmdW5jdGlvbigpIHsKCQkJCQkJCQkJcmV0dXJuICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIHR5cGVvZiBqUXVlcnkoKS5jYWxlbmRhciAhPSAndW5kZWZpbmVkJyk7CgkJCQkJCQkJfSwKCQkJCQkJCQljYWxsQmFjazogZnVuY3Rpb24gKHJlYWR5KSB7CgkJCQkJCQkJCWlmKHJlYWR5KSB7CgkJCQkJCQkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJCWpRdWVyeSgnI0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlckRpc3BsYXknKS5jYWxlbmRhcih7CgkJCQkJCQkJCQkJCXRyaWdnZXJFbGVtZW50OiAnI0FkdmFuY2VkQ29udGVudFN0YXJ0RGF0ZVBpY2tlclRyaWdnZXInLAoJCQkJCQkJCQkJCQlkYXRlRm9ybWF0OiAnJXgnLAoJCQkJCQkJCQkJCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQkJCQkJCQkJCQkJalF1ZXJ5KCcjQWR2YW5jZWRDb250ZW50U3RhcnREYXRlJykudmFsKGV2YWwoY2FsZW5kYXIuZGF0ZS5nZXRUaW1lKCkvMTAwMCkpOwoJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCWpRdWVyeSgnI0FkdmFuY2VkQ29udGVudEVuZERhdGVQaWNrZXJEaXNwbGF5JykuY2FsZW5kYXIoewoJCQkJCQkJCQkJCQl0cmlnZ2VyRWxlbWVudDogJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlUGlja2VyVHJpZ2dlcicsCgkJCQkJCQkJCQkJCWRhdGVGb3JtYXQ6ICcleCcsCgkJCQkJCQkJCQkJCWNsb3NlSGFuZGxlcjogZnVuY3Rpb24gKGNhbGVuZGFyKSB7CgkJCQkJCQkJCQkJCQlqUXVlcnkoJyNBZHZhbmNlZENvbnRlbnRFbmREYXRlJykudmFsKGV2YWwoY2FsZW5kYXIuZGF0ZS5nZXRUaW1lKCkvMTAwMCkpOwoJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCXsvbGl0ZXJhbH0KCQkJCQkJCQkJCQl7aWYgJGRhdGVfYmxvY2tzfEBjb3VudCA+IDB9CgkJCQkJCQkJCQkJe2ZvcmVhY2ggZnJvbT0kZGF0ZV9ibG9ja3MgaXRlbT1jb250ZW50X2Jsb2NrX2lkfQoJCQkJCQkJCQkJCQl7aWYgJGNvbnRlbnRfYmxvY2tzLiRjb250ZW50X2Jsb2NrX2lkLm1vZGUgPT0gJ2NhbGVuZGFyJ30KCQkJCQkJCQkJCQkJCXtsaXRlcmFsfQoJCQkJCQkJCQkJCQlqUXVlcnkoJyN7L2xpdGVyYWx9eyRjb250ZW50X2Jsb2NrX2lkfXtsaXRlcmFsfV9BZHZhbmNlZENvbnRlbnREYXRlUGlja2VyRGlzcGxheScpLmNhbGVuZGFyKHsKCQkJCQkJCQkJCQkJCXRyaWdnZXJFbGVtZW50OiAnI3svbGl0ZXJhbH17JGNvbnRlbnRfYmxvY2tfaWR9e2xpdGVyYWx9X0FkdmFuY2VkQ29udGVudERhdGVQaWNrZXJUcmlnZ2VyJywKCQkJCQkJCQkJCQkJCWRhdGVGb3JtYXQ6ICcleCcsCgkJCQkJCQkJCQkJCQljbG9zZUhhbmRsZXI6IGZ1bmN0aW9uIChjYWxlbmRhcikgewoJCQkJCQkJCQkJCQkJCWpRdWVyeSgnI3svbGl0ZXJhbH17JGNvbnRlbnRfYmxvY2tfaWR9e2xpdGVyYWx9X0FkdmFuY2VkQ29udGVudERhdGUnKS52YWwoZXZhbChjYWxlbmRhci5kYXRlLmdldFRpbWUoKS8xMDAwKSk7CgkJCQkJCQkJCQkJCQkJY2FsZW5kYXIuY29udGFpbmVyLmhpZGUoKTsKCQkJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCQkJCQl7L2xpdGVyYWx9CgkJCQkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQkJey9mb3JlYWNofQoJCQkJCQkJCQkJCXsvaWZ9CgkJCQkJCQkJCQkJe2xpdGVyYWx9CgkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0pOwoJCQkJfQoJCQl9CgkJfQoJfQp9KTsKQWR2YW5jZWRDb250ZW50ID0gewoJdG9nZ2xlQmxvY2s6IGZ1bmN0aW9uICh0YWJJZCwgbmF2YmFyX2lkKSB7CgkJdmFyIG5hdmJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hdmJhcl9pZCk7CgkJdmFyIHRhYnMgICA9IG5hdmJhci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7CgkJCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSArPSAxKSB7CgkJCS8vdGFic1tpXS5vbm1vdXNlZG93biA9IGZ1bmN0aW9uKCkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IHRhYnMubGVuZ3RoOyBqICs9IDEpIHsKCQkJCXRhYnNbal0uY2xhc3NOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJyc7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJzW2pdLmlkICsgIl9jIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCQkJfQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJJZCkuY2xhc3NOYW1lICAgICAgICAgICAgPSAnYWN0aXZlJzsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiSWQgKyAiX2MiKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCQkJcmV0dXJuIHRydWU7CgkJCS8vfQoJCX0KCX0sCglzdWJtaXRGb3JtOiBmdW5jdGlvbiAoYnV0dG9uLCB0YXJnZXRJZCkgewoJCXZhciBmb3JtID0galF1ZXJ5KGJ1dHRvbikucGFyZW50cygnZm9ybTpmaXJzdCcpOwoJCWpRdWVyeSgnLkFkdmFuY2VkQ29udGVudF9BamF4RmllbGRzJykucmVtb3ZlKCk7CgkJaWYoZm9ybS5sZW5ndGgpIHsKCQkJaWYodGFyZ2V0SWQgIT0gJycgJiYgIWZvcm0ucGFyZW50cygnIycrdGFyZ2V0SWQpLmxlbmd0aCkgewoJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbCgnJyk7CgkJCX0KCQkJdmFyIG9wdGlvbnMgPSB7CgkJCQlzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZVRleHQpIHsKCQkJCQlpZihyZXNwb25zZVRleHQgIT0gJycgJiYgdGFyZ2V0SWQgIT0gJycpIHsKCQkJCQkJalF1ZXJ5KCcjJyt0YXJnZXRJZCkuaHRtbChyZXNwb25zZVRleHQpOwoJCQkJCX0KCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQkJZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJBZHZhbmNlZENvbnRlbnRfQWpheEZpZWxkcyIgbmFtZT0iZGlzYWJsZV90aGVtZSIgdmFsdWU9IjEiIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9IicrYnV0dG9uLm5hbWUrJyIgdmFsdWU9IicrYnV0dG9uLnZhbHVlKyciIC8+Jyk7CgkJCWZvcm0uYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQWR2YW5jZWRDb250ZW50X0FqYXhGaWVsZHMiIG5hbWU9InsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1hamF4IiB2YWx1ZT0iMSIgLz4nKTsKCQkJZm9ybS5hamF4U3VibWl0KG9wdGlvbnMpOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9LAoJc2VsZWN0QWxsOiBmdW5jdGlvbiAob2JqKSB7CgkJaWYgKG9iai52YWx1ZSA9PSAxKSB7CgkJCWpRdWVyeSgnaW5wdXRbbmFtZV49Iicrb2JqLmlkKyctIl0nKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwoJCQlvYmoudmFsdWUgPSAwOwoJCX0KCQllbHNlIHsKCQkJalF1ZXJ5KCdpbnB1dFtuYW1lXj0iJytvYmouaWQrJy0iXScpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKCQkJb2JqLnZhbHVlID0gMTsKCQl9Cgl9LAoJaW1wb3J0UGFnZXM6IGZ1bmN0aW9uKGhyZWYpIHsKCQlqUXVlcnkuZ2V0KGhyZWYgKyAnJnsvbGl0ZXJhbH17JG1vZHVsZV9pZH17bGl0ZXJhbH1kaXNhYmxlX3RoZW1lPTEmey9saXRlcmFsfXskbW9kdWxlX2lkfXtsaXRlcmFsfWFqYXg9MScsIGZ1bmN0aW9uKGRhdGEpIHsKCQkJalF1ZXJ5KCcjQWR2YW5jZWRDb250ZW50UmVzdWx0JykuaHRtbChkYXRhKTsKCQl9KTsKCQlyZXR1cm4gZmFsc2U7Cgl9Cn07CnsvbGl0ZXJhbH0KLy9dXT4KPC9zY3JpcHQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/multiContent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCXskYWRkX2NvbnRlbnRfYmxvY2t9CjwvZGl2PgoKe2lmICRtdWx0aV9jb250ZW50X2Jsb2Nrc3xAY291bnQgPiAwfQoKPCEtLSBzdGFydCBtdWx0aSBjb250ZW50IGJsb2NrcyAtLT4KCgl7Zm9yZWFjaCBmcm9tPSRtdWx0aV9jb250ZW50X2Jsb2NrcyBpdGVtPWJsb2NrfQoJCjwhLS0gc3RhcnQgYmxvY2sgeyRibG9jay5pZH0gLS0+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGlkPSJ7JGJsb2NrLmlkfV93cmFwcGVyIntpZiAkYmxvY2suc29ydGFibGV9IGNsYXNzPSJzb3J0YWJsZSJ7L2lmfT4KCQkKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8c3Ryb25nPnskYmxvY2subGFiZWx9Ojwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodCI+eyRyZW1vdmVfY29udGVudF9ibG9ja308L3NwYW4KCQk8L2Rpdj4KCQkKCXtpZiAkYmxvY2suZGVzY3JpcHRpb259CgkJCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCgkJCXskYmxvY2suZGVzY3JpcHRpb259CgkJCQoJCTwvZGl2PgoJCQoJey9pZn0KCQkKCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA1cHggMCAwIDA7Ij4KCQkJCgkJCTxwPnskYmxvY2suaW5wdXR9PC9wPgoJCQkKCQk8L2Rpdj4KCQkKCTwvZGl2Pgo8L2Rpdj4KPCEtLSBlbmQgYmxvY2sgeyRibG9jay5pZH0gLS0+CgoJey9mb3JlYWNofQoKPCEtLSBlbmQgbXVsdGkgY29udGVudCBibG9ja3MgLS0+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJeyRhZGRfY29udGVudF9ibG9ja30KPC9kaXY+Cgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogbXVsdGlJbnB1dC50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+Cntmb3JlYWNoIGZyb209JGlucHV0cyBpdGVtPWlucHV0fQoJeyRpbnB1dC5sYWJlbH06Jm5ic3A7eyRpbnB1dC5pbnB1dH0mbmJzcDsKey9mb3JlYWNofQo8L3A+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogbXVsdGlJbnB1dFRhYi50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0fQoJPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7aWYgJG11bHRpX2lucHV0X2FycmF5fEBjb3VudH0KeyRzdGFydF9mb3JtfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjEiPgoJCTx0aGVhZD4KCQkJPHRyPgoJCQkJPHRoPnskaW5wdXRfaWRfdGV4dH08L3RoPgoJCQkJPHRoPnskdGVtcGxhdGVfdGV4dH08L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj57JHNlbGVjdGFsbH08L3RoPgoJCQk8L3RyPgoJCTwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCXtmb3JlYWNoIGZyb209JG11bHRpX2lucHV0X2FycmF5IGl0ZW09Im11bHRpX2lucHV0In0KCQkKCQkJPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSI+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5uYW1lX2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LnRlbXBsYXRlfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5lZGl0X2xpbmt9PC90ZD4KCQkJCTx0ZD57JG11bHRpX2lucHV0LmRlbGV0ZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dC5jaGVja2JveH08L3RkPgoJCQk8L3RyPgoJCQkKCQl7L2ZvcmVhY2h9CgkJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0fQoJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMHB0OyBmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CgkJeyRzdWJtaXRfYnVsa2FjdGlvbn0KCTwvZGl2PgoJPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7JGVuZF9mb3JtfQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/multiInputTplTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogbXVsdGlJbnB1dFRwbFRhYi50cGwKTGljZW5zZTogR1BMCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qfQoKe2lmIGlzc2V0KCRlcnJvcm1lc3NhZ2UpICYmICRlcnJvcm1lc3NhZ2UhPScnfQo8ZGl2IGNsYXNzPSJwYWdlZXJyb3Jjb250YWluZXIiPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8dWwgY2xhc3M9InBhZ2VlcnJvciI+PGxpPnskZXJyb3JtZXNzYWdlfTwvbGk+PC91bD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0Ke2lmIGlzc2V0KCRtZXNzYWdlKSAmJiAkbWVzc2FnZSE9Jyd9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8ZGl2IGNsYXNzPSJwYWdlbWNvbnRhaW5lciI+CgkJPHA+eyRtZXNzYWdlfTwvcD4KCTwvZGl2Pgo8L2Rpdj4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCXskYWRkX211bHRpX2lucHV0X3RwbH0KCTxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2PgoKe2lmICRtdWx0aV9pbnB1dF90cGxfYXJyYXl8QGNvdW50fQp7JHN0YXJ0X2Zvcm19Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSI+CgkJPHRoZWFkPgoJCQk8dHI+CgkJCQk8dGg+eyR0ZW1wbGF0ZV9uYW1lX3RleHR9PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPnskc2VsZWN0YWxsfTwvdGg+CgkJCTwvdHI+CgkJPC90aGVhZD4KCQk8dGJvZHk+CgkJCQoJCXtmb3JlYWNoIGZyb209JG11bHRpX2lucHV0X3RwbF9hcnJheSBpdGVtPSJtdWx0aV9pbnB1dF90cGwifQoJCQkKCQkJPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSI+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwubmFtZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuc2V0X2RlZmF1bHRfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXRfdHBsLmVkaXRfbGlua308L3RkPgoJCQkJPHRkPnskbXVsdGlfaW5wdXRfdHBsLmRlbGV0ZV9saW5rfTwvdGQ+CgkJCQk8dGQ+eyRtdWx0aV9pbnB1dF90cGwuY2hlY2tib3h9PC90ZD4KCQkJPC90cj4KCQkJCgkJey9mb3JlYWNofQoJCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgl7JGFkZF9tdWx0aV9pbnB1dF90cGx9Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAwcHQ7IGZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KCQl7JHN1Ym1pdF9idWxrYWN0aW9ufQoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCnskZW5kX2Zvcm19CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/prefsTab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk1vZHVsZSA6IEFkdmFuY2VkQ29udGVudCAoYykgMjAxMC0yMDExIGJ5IEdlb3JnIEJ1c2NoIChnZW9yZy5idXNjaEBnbXgubmV0KQogICAgICAgICBhIGNvbnRlbnQgbWFuYWdlbWVudCB0b29sIGZvciBDTVMgTWFkZSBTaW1wbGUKICAgICAgICAgVGhlIHByb2plY3RzIGhvbWVwYWdlIGlzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY29udGVudDIKICAgICAgICAgQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA0LTIwMTEgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQogICAgICAgICBUaGUgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKVmVyc2lvbjogMC42LjMKRmlsZSAgIDogcHJlZnNUYWIudHBsCkxpY2Vuc2U6IEdQTAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW1wb3J0Y29udGVudF9pbnB1dH08YnIgLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGltcG9ydGNvbnRlbnQyX2lucHV0fTxiciAvPjwvcD4KPC9kaXY+Cnskc3RhcnRmb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHNob3dfYWR2YW5jZWRjb250ZW50X29wdGlvbnNfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzaG93X2FkdmFuY2VkY29udGVudF9vcHRpb25zX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskdW5pbnN0YWxsYWN0aW9uX3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdW5pbnN0YWxsYWN0aW9uX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskYmxvY2tfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJsb2NrX2Rpc3BsYXlfc2V0dGluZ3NfaW5wdXR9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRjb2xsYXBzZV9ibG9ja19kZWZhdWx0X3RleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29sbGFwc2VfYmxvY2tfZGVmYXVsdF9pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc190ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JG1lc3NhZ2VfZGlzcGxheV9zZXR0aW5nc19pbnB1dH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGdyb3VwX2Rpc3BsYXlfc2V0dGluZ3NfdGV4dH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRncm91cF9kaXNwbGF5X3NldHRpbmdzX2lucHV0fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskY29sbGFwc2VfZ3JvdXBfZGVmYXVsdF90ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbGxhcHNlX2dyb3VwX2RlZmF1bHRfaW5wdXR9PC9wPgo8L2Rpdj4Ke2lmIGlzc2V0KCRjb250ZW50c2V0dGluZ3NfdGV4dCl9CjxmaWVsZHNldD4KCTxsZWdlbmQ+eyRjb250ZW50c2V0dGluZ3NfdGV4dH08L2xlZ2VuZD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZldWFjY2Vzc190ZXh0fTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmZXVhY2Nlc3NfaW5wdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRyZWRpcmVjdHBhZ2VfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVkaXJlY3RwYWdlX2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcmVkaXJlY3RwYXJhbXNfdGV4dH06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVkaXJlY3RwYXJhbXNfaW5wdXR9Jm5ic3A7eyRldmFsdWF0ZXNtYXJ0eV90ZXh0fTombmJzcDt7JGV2YWx1YXRlc21hcnR5X2lucHV0fTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmV1YWN0aW9uX3RleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZldWFjdGlvbl9pbnB1dH08L3A+Cgk8L2Rpdj4KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRfcHJlZnN9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
</module>
